PC-lint参考手册.doc

  1. 1、本文档共226页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本概念 手册描述的软件有两种方式。对于PC市场(Windows、MS-DOS、OS/2),产品是二进制可执行文件格式。对于其它平台, 是C源代码形式,名字是FlexeLint。我们在手册的全部部分使用术语PC-lint/FlexeLint标识所有平台公共的行为。PC-lint/FlexeLint 是一个发现一个模块或多个模块的C和C++程序的勘误表的软件包。它使用K&R 和ANSI 作为K&R C的标准;它使用ANSI/ISO 委员会文档作为C++的标准; 很多C ’99 标准的特性集成到这个产品中,但是目前没有支持所有的 C’99标准。根据用户程序的大小来决定总共的需要的内存大小。尤其是,存储的需求依赖于头文件的大小。粗略估计,每2000行头文件需要的内存存储量大约是1Mb。PC-lint包包含三个可执行文件:一个Windows可执行文件、一个DOS-extended 可执行文件和一个OS/2 32位Windows 可执行文件运行在一个Windows环境下的32位DOS 扩展的可执行程序运行在MS-DOS环境下,使用80386 DOS 扩展技术来访问所有的存在的扩展内存。OS/2 32位OS/2环境下。FlexeLint包主要由C源代码组成,可以被编译到任何系统。FlexeLint安装的详细信息可在FlexeLint包中的"FlexeLint Installation Guide"找到。 简介 PC-lint/FlexeLint发现C和C++程序中的怪癖、异质、失灵和臭虫。这样分析的目的是发现这些程序中的在集成前的潜在的问题,揭示可能包含敏感的、未检测到的错误的不寻常的结构。因为它寻找几个模块而不仅仅是一个,它可以发现编译器不能发现的事情。它通常比编译关于很多细节更爱挑剔。 一个例子 考虑下面的C/C++程序(我们故意使这个例子小巧和可理解): 1: 2: char *report( short m, short 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 < m; i++ ) 13: { k++; kk = i; } 14: if( k == 1 ) result = nm; 15: else if( kk > 0 ) result = 1; 16: else if( kk < 0 ) result = -1; 17: if( m == result ) return temp; 18: else return name; 19: } 对于大多数的编译器来说,它是一个有效的C (或C++) 程序。但是,PC-Lint将会报告很多精细的错误。在第8行分配给name[11] 字符串覆盖null 字符;在第10行的乘法丢失精度,尽管long 比int长;第11行的比较是有缺陷的;第12行的变量kI没有被初始化;第15行的变量kk 没有被令人信服地初始化;第17行的变量result 可能未初始化;第18行,可能返回一个auto的地址;在小程序中大多数程序者可以容易地标识出这些问题,但是如果程序是几万行、几百万行,这种工作对于机器来说更合适,而不是人。 对C++的lint C++ 是一个非常特别的语言。不仅是计算机作者的Ray Duncan称这种语言:“是创建的最神秘和最奇异的语言之一”。 虽然如此,如果C++不存在,它将被创造出来。尽管C是一个非常强大的系统程序语言,但是它没有象Fortran般复杂的数字,象Basic般复杂的字符串,象Smalltalk的对象或Pascal 般的边界检查。对于C++,你也没有这些但是你有更重要的事情... 有能力创建这些,并且可能需要的特殊的问题域的许多其它程序结构。有了这些力量,将有一些混乱、不计后果的骗局、悲伤的失望、言过其实的要求、总体的拒绝和极端的精神欢快。 作者相信,及时地,语言和它的能力将能被更好理解,它的陷井和缺陷将更容易被识别。我们希望PC-lint/FlexeLint能对这些做出贡献,尤其是后者。 Lint的最初理由是松散地相关的K&R C 语言检查和通过提供模块内的严格类型检查和几个模块间的交叉检查满足这两个需要的多模块(独立编译的)的大型语言的检查。ANSI C,某些扩展,和C++,更多的扩展,提供严格的类型检查。指针不能再化装成 int 或其它指向的类型;enum 不能自由地混合int;函数

文档评论(0)

专业好文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6110200002000000

1亿VIP精品文档

相关文档