Qt静态扫描(命令行操作)
前沿:
静态代码分析是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的
在C++项目开发过程中,因为其为编译执行语言,语言规则要求较高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。所以C++ 静态代码分析工具能够帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省开发成本。
静态代码分析工具的优势 :
1. 自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
2. 帮助代码设计人员更专注于分析和解决代码设计缺陷。
3. 减少在代码人工检查上花费的时间,提高软件可靠性并节省开发成本。
扫描工具(clang)
-
clang-tidy
c/c++ 等语言通用
-
clazy-standalone
clazy 是一个编译器插件,它允许 clang 理解 Qt 语义。您会收到 50 多个与 Qt 相关的编译器警告,范围从不需要的内存分配到 API 的滥用,包括用于自动重构的修复。 其实就是clang 只能检测c++的语法, 并不能检测出Qt的一些特有语法, clazy 是在clang 的基础上做了改进, 兼容了Qt 的语法
命令行使用:(后期搭建自动化集成使用)
-
生成compile_commands.json 文件(通过Qt 或者命令都可以)
-
检测文件
clazy-standalone.exe -p .\compile_commands.json ..\mainwindow.cpp
-
过滤Qt 依赖导致的警告:
clazy-standalone.exe -p .\compile_commands.json --ignore-dirs=D:/DeveTool/Qt/ ..\mainwindow.cpp
-
检测箱展示
clazy-standalone.exe -p .\compile_commands.json --ignore-dirs=D:/DeveTool/Qt/ --list-checks ..\mainwindow.cpp
-
检测等级设置:
clazy-standalone.exe -p .\compile_commands.json --ignore-dirs=D:/DeveTool/Qt/ --checks=level0,level1,level2 ..\mainwindow.cpp
-
将检测内容输出到yaml 文件:
clazy-standalone.exe -p .\compile_commands.json --ignore-dirs=D:/DeveTool/Qt/ --checks=level0,level1,level2 --export-fixes=fixes.yaml ..\mainwindow.cpp
-
自动修改检测的内容:
clang-apply-replacements.exe ./
学习视频地址:
Running clazy and clang-tidy from the Command Line