Как запустить пользовательскую функцию сразу после или вместе с запуском clang :: tooling :: RefactoringTool :: runAndSave? - PullRequest
0 голосов
/ 07 июля 2019

Я использую libClang для создания инструмента рефакторинга.Любой, кто знаком с этим бизнесом, знает, о чем я пишу.

Все мы знаем, что clang::tooling::RefactoringTool::runAndSave запускает RefactoringTool над всеми предоставленными исходными файлами и выполняет замены.Более конкретно, для выполнения замен сначала создается AST, содержащий все узлы, а затем, когда найдено совпадение, он вызывает метод run() подходящего класса обратного вызова (унаследованного от MatchFinder::MatchCallback),который выполняет замены один за другим.

Моя проблема заключается в следующем: после вызова методов run() всех классов обратного вызова и после выполнения замен я хочу запустить дополнительную функцию, котораядобавьте несколько строк кода в анализируемую программу с исходным кодом.

clang::tooling::RefactoringTool::runAndSave: 1. сначала выполняются замены, 2. затем сохраняются замены в файлах.

Я хочу выполнить мою дополнительную функцию непосредственно между этими двумя шагами.Я хочу добавить дополнительные пользовательские замены, которые не должны применяться методами run() каждого класса обратного вызова.По сути, я хочу выполнить дополнительные замены после того, как все run() методы классов обратного вызова уже выполнены.Как мне это сделать, и какие конструкции кода я использую?

...