use*_*818 8 clang clang-static-analyzer llvm-clang
在我的一个检查器中,我使用FunctionDecl类来获取函数声明.现在我想获得我输入checkASTDecl方法的函数的名称.我们知道在checkASTDecl()中我们得到类FunctionDecl的指针.所以,任何人都可以帮助我获取我输入checkASTDecl的函数名称.
这是我写的示例代码:
namespace {
class FuncPrototypeChecker : public Checker<check::ASTDecl<FunctioeDecl> > {
mutable OwningPtr<BugType> TernaryOperatorBug;
public:
void checkASTDecl(const FunctionDecl *D,
AnalysisManager &mgr, BugReporter &BR) const;
};
Run Code Online (Sandbox Code Playgroud)
}
void FuncPrototypeChecker::checkASTDecl(const FunctionDecl *D,
AnalysisManager &mgr,
BugReporter &BR) const {
/* Get the name of the function from FunctionDecl *D */
}
Run Code Online (Sandbox Code Playgroud)
我想获取我输入方法FuncPrototypeChecker :: checkASTDecl()的函数的名称.请帮助我实现它的方式.提前致谢.
小智 8
实际上,clang有一个类来存储decls的名字(不仅仅是a FunctionDecl
),叫做DeclarationNameInfo
(声明为StatementNameInfo的clang api)
您可以使用API调用获取DeclarationNameInfo
实例FunctionDecl
:
functionDecl->getNameInfo();
Run Code Online (Sandbox Code Playgroud)
并通过以下方式获取名称作为字符串:
functionDecl->getNameInfo().getAsString();
Run Code Online (Sandbox Code Playgroud)
返回的结果将是a std::string
.
有关在FunctionDecl的clang api中FunctionDecl
可用的API的更多信息.