• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

具体内容参看文件《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的分析结果


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#—OpenFileDialog的一些属性发布时间:2022-07-13
下一篇:
QT中使用c++的指针发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap