libclang: получить коллекцию местоположений методов - PullRequest
3 голосов
/ 02 февраля 2012

Меня интересует clang для анализа кода C / C ++ и возможности поиска методов и функций.

Можно ли использовать clang для анализа файла исходного кода C ++ и получения коллекции классов иметоды и где они находятся?

1 Ответ

6 голосов
/ 03 февраля 2012

Вы можете написать плагин clang, который сделает это за вас.

Взгляните на эту статью . Он в основном описывает, как создать свой собственный плагин и использовать ASTConsumer для обхода AST. Как написано в статье, начните с существующего примера плагина PrintFunctionNames . Метод HandleTopLevelDecl(DeclGroupRef DG) вызывается для каждого объявления функции. В дополнение к ND->getNameAsString() вы можете вызвать ND->getLocation() в этом методе. Также взгляните на документацию API и эти два вопроса для получения дополнительной информации:

Как узнать местоположение имени переменной в clang :: VarDecl

Обработка функций C ++ с помощью clang API для вставки кода

...