老古开发网首页
导航:老古开发网首页文章索引文章分类另类其他→[让Lint来检查你的程序(1)——Lint概述]
| -文章搜索 - 最新文章 - |

让Lint来检查你的程序(1)——Lint概述

发布时间:2006年10月15日 点击次数:2194
来源:   作者:
 

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工具下一个形象点的定义,那就是:一种更加严格的编译器。它不仅可  以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,  但很可能是潜在的、不易发现的错误。


欢迎进入老古论坛进行讨论
[另类其他] 相关文章:
笔试、面试经验谈
简介:
转自水木 笔试、面试经验谈 经历了大大小小有7、8场校园招聘会,也算是积累了一些笔试、面试的经验了,现在总算签到了自己中意的公司,可以静下来把自己的收获和教训写一下,算是对这段时间的一个总结吧,同时也希望看到这篇文章的同学,能够从我的经验中获得一些启发,在将来你们就业的时候,能够有所帮助。 一、简历篇: 1、准备工作:个人简历最好针对不同的公司和职位写不同的简历,不要写一份简历作为“万能简历”使用。在你写简历之前,需要对你所申请的职位有个清楚的了解,包括它对技能的要求、对工作经验的要求......

信产部与发改委制定集成电路产业研发专项资金申报指南
维修家电若标价不明:最高将被处罚5000元
信产部禁止对电信增值业务提供商恶意索赔
欧盟RoHS豁免状况更新:六项新豁免通过TAC表决
数字传感器MPXY8020A与MSP430的接口设计
明基上半年亏2.28亿美元手机部将裁员
PCI总线接口芯片PCI 9052及其应用
因操纵芯片价格三星美国高层被判入狱
基于MSP430系列单片机的CAN总线接口转换卡设计
 
下一个:[ARM设计]使用EasyARM2131时遇到的一些问题
简介:
作者liy-tj 前段时间 我们 在新项目开发 中选用 了PHILLIPS的LPC213x作为CPU。所以我们向周立功公司购买了一套EasyARM2131开发板和两套ULINK JTAG仿真器。在头一个月内遇到了很多莫名其妙的问题,虽然后来都一一解决,但也让我们走了很多弯路。后来在网上发现遇到问题的不仅仅是我们。所以在这里把一些遇到的问题和解决办法写出来与大家共享。我们对下面的这些问题的理解不一定都正确,解决办法也不一定是最佳的。另外也希望大家把自己的理解和经验能共享出来。 1、常常发生ULINK找不到CPU,后来发现是因为在软件内对GPIO......
 

上一个:[综合电子]ISO14443标准中的非接触型智能卡

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒