C++代码静态分析与优化(1)_cppcheck

总目录传送门

在这里插入图片描述

工具名称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 团队.
  1. 安装软件

    首先到官网 http://cppcheck.net
    下载最新的开源版本
    在这里插入图片描述
    在这里插入图片描述

  2. 启动运行

    安装完成后 启动程序
    在这里插入图片描述

  3. 检测代码

    接下来我们分析一下项目代码
    在菜单里选择分析->文件
    在这里插入图片描述
    可以看到支持的文件或者工程是非常多的
    我们这里直接选择sln visualstudio的解决方案
    在这里插入图片描述

    在这里插入图片描述
    配置选择debug即可

  4. 查看结果

    运行完检查后我们查看下结果报告
    在这里插入图片描述

    这里可以很清楚的看到有一个严重错误,两个风格问题
    内存泄漏的风险被检测出来了

    我们再增加一点错误代码

    char* b = nullptr;
    memcpy(b, "aaa", 3);
    

    在这里插入图片描述
    可以看到新增加的代码中的错误问题也被检测出来了

    接下来我们试试丝绸程序员工具箱

在这里插入图片描述

丝绸程序员工具箱
程序员的超强本地构建工具
永久免费

丝绸程序员工具箱, 强大的本地构建工具, 提供给项目全方位的静态检测, 动态检测, 代码工具以及各种便利的插件工具, 通过词法分析、语法分析、控制流、数据流分析、内存检测、代码覆盖率、热点函数检测等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标. 根据分析结果对代码进行深度优化. 提升代码质量, 增强产品健壮性.

官网地址:silktools.cn

运行丝绸程序员工具箱

在这里插入图片描述
添加项目后 执行静态分析中的cppcheck

在这里插入图片描述
打开报告,可以看到内存泄漏和其他的违规也显示出来了。

点击第一条违规信息查看可能的内存泄漏原因
在这里插入图片描述

可以看到细节描述 Memory leak a,说明申请的变量a会造成内存泄漏,发生在10行,也就是函数返回的地方。
我们直接修改一下代码看看,在函数最后增加一行释放的代码

在这里插入图片描述
修改完成后保存代码,退出显示报告 再次运行cppcheck检测
在这里插入图片描述

再次检测后,之前的可能内存泄漏的风险点已经消失。

联系方式:

作者郑天佐
QQ278969898
主页http://www.camelstudio.cn
邮箱camelsoft@163.com
博客http://blog.csdn.net/zhengtianzuo06
githubhttps://github.com/zhengtianzuo
QQ群199672080

在这里插入图片描述

觉得分享的内容还不错, 就请作者喝杯咖啡吧~~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengtianzuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值