2016-03-30 3 views
0

Я анализирую некоторые крупные проекты на С ++. Единственная функциональность, в которой я действительно нуждаюсь, - это поиск вызовов функций.Анализ кода на C++ - CSCope

Для этого я использую cscope прямо сейчас, но я обнаружил одну большую проблему - кажется, что cscope не может найти методы, например. object.function().

Итак, можно ли как-то изменить настройки cscope? Или, если невозможно провести синтаксический анализ C++ с помощью cscope, можете ли вы порекомендовать другой синтаксический анализатор, который «лучше оснащен»?


Я использую cscope как можно проще, например:

cscope -k -L3importantFunc path_to_some_file 

Я не создаю базу данных отдельно, я думаю, что это должно быть достаточно таким образом, для одного конкретного файла.


Я уже пробовал Clang, но это было не намного лучше, так как это не возможно искать функции, вложенные в условно-компиляциях блоков.

+0

https://github.com/Andersbakken/rtags –

+2

Как дикое предположение, может проблема в том, что Cscope для разбора языка C, а не C++? –

+0

Если вы запустили препроцессор над исходным кодом перед его синтаксическим анализом, у вас нет предустановленных условных блоков, о которых нужно беспокоиться. Вы хотите найти вызовы функций внутри отключенных условных блоков pp? Что делать, если условный блок обернут вокруг строки заголовка функции? Что делать, если оно обернуто вокруг частей списка аргументов? –

ответ

0

Я рекомендую загрузить проект в (бесплатные версии сообщества) Visual Studio 2013/2015. У этого есть намного лучшая навигация/просмотр источника. Это довольно быстро в создании & индексации исходного кода.

https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

+0

Это работает для кода GCC/Clang? Я так не думаю. [На каком диалекте C++ есть OP?] Также не ясно, что OP хочет * перемещать * код так, чтобы составить список. OP должен сказать нам. –

+0

gcc? пока это стандартный синтаксис C/C++, тогда он сможет разобрать все. –

+0

Никто не знает, пишет «стандартный» синтаксис C/C++. Как-то что-то специфическое для диалекта всегда где-то ползает. –

Смежные вопросы