访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
让Lint来检查你的程序(1)——Lint概述
内容导读:

1.概述 

LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查 ,他们要求软件工程师在使用LINT时要打开所有的编译开关,如果一定要关闭某些开关,  那么要给出关闭这些开关的正当理由。
    在英文中,‘’lint‘’是指纠缠在一起的细小纤维或者绒毛,比如衣物上面起的毛或者线头。如此命名该工具,正是借用了"lint" 一词的含义:将"lint"从程序中挑拣出来,从而使程序更"干净"。
   
C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。LINT识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。软件除错是软件项目开发成本和延误的主要因素。LINT能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。
    下面是
LINT能够检查的部分错误列表。如果你幸运的话,你的编译器也可以检查出其中的一些,但不会使全部。

  • <!--[if !supportLists]-->     可能的空指针<!--[endif]-->
  • <!--[if !supportLists]-->     在释放内存之后使用了该指针<!--[endif]-->
  • <!--[if !supportLists]-->     赋值次序问题<!--[endif]-->
  • <!--[if !supportLists]-->     拼写错误<!--[endif]-->
  • <!--[if !supportLists]-->     被零除<!--[endif]-->
  • <!--[if !supportLists]-->     失败case 语句 (遗漏了break语句) <!--[endif]-->
  • <!--[if !supportLists]-->     不可移植的代码<!--[endif]-->
  • <!--[if !supportLists]-->     宏定义参数没用使用圆括号<!--[endif]-->
  • <!--[if !supportLists]-->     符号的丢失<!--[endif]-->
  • <!--[if !supportLists]-->     异常的表达式<!--[endif]-->
  • <!--[if !supportLists]-->     变量没有初始化<!--[endif]-->
  • <!--[if !supportLists]-->     可疑的判断语句(例如, if (x = 0)) <!--[endif]-->
  • <!--[if !supportLists]-->     printf/scanf 的格式检查<!--[endif]-->

可想而知,如果从我们编码后第一次编译程序时就使用LINT来检查程序,并且保证消  除所有的LINT告警,我们就不会遇到象今天这么多的告警信息。即使在今天,我们如果能  抽出一定的精力来消除程序中的LINT告警,以后再维持这种无告警状态就是很容易的了。  我们程序质量的提高也是不言而喻的。
    现有的两个流行的LINT程序:

  • <!--[if !supportLists]-->     PC-lint是一个由Gimpel Software提供的支持C/C++的商用程序。<!--[endif]-->
  • <!--[if !supportLists]-->    Splint(LCLint) 是一个GNU免费授权的 Lint程序,但是只支持C不支持C++<!--[endif]-->

PC-LINTGIMPEL SOFTWARE公司的产品,其中的内容是非常广泛的,光是选项就有300多个,涉及到程序编译及语法使用中的方方面面。GIMPEL SOFTWARE公司的网址: http://www.gimpel.com/
    如果要给LINT工具下一个形象点的定义,那就是:一种更加严格的编译器。它不仅可  以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,  但很可能是潜在的、不易发现的错误。

标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐