Foreword

看到了一些静态代码检测工具,之前一直觉得没啥用,还不如IDE自带的好用。试了试,发现确实有些情况是IDE没检测到的,静态检查会提示。

找了一些比较知名的,体验测试一下

静态代码检测

一般来说这种工具都是辅助检测的,基础功能编译以后,用来查漏补缺的。

常见的一些检测目标:

  • 内存溢出,index越界
  • 空指针
  • 未初始化
  • 强制类型检查
  • 弱定义
  • 缩进管理…

一些知名的检测工具

  • SAST Coverity
  • Helix QAC
  • Parasoft
  • PGRelief
  • PCLint
  • TScanCode
  • Cppcheck
  • SonarQube

一些比较老的图了,新的没啥人测评,暂时看不出来

MISRA

检测标准

TscanCode

https://github.com/Tencent/TscanCode/tree/master

TscanCode是腾讯开源的一个静态检查,release不知道为什么exe被放在群里,仓库里没有

随手传一个到我的仓库里

https://github.com/elmagnificogi/MyTools/blob/master/TscanCode/TscanCodeV2.14.24.windows.exe

【技术调研】TscanCode自定义规则开发.pdf

还有一个文档说明规则是如何自定义开发的

使用起来也非常简单,指定好项目文件夹,开始扫描即可

规则,可以看到具体会检测什么类型的问题,还有示例

由于是开源的,所以腾讯放进去的规则也不是很多,如果有需要可以二次开发,自己填充更多的规则进去

扫描完成以后,就能看到各种报错了,当然有一些是误报,毕竟是静态检测,有些看不出来,很正常。

试了一下我们的项目,确实有一些地方写错了,而编译器没有提示出来的

Coverity

https://scan.coverity.com/

Coverity 目前业界使用比较广泛,很多公司都有使用流程,只是目前官方价格不透明,估计是买断制的

目前才联系销售,还未回应

Coverity 目前和Github有合作,可以直接用Github登录,然后使用Github的项目做检测分析

Summary

未完待续

Quote

https://zhuanlan.zhihu.com/p/490064511?utm_id=0

https://www.incredibuild.cn/blog/top-9-c-static-code-analysis-tools

https://blog.csdn.net/wetest_tencent/article/details/51516347

https://blog.csdn.net/yyz_1987/article/details/124589079