工具名称 | cppcheck |
---|---|
版本 | 2.7 |
类型 | 代码分析 |
官网 | http://cppcheck.net |
协议 | GNU General Public License v3.0 |
描述 | Cppcheck是C/C++代码的静态分析工具。它提供独特的代码分析来检测错误,并着重于检测未定义的行为和危险的编码结构。目标是只检测代码中的真正错误(即几乎没有误报)。 |
功能 | 1. 自动变量检查 2. 数组的边界检查 3. class类检查 4. 过期的函数,废弃函数调用检查 5. 异常内存使用,释放检查 6. 内存泄漏检查,主要是通过内存引用指针 7. 操作系统资源释放检查,中断,文件描述符等 8. 异常STL 函数使用检查 9. 代码格式错误,以及性能因素检查 |
版权 | 版权所有 © 2007-2018 Daniel Marjamäki 与 Cppcheck 团队. |
-
安装软件
首先到官网 http://cppcheck.net
下载最新的开源版本
-
启动运行
安装完成后 启动程序
-
检测代码
接下来我们分析一下项目代码
在菜单里选择分析->文件
可以看到支持的文件或者工程是非常多的
我们这里直接选择sln visualstudio的解决方案
配置选择debug即可 -
查看结果
运行完检查后我们查看下结果报告
这里可以很清楚的看到有一个严重错误,两个风格问题
内存泄漏的风险被检测出来了我们再增加一点错误代码
char* b = nullptr; memcpy(b, "aaa", 3);
可以看到新增加的代码中的错误问题也被检测出来了接下来我们试试丝绸程序员工具箱
永久免费
丝绸程序员工具箱, 强大的本地构建工具, 提供给项目全方位的静态检测, 动态检测, 代码工具以及各种便利的插件工具, 通过词法分析、语法分析、控制流、数据流分析、内存检测、代码覆盖率、热点函数检测等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标. 根据分析结果对代码进行深度优化. 提升代码质量, 增强产品健壮性.
官网地址:silktools.cn
运行丝绸程序员工具箱
添加项目后 执行静态分析中的cppcheck
打开报告,可以看到内存泄漏和其他的违规也显示出来了。
点击第一条违规信息查看可能的内存泄漏原因
可以看到细节描述 Memory leak a,说明申请的变量a会造成内存泄漏,发生在10行,也就是函数返回的地方。
我们直接修改一下代码看看,在函数最后增加一行释放的代码
修改完成后保存代码,退出显示报告 再次运行cppcheck检测
再次检测后,之前的可能内存泄漏的风险点已经消失。
联系方式:
作者 | 郑天佐 |
---|---|
278969898 | |
主页 | http://www.camelstudio.cn |
邮箱 | camelsoft@163.com |
博客 | http://blog.csdn.net/zhengtianzuo06 |
github | https://github.com/zhengtianzuo |
QQ群 | 199672080 |