Clang 使用scan-build命令进行代码分析
我已经在Ubuntu桌面上安装了scan build/clang 2.9版。我使用make构建我的C++源代码。正如它所说,扫描构建将分析使用make构建的项目,如果您给出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
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
选项就是相同的。