我相信:一片叶子也能倾倒整个季节

PC-lint---代码规范性检查工具

上一篇 / 下一篇  2008-10-15 11:39:56 / 个人分类:流程

产品名称:PC-lint for C/C++

 开发公司:Gimpel

 当前版本:


详细信息相关资料技术支持购  买下  载 
产品介绍:PC-lint for C/C++
按此在新窗口浏览图片

PC-lint for C/C++ 用于检查你的C/C++源代码,帮您发现矛盾、冗余和错误等
PC-LINT是GIMPEL SOFTWARE公司的产品,其中的内容是非常广泛的,光是选项就有30 0多个,涉及到程序编译及语法使用中的方方面面。本篇培训材料旨在引导读者入门,学会 PC-LINT的基本使用方法,起抛砖引玉的作用,能让读者从这里起步继续去研究如何娴熟地 使用PC-LINT的各种选项,能让它充分为我们的开发工作服务。
1.概述 
  如果要给LINT工具下一个形象点的定义,那就是:一种更加严格的编译器。它不仅可 
以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求, 
但很可能是潜在的、不易发现的错误。请看下面的例子: 
1: 
2:char *report( int m, int n, char *p ) 
3:{ 
4: int result; 
5: char *temp; 
6: long nm; 
7: int i, k, kk; 
8: char name[11] = "Joe Jakeson"; 
9: 
10: nm = n * m; 
11: temp = p == "" ? "null" : p; 
12: for( i = 0; i 13: { 
14: k++; 
15: kk = i; 
16: } 
17: 
18: if( k== 1 ) result = nm; 
19: else if( kk > 0 ) result = 1; 
20: else if( kk < 0 ) result = -1; 
21: 
22: if( m == result ) return( temp ); 
23: else return( name ); 
24:} 
  上面的代码用一般的编译器编译是一段有效的代码,但是用PC-LINT编译就会有几个告 警。首先第8行向name数组赋值时丢掉了nul字符,第10行的乘法精度会失准,第11行的比 较有问题,第14行的变量k没有初始化,第15行的kk可能没有被初始化,第22行的result也 有可能没有被初始化,第23行返回的是一个局部对象的地址。这段代码在大部分编译器下 是可以顺利编译通过的,继续查找其中的错误就要靠人工调试程序,如果程序很大,这将 是一项烦琐的工作,没有人可以保证能找出所有的这类问题,但PC-LINT只通过一次简单的 编译就可做到,显然为我们节省了大量的开发时间
功能
  1) PC-Lint是一种静态代码检测工具,可以说,PC-LINT是一种更加严格的编译器,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。
  2) PC-lint不但可以检测单个文件,也可以从整个项目的角度来检测问题,因为C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而PC-Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。
  3) PC-lint支持几乎所有流行的编辑环境和编译器,比如Borland C++从1.x到5.x各个版本、Borland C++ Build、GCC、VC,VC.net、watcom C/C++、Source insight、intel C/C++等等,也支持16/32/64的平台环境。
  4) 支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法
四步速成PC-Lint概述
  这么好的工具,当然是先拿起来用了再说,这里分为四步,保证你马上可以使用PC-Lint了,当然,如果你上手以后,想细致深入学习这个工具,可以在网上查找相应的资料,另外在我的另一个系列文章《软件开发的七种武器》中有一篇是讲述 PC-Lint使用的,比这篇要深入细致一些,如有兴趣,也可以看看。
  第一步:安装&设置
  安装和通常的软件没有什么不同。安装结束后在PC-Lint安装目录下运行CONFIG.exe,各项设置简要解释如下:
  a) 第一步,给出PC-Lint的安装路径和选择设置的保存文件。
  b) 第二步,选择你所使用的C/C++编译器:比如Visual C++ 6.x。
  c) 第三步,选择内存模式:比如32 bit Flat Model。
  d) 第四步,选择所使用的库:比如MFC,OWL,等,可多选,在windows下开发的一般要选中windows 32 bit。
  e) 第五步,C++编程提出过重要建议的作者,选择某作者后,他提出的编程建议方面的选项将被打开:比如Scott Meyers,可不选。
  f) 第六步,头文件的设置:可在后面步骤中手工添加。
  第二步:整合PC-Lint到选定的编译环境
  当你在上述第二步中选择了编译器后,可以在PC-Lint目录下找到一个"env-选用的编辑环境.lnt"文件,比如对于Source insight 是env-si.lnt,对于vc6是env-vc6.lnt。打开此文件,根据上面的描述,配置你的编译器,下面以VC6为例:
  •选取菜单 tools | customize.....
  •选取 Tools 标签
  •点按主对话框上方的虚线小方框 New
  •输入 name: PC-LINT
  •输入 Command: c:\lint\lint-nt.exe,假设安装到此路径
  •输入 Arguments: c:\lint\std.lnt ?(FilePath)?7)选择 (x) Use Output Window
  •Close
  第三步:Lint单个C文件
  a) 打开一个C文件
  b) 运行第2)步集成上的PC-Lint菜单项
  c) LINT结果会在一两秒之内出来。告警的解释可参考LINT安装目录下MSG.TXT文件,打开文件,通过查找告警号码定位,就可以看到比较详细的说明。
  第四步:Lint多个C文件
  a) 在LINT软件目录下建立PRJLINT.LNT文件,文件的第一行是使用的LINT配置文件名,从第二行开始,列出想所有要LINT的*.C文件名,一行一个。如果要把结果输出到文件,在前面加上一行"-os(文件名)"(例如:"-os(c:\lint\result.txt)")。样例:YF_Config.lnt
  // 以下为自己想要进行Lint的.C文件,
  G:\src\tt\tt1.c
  G:\src\tt\tt2.c
  …
  b) 用2)介绍的方法在Source Insight"中介绍的方法增加一条"PC-LINT PROJECT"命令,所有设置与"PC-LINT"设置相同,除了
  ①"Custom Commands"对话框中"RUN"编辑框的文字由"C:\LINT\LINT-NT.EXE filename.lnt %f"改为"C:\LINT\LINT-NT.EXE PRJLINT.LINT",也就是把配置文件名改为PRJLINT.LNT,并去掉未尾的"%f"
  ②设置的快捷键与PC-LINT要区别开来
  利用下面的DOS命令可以用来得到一堆*.C文件的清单。例如:
  ① 列出C:\SRC下所有*.C文件,并保存到C:\SRC\FILELIST.TXT:
  DIR C:\SRC\*.C /B >C:\SRC\FILELIST.TXT
  ② 列出C:\SRC下,包括SRC的子目录下的所有的*.C文件,,并添加到C:\SRC\FILELIST.TXT的未尾:
  DIR C:\SRC\*.C /S/B >>C:\SRC\FILELIST.TXT
  PC-Lint 重要文件说明
  Msg.txt :解释告警的内容。
  选用的.lnt :包含头文件的路径,-i选项。
  env-选用的编辑环境.lnt :讲述如何将PC-lint与对应的编辑环境结合起来。
  co-xxx.lnt :选定的编译器。
  STD.LNT :内存模型等全局性东西。
  LIB-xxx.LNT :库类型的列表,包括标准C/C++库,MFC库,OWL库等等。
  AU-xxx.LNT :C++编程提出过重要建议的作者,选择某作者后,他提出的编程建议方面的选项将被打开。
  OPTIONS.LNT :反映全局编译信息显示情况的选项文件


TAG: 流程

引用 删除 ziseyaobing   /   2009-02-16 17:46:05
-3
 

评分:0

我来说两句

日历

« 2024-04-29  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 33810
  • 日志数: 30
  • 建立时间: 2007-01-31
  • 更新时间: 2008-10-27

RSS订阅

Open Toolbar