Clang 使用scan-build命令进行代码分析

Clang 使用scan-build命令进行代码分析,clang,static-analysis,Clang,Static Analysis,我已经在Ubuntu桌面上安装了scan build/clang 2.9版。我使用make构建我的C++源代码。正如它所说,扫描构建将分析使用make构建的项目,如果您给出 scan-build make 到 但是在make之后,我看到了一条消息 scan-build: Removing '/tmp/scan-build-2013-10-16-1' because it contains no reports. 也试过 scan-build --use-c++=/use/bin/clang

我已经在Ubuntu桌面上安装了scan build/clang 2.9版。我使用make构建我的C++源代码。正如它所说,扫描构建将分析使用make构建的项目,如果您给出

scan-build make 

但是在make之后,我看到了一条消息

scan-build: Removing '/tmp/scan-build-2013-10-16-1' because it contains no reports.
也试过

scan-build --use-c++=/use/bin/clang++ make
Q1-我做错了什么/错过了什么。如何使用扫描生成来分析所有源文件

问题2-是否有任何选项可以使用
clang++--analyze myfile.cpp
分析单个源文件。但它给出了一个关于包含未找到的头文件的错误“致命”错误“my.h”


什么选项可以将其指向包含头文件的文件夹。

对于Q2,您应该能够使用:

scan-build clang++ -c myfile.cpp
或者你的建议:

clang++ --analyze myfile.cpp
但是您需要确保编译器知道所有的include和库(您应该能够在不进行分析的情况下成功地将myfile.cpp编译成一个对象文件)。这尤其包括
-I
目录

还有用于扫描构建的-o选项,它指定HTML报告文件的目标目录。将根据需要创建子目录,以表示分析器的单独“运行”。如果未指定此选项,则会在
/tmp
中创建一个目录来存储报告,如您所知

另一个有用的选项是
-v
(verbose),它可以打印分析器可能遇到的任何错误

最后但并非最不重要的一点是,在禁用优化的情况下,您应该对调试构建使用分析,但更重要的是,在没有剥离符号的情况下


不确定是否有用,请告诉我…

谢谢-我错过了选择。这很有帮助。我必须提到的是,“scan build clang++-c myfile.cpp”并不是静态分析文件,而是编译、构建和链接文件。如果一个cpp文件包含标题,它会给出“file not found”错误。有没有添加头文件的简单方法?@ErayTuncer eeh,您的意思是使用
-I
?@ErayTuncer它指定搜索包含文件的路径。因此,您应该指定一个文件夹来存放标题,而不是文件。事实上,如果您能够使用
clang
g++
编译它,那么
-I
选项就是相同的。