Я пишу простой инструмент, который поможет с рефакторингом исходного кода нашего приложения. Я хотел бы проанализировать код C++ на основе библиотеки wxWidgets, которая определяет графический интерфейс и создает файл XML .ui
для использования с Qt. Мне нужно получить все вызовы функций и значения аргументов.
В настоящее время я играю с привязками Python к Clang, используя приведенный ниже пример кода, я получаю токены, их тип и местоположение, но тип курсора всегда CursorKind.INVALID_FILE
.
import sys
import clang.cindex
def find_typerefs(node):
""" Find all references to the type named 'typename'
"""
for t in node.get_tokens():
if not node.location.file != sys.argv[1]:
continue
if t.kind.value != 0 and t.kind.value != 1 and t.kind.value != 4:
print t.spelling
print t.location
print t.cursor.kind
print t.kind
print "\n"
index = clang.cindex.Index.create()
tu = index.parse(sys.argv[1])
print 'Translation unit:', tu.spelling
find_typerefs(tu.cursor)
Как правильно определить тип курсора?
Я не смог найти никакой документации, кроме нескольких сообщений в блогах, но они были устаревшими или не освещали эту тему. Я также не смог понять это из примеров, которые поставлялись с Clang.
list(f.source.name for f in tu.get_includes())
? (просто напечатайте его в конце вашего скрипта) - person forivall   schedule 12.01.2013