C++静态代码分析工具对比cppCheck与PreFast

具体内容参看文件《CppCheck和PreFast对Cplusplus代码静态分析测试.zip》

C++测试源代码main.cpp

#define NULL 0

#include <stdio.h>

#include <string.h>

// 没有初始化

void defect1()

{

int a;

int b;

b = a;

}

// 空指针取值

void defect2( int b, int c)

{

int * p = NULL;

int a = 1 ;

if (b == 1 )

{

if (c == 1 )

{

p = & a;

}

else

{

}

}

else

{

if (c == 1 )

{

}

else

{

p = & a;

}

}

* p;

return ;

}

//可能错误的运算符优先级

void defect3()

{

int a = 1 ;

int b = 1 ;

int c = 1 ;

if (a & b == c)

return ;

}

//可能的buffer overrun

void defect4()

{

char buf[ 100 ];

char buf2[ 200 ];

int i = 100 ;

sprintf(buf, " hello world %d " , i);

strcpy(buf, buf2);

}

// 可能的无穷循环

void defect5()

{

signed char i;

for (i = 100 ; i >= 0 ; i ++ ) {

;

}

}

// 格式字符串错误

void defect6()

{

char buff[ 5 ];

sprintf(buff, " %s %s " , " a " );

}

//=和==误用

void defect7()

{

int a = 1 ;

if (a = 2 )

return ;

}

// 逻辑运算问题

void defect8()

{

int x;

if ( 0 && x ++ ) {

;

}

}

void main()

{

}

1、使用PreFast前后对比

图1取消C/C++代码分析

图2不使用PreFast时VS2010输出的警告

图3 启用C/C++代码分析

图4 使用PreFast时VS2010输出的警告

2、Cppcheck对main.cpp源代码的分析结果

图5 Cppcheck的分析结果

时间: 2024-11-05 02:58:35

C++静态代码分析工具对比cppCheck与PreFast的相关文章

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

【转载】常用 Java 静态代码分析工具的分析与比较

摘自:http://www.oschina.net/question/129540_23043常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团

[转载] 常用 Java 静态代码分析工具的分析与比较

转载自http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺

如何分析android的OOM,与java静态代码分析工具

用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放的资源,因为代码的错误,而导致某些对象一直被引用(Reference),例如 Android 内存优化,如何避免OOM 文章中提到的Activity 的mContext 引用. 当代码量很庞大的时候,单靠读代码查找错误是很困难的,所以必须借助于工具,这里介绍一款很好用的分析工具MAT. 1.下载MAT http://www.eclipse.org/mat/download

Java静态代码分析工具Infer

Java静态代码分析工具Infer 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Infer介绍 Infer是Facebook最新开源的静态程序分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题.目前Facebook使用此工具分析Facebook的App,包括Android.iOS.Facebook Messenger和Instagram等. Facebook称该工具帮助其每个月检查出应用潜在的数百个Bug,例如一些空指针访问.资源

来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧.

PVS-Studio 静态代码分析工具推荐

最近发现一款非常好用的静态代码分析工具PVS-Studio,是一家俄罗斯公司开发的,用于诊断C/C++/C++11源代码中的错误.它兼容Visual Studio开发环境,最新版本支持Visual Studio2015.PVS-Studio安装好之后,打开Visual Studio导航栏中就会出现PVS-Studio,我用的是Visual Studio2010,如下图所示. 以下是我利用PVS-Studio检查出当前程序中一些问题的示例: 1.变量给自己赋值. 2.漏掉成员变量赋值. 3.条件判

Java静态代码分析工具——FindBugs插件的安装与使用

1 什么是FindBugs FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析.不是通过分析类文件的形式或结构来确定程序的意图,而是通常使用 Visitor 模式来鉴别代码是否符合一些固定的规范. 2 如何安装FindBugs? 作为Eclipse的一个插件,可以将Findbugs集成到Eclipse中使用. 第一种是在线安装:在Eclipse的插件安装地址中输入http:

Clang &amp;IOS 静态代码分析工具scan-build

Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:Jan.4th, 2015 IOS项目和Clang项目可以借助scan-build 实现代码的静态分析,找出代码缺陷. 1.什么是 Scan-build? Scan-build 是一个命令行工具,它能够帮助使用者运行静态分析器检查他们的代码, 找出代码的缺陷. 2.scan-build是怎么工作的? 当一个项目在构建中,源文件在编译时