按照主要clang静态分析器网页(http://clang-analyzer.llvm.org/scan-build.html)的指示...
我有一个小 C 文件,它充满了令人发指的错误 ( badcode.c
):
int main(int argc, char ** argv)
{
int j;
int a[4];
puts(a[j]);
return 'a';
}
为了基本了解 clang 静态分析器(scan-build)如何使用,我运行:
scan-build -v clang badcode.c
它输出:
scan-build: Emitting reports for this run to '/tmp/scan-build-2012-08-17-1'.
scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.
scan-build: Using 'clang' from path: /usr/bin/clang
badcode.c:7:2: warning: implicit declaration of function 'puts' is invalid in C99 [-Wimplicit-function-declaration]
puts(a[j]);
^
1 warning generated.
scan-build: Removing directory '/tmp/scan-build-2012-08-17-1' because it contains no reports.
好的,太好了,clang 给出了一点警告,但仍然产生了 a.out。为什么它不生成报告?j
对于任何静态分析器来说,未初始化的变量都应该是一个非常明显的危险信号——为什么不报告它?
我只是使用了错误的命令行参数吗?