C ++ анализатор кода / библиотека процессора - PullRequest
2 голосов
/ 03 июня 2010

существует ли библиотека, которая анализирует исходный код C ++ для создания, скажем, графа вызовов, дерева наследования классов, управления потоком, списка членов класса или чего-либо еще в виде готового к использованию графа или структуры в коде (не в изображении диаграммы) ,

, чтобы сделать его более понятным, предположим, что для генерации изображения графа вызовов будет такой процесс:

`

C++ source -> parser -> intermediate structure -> renderer -> call graph image
                                    ^
                                    |
                              [i need this]

`

Ответы [ 3 ]

3 голосов
/ 03 июня 2010

Семейство библиотек LLVM , вероятно, является лучшим выбором. Однако поддержка C ++ не была завершена в последний раз, когда я проверял.

3 голосов
/ 03 июня 2010

Это зависит от того, насколько точно вы хотите, чтобы анализ был. Если вы хотите, чтобы он был абсолютно точным (то есть не должен пропускать класс из-за какого-то слишком сложного макропрограммирования макросов или шаблонов, которое он не может обработать), тогда вам нужен надлежащий интерфейс C ++ для этого, и я не знаю любой, который является бесплатным и легко используется повторно.

Если вы готовы заплатить, то есть как минимум два варианта:

EDG используется для управления IntelliSense в VC ++ 2010, что довольно впечатляюще и, похоже, очень точно - по моему опыту, он правильно обрабатывал завершение полиморфного Boost.Lambda (неудивительно, учитывая, что он также управляет EDG). Компилятор C ++, который, очевидно, должен получить правильный ввод).

Я мало что знаю о веб-интерфейсе Semantic Design или его пользователях, но Ира Бакстер оттуда находится в StackOverflow, поэтому я предоставлю ему более подробную информацию об их продукте.

Если вы хотите бесплатно, но несовершенно, то, возможно, GCC_XML достаточно для вас.

0 голосов
/ 03 июня 2010
  1. есть внутренняя часть GCC. Это что-то вроде библиотеки.
  2. есть пакеты Eclipse CDE, которые достаточно хорошо анализируют C ++ для среды IDE, что может быть или не достаточно хорошо для вас.
...