Я использую libClang для создания инструмента рефакторинга.Любой, кто знаком с этим бизнесом, знает, о чем я пишу.
Все мы знаем, что clang::tooling::RefactoringTool::runAndSave
запускает RefactoringTool над всеми предоставленными исходными файлами и выполняет замены.Более конкретно, для выполнения замен сначала создается AST, содержащий все узлы, а затем, когда найдено совпадение, он вызывает метод run()
подходящего класса обратного вызова (унаследованного от MatchFinder::MatchCallback
),который выполняет замены один за другим.
Моя проблема заключается в следующем: после вызова методов run()
всех классов обратного вызова и после выполнения замен я хочу запустить дополнительную функцию, котораядобавьте несколько строк кода в анализируемую программу с исходным кодом.
clang::tooling::RefactoringTool::runAndSave
: 1. сначала выполняются замены, 2. затем сохраняются замены в файлах.
Я хочу выполнить мою дополнительную функцию непосредственно между этими двумя шагами.Я хочу добавить дополнительные пользовательские замены, которые не должны применяться методами run()
каждого класса обратного вызова.По сути, я хочу выполнить дополнительные замены после того, как все run()
методы классов обратного вызова уже выполнены.Как мне это сделать, и какие конструкции кода я использую?