C/C++代码静态检查工具Cppcheck在VS2008开发环境中的安装配置和使用

Cppcheck is an analysis tool for C/C++code. Unlike C/C++ compilers and many other analysis tools, it doesn’t detect syntax errors. Cppcheck only detects the types of bugs that the compilers normally fail to detect. The goal is no false positives.

Cppcheck is rarely wrong about reported errors. But there are many bugs that it doesn’t detect.

它可以检查不通过编译的文件。

执行的检查包括:

(1)、自动变量检查;(2)、数组的边界检查;(3)、class类检查;(4)、过期的函数,废弃函数调用检查;(5)、异常内存使用,释放检查;(6)、内存泄漏检查,主要是通过内存引用指针;(7)、操作系统资源释放检查,中断,文件描述符等;(8)、异常STL 函数使用检查;(9)、代码格式错误,以及性能因素检查。

安装步骤:

(1)、从http://sourceforge.net/projects/cppcheck/下载最新版本cppcheck-1.58-x86-Setup.msi,将其安装到D:\ProgramFiles\Cppcheck路径下(注意:不要包含中文路径,也可以从https://github.com/danmar/cppcheck/ 下载源代码);

(2)、打开vs2008,Tools-->ExternalTools-->点击Add,Title:Cppcheck;Command:D:\ProgramFiles\Cppcheck\cppcheck.exe;Argments:--quiet --verbose --template=vs$(ItemPath);Initial directory:$(ItemDir);选中Use Output window;点击OK.

例如,在F:\test\Cppcheck文件夹下创建了一个Cppcheck工程,F:\test\Cppcheck\Cppcheck文件夹下存放着一些.cpp文件:

[cpp] view plaincopy

  1. #include "stdafx.h"  
  2. #include <iostream>  
  3.   
  4. using namespace std;  
  5.   
  6. int *p;  
  7.   
  8. int fun1(int sz)  
  9. {  
  10.     delete [] p;  
  11.   
  12.     //Exception thrown in invalid state, 'p' points at deallocated memory.  
  13.     if (sz <= 0)  
  14.     {  
  15.         throw std::runtime_error("size <= 0");  
  16.     }  
  17.   
  18.     p = new int[sz];  
  19. }  
  20.   
  21.   
  22. void *CreateFred()  
  23. {  
  24.     return malloc(100);  
  25. }  
  26.   
  27. void DestroyFred(void *p)  
  28. {  
  29.     free(p);  
  30. }  
  31.   
  32. void f(int x)  
  33. {  
  34.     //(style) Variable ’i’ is assigned a value that is never used  
  35.     //(style) The scope of the variable i can be reduced  
  36.     int i;  
  37.   
  38.     if (x == 0)  
  39.     {  
  40.         i = 0;  
  41.     }  
  42. }  
  43.   
  44. void foo(int x)  
  45. {  
  46.     void *f = CreateFred();  
  47.   
  48.     if (x == 1)  
  49.     {  
  50.         return;  
  51.     }  
  52.     //Memory leak: f  
  53.     DestroyFred(f);  
  54. }  
  55.   
  56. int _tmain(int argc, _TCHAR* argv[])  
  57. {  
  58.     //error: Array 'a[10]' accessed at index 10, which is out of bounds.  
  59.     //Variable 'a' is assigned a value that is never used.  
  60.     char a[10];  
  61.   
  62.     a[10] = 0;  
  63.   
  64.     return 0;  
  65. }  

(1)、checking all files in a folder:

D:\ProgramFiles\Cppcheck>cppcheckF:\test\Cppcheck\Cppcheck

(2)、stylistic issues(with --enable=style you enable most warning, styleand performance messages):

D:\ProgramFiles\Cppcheck>cppcheck--enable=style F:\test\Cppcheck\Cppcheck\Cppcheck.cpp

(3)、unused functions:

D:\ProgramFiles\Cppcheck>cppcheck--enable=unusedFunction F:\test\Cppcheck\Cppcheck

(4)、enable all checks:

D:\ProgramFiles\Cppcheck>cppcheck--enable=all F:\test\Cppcheck\Cppcheck

(5)、saving results in file:

D:\ProgramFiles\Cppcheck>cppcheck --enable=allF:\test\Cppcheck\Cppcheck 2> F:\test\Cppcheck\Cppcheck\err.txt

(6)、multithreaded checking(use 2 threads to check a folder):

D:\ProgramFiles\Cppcheck>cppcheck-j 2 F:\test\Cppcheck\Cppcheck

(7)、xml output:

D:\ProgramFiles\Cppcheck>cppcheck--xml-version=2 F:\test\Cppcheck\Cppcheck\Cppcheck.cpp

(8)、reformatting the output(to get Visual Studio compatible output):

D:\ProgramFiles\Cppcheck>cppcheck--template=vs F:\test\Cppcheck\Cppcheck\Cppcheck.cpp

参考文献:

1、http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page

2、http://blog.csdn.net/akof1314/article/details/7477014

3、http://www.cppblog.com/jinq0123/archive/2012/04/10/170739.html

4、http://blog.sina.com.cn/s/blog_7a4cdec80100s661.html

5、http://avitebskiy.blogspot.tw/2012/10/poor-mans-visual-studio-cppcheck.html

 

代码检查工具列表:

1、http://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Tools/Static_Code_Analysis

2、http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

3、http://www.cert.org/secure-coding/tools.html

4、http://spinroot.com/static/

5、http://www.kuqin.com/testing/20111116/314953.html

 

from:http://blog.csdn.net/fengbingchun/article/details/8887843

时间: 2024-09-19 10:12:57

C/C++代码静态检查工具Cppcheck在VS2008开发环境中的安装配置和使用的相关文章

Android(Java)利用findbugs进行代码静态检查

本文主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instrumentation可以方便的进行单元测试,不过据了解国内Android开发会写自测代码的寥寥无几.那么有没有简单的方法一定程度上保证代码质量呢.Android应用开发大多使用Java,所以对于Java代码检查工具都可以适用,本文介绍其中功能较为强大的findbugs. 1.findbugs作用

node js-求助:node.js 如何做代码静态检查?

问题描述 求助:node.js 如何做代码静态检查? 如题,给位大神,给推荐个工具或者方法吧,最好附上检查的详细方法或者工具使用方法,谢谢了! 解决方案 还真不知道nodeJS的 代码检查工具,试试javascript的代码检查工具把 解决方案二: http://www.51testing.com/html/87/300987-818864.html 解决方案三: 谢谢大神,回复的这么及时,赞!

大话js代码静态检查

1.背景 首先必须承认,静态代码检查不能解决所有问题!比如说,QA不能指望着靠静态代码检查来发现rd的代码逻辑的bug.而对于javascript,可能就是代码某处少了个分号,或者是某些编码的bad –practice.这些问题可能很小很小,但是对用户体验足以造成巨大影响.因此,如果这种检查真的能发现问题,那么还是很有必要的. 之后的一个问题是成本:为了发现一个潜在的问题,我们要付出多少精力?静态检查给我们的印象是:飞速的扫描一遍代码然后返回一大堆信息--就像一个可能蕴藏金子的沙堆,我们必须有耐

代码规范检查工具——checkStyle

  简介              Checkstyle是一款检查java程序代码样式的工具,可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的样式规范和统一.Checkstyle提供了高可配置性,以便适用于各种代码规范,所以除了可以使用它提供的sun的代码标准外,你也可以定制自己的标准.我们可以在eclipse中安装checkstyle的插件,来方便我们的使用.             Checkstyle可以让我们养成书写良好代码风格的习惯,代码的整洁也减少了

python代码风格检查工具──pylint

pylint是一个python代码检查工具,可以帮助python程序员方便地检查程序代码的语法和风格,通过这个工具,可以使你的python代码尽量保持完美,哈哈.具体可以检查什么东西呢?比如你写了 from XXX import * 了,它就会提示你这样import是不好的.比如你操作符的前后没有空格,它也会提示你.比如逗号后面没跟空格也会.还有你import了没用到的模块,定义了没使用的变量等也会提示.还有你的变量名是否符合规范也会提示.总之它提示的内容很多很全面,而且它最后会给出一个所检查的

在windows开发环境中,java代码中使用linux格式路径的方法需要注意的问题

注意点: 执行的代码文件所在盘为根目录即可. 假设 编译后class文件在e盘,则e下的 E:\opt\test.txt  在代码中就可以写成/opt/test.txt 这样的好处是 windows下写的代码直接部署到linux服务器就可以了,路径不用改. 测试代码:   package com.yanek.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import jav

求助:关于ORACLE FORMS/REPORTS开发环境中,测试工具的咨询

问题描述 项目招标中,关于测试工具有一些要求,我不知道哪款软件能满足这些要求,向高手求助:测试工具要求如下:thetestingtoolshouldworkorintegratewithOracleFormsandReports1supporttestcasegenerationandresultreporting2captureend-userresponsetimesforbusinessprocessesandtransactionstodeterminewhethertheperform

facebook静态代码检查工具开源了!

以前一直想写个静态代码的检查工具,能够根据语法分析自动找出内存泄露的问题,今天发现facebook开源了这样一个工具,可以检查Java , Object c  和c代码,美中不足的是不支持C++. facebook的这款工具叫Infer,用于在发布移动应用之前对代码进行分析,找出潜在的问题.目前 Facebook 使用该工具来分析 Facebook 的 App,包括 Android .iOS.Facebook Messenger 和 Instagram 等等 Facebook 称该工具帮助其每个

C++ 代码静态分析工具cppcheck【转】

  转自:http://blog.csdn.net/chen19870707/article/details/42393217 权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] cppcheck下载 cppcheck安装 cppcheck 使用 cppcheck分析结果 cppcheck可以分析错误的类型   C++ 代码静态分析工具cppcheck   Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blo