我刚刚按照铛分析器页面上的“入门”说明完成操作。
我的XCode当前使用检查器内部版本278
现在,我正在尝试遵循一些指南,我可以编写自己的自定义检查器,例如
http://blog.trailofbits.com/2014/04/27/using-static-analysis-and-clang-to-find-heartbleed/
http://bbannier.github.io/blog/2015/05/02/Writing-a-basic-clang-static-analysis-check.html
希望有人能指出我正确的方向,而我对构建clang项目不是很熟悉。
是否有可用的IDE会有所帮助?
我应该如何将编写的自定义检查器添加到版本278?
最佳答案
我最近开始使用clang检查器,这是我如何使我的自定义检查器与clang一起使用的方法。
您必须修改Checkers.td才能注册您的检查器。
<path-to-llvm>/llvm/tools/clang/lib/StaticAnalyzer/Checkers/Checkers.td
我做了一个调试检查器,将其放在调试组下,并添加了以下几行:
def MyCustomChecker : Checker<"DebugUsingMyChecker">,
HelpText<"Print results of my custom checker">,
DescFile<"DebugCheckers.cpp">; //this is the file where we define the class file of our checker
然后编辑DebugCheckers.cpp以添加您的检查器类,以供新注册的检查器调用。
<path-to-llvm>/llvm/tools/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp
并在debug checkers标签下添加
namespace
{
class MyCustomChecker : public Checker<check::ASTCodeBody> {
public:
void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
BugReporter &BR) const {
if (MyCustomChecker* CC = mgr.getAnalysis<CustomChecker>(D)) {
CC->dump(mgr.getSourceManager());
}
}
};
}
void ento::registerMyCustomChecker(CheckerManager &mgr) {
mgr.registerChecker<MyCustomChecker>();
}
之后,您可以将相关的类文件放在文件夹中:
<path-to-llvm>/llvm/tools/clang/lib/Analysis/
然后在该文件夹中编辑CMakeList.txt以包含您的类文件。
希望能澄清这一过程。您也可以阅读此链接以获取更多信息:http://clang-analyzer.llvm.org/checker_dev_manual.html
就IDE而言,您可以使用任何支持基于CMake的项目的IDE(例如CLion)。您可以查看此链接了解更多信息:http://llvm.org/docs/CMake.html
关于c++ - 为Clang静态分析器编写自定义检查器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37403871/