如何使用Clang AST Matcher匹配Typedef



我正在为Clang-Tidy编写一个检查器,该检查器检查INT和指针之间的铸造。

例如,对于代码:

int val = 0xbaddeef;
char* ptr = (char*)val; 

我想将其修复到:

char* ptr = (char*)(uintptr_t)val;

但是,如果a已经是uintptr_t,我不修复它。

typedef uintptr_t myType;
myType val = 0xbaddeef;
char* ptr = (char*)val; 

我的问题是我匹配了CStyleCastExpr并获得匹配结果,但是我无法获得演员的源类型,我使用CStyleCastExpr.getSubExpr().getType().getXXXXType(),我得到的val的类型是myTypelong/int,但没有uintptr_t。<<<<<<<<。/p>

我怎么知道valuintptr_t的一种?

您可能会查看getType()。getAsstring(),getType()。getCanonicalType.getAsstring()和getType()。getunqualifiedType.getAsstring()。我认为其中一个会返回您想要的东西。

相关内容

  • 没有找到相关文章

最新更新