首页 > 解决方案 > 使用 clang libtooling 重命名所有出现的变量名并具有 namedDecl 句柄的最简单方法是什么?

问题描述

我想制作一个程序,为所有函数、变量、命名空间...生成抽象名称并替换当前名称。为此,我使用了 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 句柄应该只让我检测到一个由访客?

标签: c++clanglibclang

解决方案


推荐阅读