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 团队. |
安装软件
首先到官网 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 |
觉得分享的内容还不错, 就请作者喝杯咖啡吧~~
C++代码静态分析与优化(1)_cppcheck相关推荐
- C++代码静态分析与优化(7)_vera++
总目录传送门 工具名称 vera++ 版本 1.3.0 类型 编码规范 官网 https://bitbucket.org/verateam/vera/wiki/Home 协议 Boost Softwa ...
- C++代码静态分析与优化(6)_flint++
总目录传送门 工具名称 flint++ 版本 类型 代码分析 官网 https://github.com/JossWhittle/FlintPlusPlus 协议 Boost Software Lic ...
- C++代码静态分析与优化(5)_flawfinder
总目录传送门 工具名称 flawfinder 版本 2.0.19 类型 代码分析 官网 https://dwheeler.com/flawfinder 协议 GNU GENERAL PUBLIC LI ...
- Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy
Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/ ...
- 软件测试代码静态分析(splint)
转载 http://www.cnblogs.com/bangerlee/archive/2011/09/07/2166593.html 代码静态分析工具--splint的学习与使用 引言 最近在项目中 ...
- 代码静态分析工具-splint的学习与使用[转]
代码静态分析工具--splint的学习与使用[转] 引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.window ...
- Asp.Net异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法...
今天项目中碰到一个以前从没有见过的异常信息"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值",于是查了一下资料,原来此异常是由于我在代码中使用了"Re ...
- PHP代码静态分析工具PHPStan
最近发现自己写的PHP代码运行结果总跟自己预想的不一样,排查时发现大多是语法错误,在运行之前错误已经种下.可能是自己粗心大意,或者说php -l检测太简单,不过的确是有一些语法错误埋藏得太深(毕竟PH ...
- 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值...
在一般处理程序中执行 context.Response.End()方法会报出:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"这个异常. 对于这个异常微软有解 ...
最新文章
- wiki多个文件一起导入_mac文件信息管理工具EagleFiler for Mac分享给大家
- usermod命令,用户密码管理和mkpasswd命令
- 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
- 怎么去除桌面图标显示快捷方式字样?
- Class类是什么? Class.forName()是干什么的?
- 服务器端使用jsp还是asp_快速了解 ASP.NET Core Blazor
- 网络基本功系列:细说网络那些事儿
- 第四章 Tomcat服务器的安装及配置2
- 【MySQL】小表驱动大表
- ARM 指令集跳转指令
- java九九成表发_用EXCEL可多种办法生成99乘法表
- 数码媒体前股东向华视传媒提告状讼
- 【2021考研数学汤家凤高数辅导讲义】第四章 不定积分
- dreamweaver cs6 html5 pack,HTML5 Pack for Dreamweaver CS5——HTML5开发工具
- 小学六年级下册计算机计划,小学信息技术六年级下册教学计划
- 不积小流,无以成江海;不积跬步,无以至千里
- java程序员一般用什么笔记本_程序员对笔记本电脑有什么要求吗?推荐下哪些牌子笔记本性价比高?...
- 2020年最好用的手机是哪一款_2020年vivo手机哪款口碑最好_2020年vivo手机哪个系列比较好用...
- K8S之初入师门第一篇熟读手册
- mysql 创建触发器(for each row解释)
热门文章
- 五、爬虫学习--分页爬取关键词新闻
- 新闻分页---新闻发布系统
- 智能网联汽车——网联化
- 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
- 为Linux Mint Cinnamon的日历小程序增加中国农历显示以及其它部分参数优化
- Linux 用户切换、修改用户名、修改密码
- 2022-2028全球与中国固态继电器市场现状及未来发展趋势
- 服务器电源维修成都,成都电力电源维修
- java swing 空白_用swing创建窗体运行后怎么一片空白,什么都没有
- 对医疗数据泄露零容忍,数据安全治理势在必行