一 安装说明
scan-build是clang源码中的静态代码分析工具,安装的时候需要注意和clang的版本要保持一致才可以,网上的有一个python版本,但是我安装后无法使用;
1.1 linux下安装
#centos 下安装 yum -y install clang-analyzer #或通过dnf安装 sudo dnf -y install clang-analyzer
二 使用说明
2.1 linux下使用说明
这个配置脚本需要在scan-build中运行是因为scan-build能通过介入到编译器来扫描你的源文件。scan-build将编译器gcc设置为analyze-cc。analyze-cc作为一个伪编译器,转发命令行参数给gcc和clang来执行静态分析。 然后执行以下命令,即可开始进行静态分析。
# 清理 需要先清理 再运行不然看不到结果
make clean
mkdir output
scan-build --use-analyzer `which clang` make
说明:
--use-analyzer 指定了clang的路径
最后显示的结果是:
scan-build: 29 bugs found.
scan-build: Run 'scan-view /tmp/scan-build-2022-09-22-174727-11107-1' to examine bug reports.
scan-build: The analyzer encountered problems on some source files.
scan-build: Preprocessed versions of these sources were deposited in '/tmp/scan-build-2022-09-22-174727-11107-1/failures'.
scan-build: Please consider submitting a bug report using these files:
scan-build: http://clang-analyzer.llvm.org/filing_bugs.html
2.2 输出结果
在/tmp/scan-build-2022-09-22-174727-11107-1/failures 目录下为输出的结果,打开上层的index.html 会显示检测出来的问题如下图,可以看到检测的内容有:
逻辑错误
未使用的读操作
内存泄露等问题 [图片] 错误位置标记的非常漂亮: [图片]
三 相关参考
https://blog.csdn.net/yk_wing4/article/details/99695102
https://joydig.com/clang-static-analyzer-usage/
https://github.com/rizsotto/scan-build