我正在尝试使用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
也不会显示所有检查者姓名...