【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏

【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏,第1张

概述本文章向大家介绍【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏,主要包括【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、 什么是程序静态分析?

        程序静态分析是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。

二、 程序静态分析是怎样检测内存泄漏的?

静态分析工具相比编译器,对代码进行了更加严格的检查,像数组越界访问、内存泄漏、使用不当的类型转换等问题,都可以通过静态分析工具检查出来,我们甚至可以在分析工具的分析标准里定义代码的编写规范,在检测到不符合编写规范的代码时抛出告警,这些功能都是编译器没有的。

静态分析通常是寻找内存分配位置以及相应的释放点的配对,即:验证是否所有的路径都会存在正确的内存释放,一旦某条路径中未含有内存释放 *** 作,静态分析工具就会记录并输出疑似内存泄漏的信息。

三、为什么使用cppcheck检测工具?

cppcheck是一个命令行工具,它试图检测c/c++编译器没有看到的BUG。它可以检查非标准的代码,包括各种编译器扩展,内联汇编代码等等。它的内部预处理器可以处理包括宏和一些预处理器命令。虽然Cppcheck是高度可配置的,但是你只需要在这个命令后加上源码的路径就可以使用它。

Cppcheck静态分析工具相对于其他工具,它可以在linux下快速安装,并且它的特点是,确保不会误报。结合我们xavIEr平台中c源码实际情况,使用cppcheck工具可以对每个c源码文件进行检测,避免在开发过程中因为代码编写考虑不周全导致内存泄漏的问题。

下图说明了静态程序分析在进行项目编码过程中所处的位置:

四、如何使用cppcheck检查c内存泄露

linux下安装cppcehck:

sudo apt-get install cppcheck

以下例子演示当最后一个指针引用丢失的时候,其指向的空间尚未释放的情况:

#include

#include

int main(int argc,char const *argv[])

{

/* code */

double a;

int * p;

int b;

int c[2];

b = 1;

a = b; //使用不当的类型转换

p = (int *)malloc(10); //申请的内存未释放

c[2] = 1; //数组访问越界

printf("%dn",b);

return 0;

}

cppcheck --enable=all --inconclusive --std=posix test_c_memory_leakage.c

五、如何使用cppcheck检测工具将结果图像化的显示

尽管cppcheck是个命令行工具,在Jenkins中已经有cppcheck的插件,所以它可以配合jenkins使用。Jenkins可以对cppcheck检测后的结果进行处理,并且可以将结果图形化的显示,效果图如下图所示。

附链接:http://blog.csdn.net/jiang1986829/article/details/51328830

总结

以上是内存溢出为你收集整理的【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏全部内容,希望文章能够帮你解决【内存泄漏】- 2. 使用cppcheck+Jenkins检测c、c++内存泄漏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存