总目录传送门

工具名称 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检测

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

联系方式:


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

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

C++代码静态分析与优化(1)_cppcheck相关推荐

  1. C++代码静态分析与优化(7)_vera++

    总目录传送门 工具名称 vera++ 版本 1.3.0 类型 编码规范 官网 https://bitbucket.org/verateam/vera/wiki/Home 协议 Boost Softwa ...

  2. C++代码静态分析与优化(6)_flint++

    总目录传送门 工具名称 flint++ 版本 类型 代码分析 官网 https://github.com/JossWhittle/FlintPlusPlus 协议 Boost Software Lic ...

  3. C++代码静态分析与优化(5)_flawfinder

    总目录传送门 工具名称 flawfinder 版本 2.0.19 类型 代码分析 官网 https://dwheeler.com/flawfinder 协议 GNU GENERAL PUBLIC LI ...

  4. Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy

    Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/ ...

  5. 软件测试代码静态分析(splint)

    转载 http://www.cnblogs.com/bangerlee/archive/2011/09/07/2166593.html 代码静态分析工具--splint的学习与使用 引言 最近在项目中 ...

  6. 代码静态分析工具-splint的学习与使用[转]

    代码静态分析工具--splint的学习与使用[转] 引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.window ...

  7. Asp.Net异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法...

    今天项目中碰到一个以前从没有见过的异常信息"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值",于是查了一下资料,原来此异常是由于我在代码中使用了"Re ...

  8. PHP代码静态分析工具PHPStan

    最近发现自己写的PHP代码运行结果总跟自己预想的不一样,排查时发现大多是语法错误,在运行之前错误已经种下.可能是自己粗心大意,或者说php -l检测太简单,不过的确是有一些语法错误埋藏得太深(毕竟PH ...

  9. 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...

    在一般处理程序中执行 context.Response.End()方法会报出:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"这个异常. 对于这个异常微软有解 ...

最新文章

  1. wiki多个文件一起导入_mac文件信息管理工具EagleFiler for Mac分享给大家
  2. usermod命令,用户密码管理和mkpasswd命令
  3. 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
  4. 怎么去除桌面图标显示快捷方式字样?
  5. Class类是什么? Class.forName()是干什么的?
  6. 服务器端使用jsp还是asp_快速了解 ASP.NET Core Blazor
  7. 网络基本功系列:细说网络那些事儿
  8. 第四章 Tomcat服务器的安装及配置2
  9. 【MySQL】小表驱动大表
  10. ARM 指令集跳转指令
  11. java九九成表发_用EXCEL可多种办法生成99乘法表
  12. 数码媒体前股东向华视传媒提告状讼
  13. 【2021考研数学汤家凤高数辅导讲义】第四章 不定积分
  14. dreamweaver cs6 html5 pack,HTML5 Pack for Dreamweaver CS5——HTML5开发工具
  15. 小学六年级下册计算机计划,小学信息技术六年级下册教学计划
  16. 不积小流,无以成江海;不积跬步,无以至千里
  17. java程序员一般用什么笔记本_程序员对笔记本电脑有什么要求吗?推荐下哪些牌子笔记本性价比高?...
  18. 2020年最好用的手机是哪一款_2020年vivo手机哪款口碑最好_2020年vivo手机哪个系列比较好用...
  19. K8S之初入师门第一篇熟读手册
  20. mysql 创建触发器(for each row解释)

热门文章

  1. 五、爬虫学习--分页爬取关键词新闻
  2. 新闻分页---新闻发布系统
  3. 智能网联汽车——网联化
  4. 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
  5. 为Linux Mint Cinnamon的日历小程序增加中国农历显示以及其它部分参数优化
  6. Linux 用户切换、修改用户名、修改密码
  7. 2022-2028全球与中国固态继电器市场现状及未来发展趋势
  8. 服务器电源维修成都,成都电力电源维修
  9. java swing 空白_用swing创建窗体运行后怎么一片空白,什么都没有
  10. 对医疗数据泄露零容忍,数据安全治理势在必行