C++代码静态检测

C++代码静态检测

  • 一,CppCheck
  • 二,TscanCode
  • 三,PVS-studio

     代码静态检测,指的是程序在非运行状态下,对代码进行语法分析,检测其规范性和语法错误的一种操作。主要借助的都是一些第三方工具,比如CppCheck,TscanCode,PVS-studio等,本文主要对这几种常用的检测工具的使用进行介绍,并且都附上下载链接以及免费破解版。(付费的代码检测工具不在讨论范围内,,,)

一,CppCheck

(下载地址:CppCheck官网)
     cppcheck 是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的检查包括:
(1) 自动变量检查
(2) 数组的边界检查
(3)class类检查
(4) 过期的函数,废弃函数调用检查
(5) 异常内存使用,释放检查
(6) 内存泄漏检查,主要是通过内存引用指针
(7) 操作系统资源释放检查,中断,文件描述符等
(8) 异常STL 函数使用检查
(9) 代码格式错误,以及性能因素检查
我们可以使用它的windows客户端进行代码检测,也可以在vs中键入cppcheck插件,在VS中检测代码。

1,使用CppCheck客户端检测
     打开CppCheck软件,文件-新建项目文件,项目名随便输入
C++代码静态检测_第1张图片
     “项目页签”-“根目录”,输入c++代码的目录,然后点击ok
C++代码静态检测_第2张图片
     “visual studio”页签,可以直接选择vs项目,点击ok
C++代码静态检测_第3张图片
     检验结果如下:
C++代码静态检测_第4张图片
1)选择上面的菜单按钮,可以过滤检测的错误,比如只显示“错误”或“警告”信息;
2) 中间的列表框就是检测出不符合规范的代码文件和行数,单击会在下方提示具体的错误,比如上图“Member variable ‘CDealAFOF::m_pConfig’ is not initialized in the constructor.”,成员变量没有初始化。
3)双击中间列表框某一行,可直接打开对应代码文件(使用的默认文本编辑器)

2,在vs中使用CppCheck
C++代码静态检测_第5张图片
     点击“添加”按钮,分别填入以下内容:
C++代码静态检测_第6张图片
1)标题:外部工具的名称,可以随便填,此处为CppCheck
2)命令:CppCheck安装目录下的cppcheck.exe完整路径
3)参数:–enable=all 选出所有不符合规范的地方,
$(ItemDir)是指当前工程,可以通过右侧的按钮进行选择检测范围:当前工程/整个解决 方案。
4)使用输出窗口:将检测结果输出到visual studio的输出栏。

     此时再打开“工具”菜单,会发现下面多了一个“CppCheck”按钮,点击,开始检测,检测
结果显示如下:
C++代码静态检测_第7张图片

二,TscanCode

(下载地址:https://github.com/Tencent/TscanCode)
     TscanCode是腾讯公司开发的一款开源的静态代码检测工具,支持windows,linux和mac系统,支持C/C++,C#,Lua语言。
TscanCode支持以下类型规则扫描:
1)空指针检查,包含可疑的空指针,判空后解引用比如Crash等共3类subid检查。
2)数据越界,Sprintf_S越界共1类subid检查。
3)内存泄漏,分配和释放不匹配同1类subid检查。
4)逻辑错误,重复的代码分支,bool类型和INT进行比较,表达式永远True或者false等共18类检查。
5)可疑代码检查,if判断中含有可疑的=号,自由变量返回局部变量等共计15类检查。
6)运算错误,判断无符号数小于0,对bool类型进行++自增等,共计11类检查。

C++代码静态检测_第8张图片
     它支持配置不同的规则包,选择不同的扫描线程,不同的扫描语言来对代码的规范性和安全性进行检测。我们默认使用基础规则包。

     安装完毕后,打开软件,选择“扫描文件夹”,加载工程所在目录,点击“开始扫描”,扫描完成后会弹出一个扫描结果对话框。
C++代码静态检测_第9张图片
     严重级别分为致命,严重,警告,提示,风格五种,可以进行过滤,也可以进行排序。
     双击某一行,会弹出窗口,直接显示具体代码:
C++代码静态检测_第10张图片
     报错的原因是因为:
在这里插入图片描述
     m_szDBFFields数组最大下标为253,但是上面的校验只检验到if(iNum < 0 || iNum > 255),会存在数组越界的风险。

     TscanCode的更加具体的使用可以在git中查看使用文档。

三,PVS-studio

(下载地址:https://www.viva64.com/en/pvs-studio/)
     PVS-studio既集成在Visual Studio开发环境中使用,也可以作为一个windows程序单独启动。
PVS-studio是一款收费软件,它的收费主要体现在双击定位到具体代码处,代码检测是不收费的。当然在这里,我也给大家找到了免费版的…(PVS-studio破解版下载)

1,安装
     解压后,双击PVS-Studio_setup.exe直接安装。选择组件时,会自动检测出当前电脑上安装的vs环境,一般默认就好。
C++代码静态检测_第11张图片
2,破解
     将解压包crack文件夹下的PVS-Studio.exe 文件复制到PVS-Studio的安装路径中的“x64”或“x86”文件夹中(用户需根据自己的操作系统选择,64位就进入“x64”文件夹,32位就进入“x86”文件夹),默认路径在C:\Program Files (x86)\PVS-Studio。
之后双击打开“PVS-Studio.exe”文件,这里不会弹出任何文件,点击即可完成破解。

3,使用
     打开本机的Visual Studio,可以在上方的工具栏看到PVS_studio
C++代码静态检测_第12张图片
     选择“Check Current File”,检验结果如下:
C++代码静态检测_第13张图片
     双击某一行,可直接定位到具体代码处,并高亮显示,同时还有消息提示,便于直接修改不规范的代码。
     Windows客户端版可以直接运行exe并进行检测,具体操作感兴趣的可以自己去研究一下,这里不再讲述。

你可能感兴趣的:(C++)