静态代码分析是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。 统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。 在C++项目开发过程中,因为其为编译执行语言,语言规则要求较高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。所以C++ 静态代码分析工具能够帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省开发成本。
静态代码分析工具的优势
- 自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
- 帮助代码设计人员更专注于分析和解决代码设计缺陷。
- 减少在代码人工检查上花费的时间,提高软件可靠性并节省开发成本。
2 业界主流静态代码扫描工具概况
目前市场上的C++ 静态代码分析工具种类繁多且各有千秋, 本文将分别介绍TSC团队自主研发的tscancode工具和当前4种主流C++静态代码分析工具(cppcheck、coverity、clang、pclint),并从功能、效率、易用性等方面对它们进行分析和比较,以期帮助 C++开发人员更清晰静态代码分析工具的工作效果、适用场景和扩展空间,同时在其对应项目特征中选择合适的工具应用到项目开发环节中。
在可扩展性
上,
- TSC有专人维护,定期根据用户需求扩展规则或新增功能特性,
- cppcheck和clang是开源工具,工具更新较慢,但如果用户有特殊需求可以自己扩展开发,
- pclint和coverity是商业软件,难以进行功能扩展。
同时,
- TSC有完整代码质量管理闭环平台QOC支持;
- coverity和clang可用web端的结果展示,但无法自行管理问题流,需要进行二次开发;
- cppcheck和pclint缺少web端结果展示。