Какой самый простой способ переименовать все вхождения имени переменной, используя clang libtooling и имея дескриптор namedDecl? - PullRequest
0 голосов
/ 17 марта 2019

Я хочу создать программу, которая создает абстрактные имена для всех функций, переменных, пространств имен ... и заменяет текущие. Для этой цели я использовал документацию clang libtooling, а также пример их посетителя AST. Я нашел другие полезные уроки в интернете, таких как: Этот пример инструмента, который переименовывает функцию ; Этот пример того, как написать средство сопоставления и замены . В моем коде много подобных искателей на первом сайте:

  virtual bool VisitVarDecl(VarDecl *func) {
errs() << func->getNameAsString()<<" ";
auto a = func->getType();
errs() << a.getAsString()<<"space";
//also tried this with no success
Twine a = Twine("works");
 func->setName(a);
return true;

}

Таким образом, вопрос заключается в том, как заменить все вхождения этого имени в контексте этого имени: например, тупой заменитель, основанный на регулярном выражении, заменит глобальную и локальную переменные с тем же именем, но использование дескриптора namedDecl должно получить только меня обнаруженный посетителем?

...