如何仅通过CLANG检查一位检查员?

时间:2020-08-26 11:54:54

标签: clang llvm-clang clang-static-analyzer

如何仅通过CLANG检查一位检查员?

当我使用clang检查警告时,我使用这种方式

# clang --analyze *.c

我只想使用一个检查器

ex)内核。仅DivideZero(C,C ++,ObjC)

请告诉我一些选择!

1 个答案:

答案 0 :(得分:0)

要使用clang --analyze运行单个检查器,请将--analyzer-no-default-checks -Xanalyzer -analyzer-checker=<checker>添加到命令行。例如:

$ clang --analyze --analyzer-no-default-checks -Xanalyzer -analyzer-checker=core.DivideZero hello.c
hello.c:44:12: warning: Division by zero
  return 6 / z;
         ~~^~~
1 warning generated.

在这种情况下,hello.c包含三种默认会报告的各种缺陷,但是通过仅启用core.DivideZero,只会报告一个缺陷。引发此报告的代码片段为:

int divide_by_zero()
{
  int z = 0;
  return 6 / z;
}

我主要是通过查看Clang Command Line Argument Reference来弄清楚如何运行单个检查程序的,但这还不是很清楚,因此也需要一些试验和错误。 clang程序是一种多功能前端,可以在后台调用其他工具,因此可以使用正确的-X-和{ --前缀有点挑战。

Available Checkers的列表也很有用,其中包括诸如core.DivideZero之类的名称。

我在Linux / x86_64上使用clang + llvm版本3.7.1和8.0.1进行了测试。