Я пишу инструмент clang, но я довольно плохо знаком с ним, поэтому я столкнулся с проблемой, которую не смог найти в документации (пока).
Я использую отличный API Matchers, чтобы найти некоторые узлы, которыми я позже хочу манипулировать в AST. Проблема заключается в том, что инструмент clang фактически проанализирует все, что принадлежит исходному файлу, включая заголовки, такие как iostream и т. Д.
Поскольку мои манипуляции, вероятно, будут включать некоторый рефакторинг, я определенно не хочу касаться каждой вещи, которую находит синтаксический анализатор.
Прямо сейчас я имею дело с этим, сравнивая исходные файлы узлов, с которыми я совпал, с аргументами в argv, но, разумеется, это неправильно, поскольку он все еще анализирует ВСЕ код iostream - он просто игнорирует это при этом. Я просто не могу поверить, что нет способа просто сказать ClangTool что-то вроде:
"только сопоставлять узлы, исходный файл местоположения которых пользователь вводит в этот инструмент"
Думая об этом, имеет смысл, только если возможно индивидуально создавать AST для каждого исходного файла, но мне нужно, чтобы они знали друг о друге или обменивались контекстными знаниями, и я также не нашел способа сделать это либо.
Я чувствую, что упускаю что-то очень очевидное здесь.
заранее спасибо:)