如何为clang静态分析器创建自定义检查器?

时间:2019-08-23 03:41:13

标签: clang llvm clang-static-analyzer

我正在尝试使用clang静态分析器创建新的检查器。

我使用ninja和cmake从源代码构建了clang。

我正在尝试

中给出的说明

https://clang-analyzer.llvm.org/checker_dev_manual.html

但是我对此一点困惑。

如果这是我的检查文件 SimpleStreamChecker.cpp

 #include "clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h"
 #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
 #include "clang/StaticAnalyzer/Core/Checker.h"
 #include "clang/StaticAnalyzer/Core/CheckerManager.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"


void ento::registerSimpleStreamChecker(CheckerManager &mgr) {
  mgr.registerChecker<SimpleStreamChecker>();
}

如果这是checkers.td路径

/home/abc/Desktop/clang-llvm/llvm-project/clang/include/clang/StaticAnalyzer/Checkers

我在.td文件中添加了以下几行

def SimpleStreamChecker : Checker<"SimpleStream">,
  HelpText<"Check for misuses of stream APIs">,
  DescFile<"SimpleStreamChecker.cpp">;

我也将SimpleStreamChecker.cpp包含在lib文件夹中,其中检查文件列表已添加到CMakeLists.txt文件中。

我也提到了一些堆栈溢出帖子 https://stackoverflow.com/questions/37778269/making-new-checker-visible-in-the-clangs-static-analyzer

仍然无法找到新的检查器。

我在做什么错,请提出一些解决方案。

clang -cc1 -analyzer-checker-help也不会显示所有检查者姓名...

0 个答案:

没有答案