首页 > 代码库 > 软件质量之道:PCLint之一
软件质量之道:PCLint之一
故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能。
孟子
1 引子
今天听老韩一席话,当真是感慨万千啊。心怀斗志昂扬,奋斗十年,到头来,却看到身边的人一个个贪图安逸,没有独当一面的才能,让人颓然失望。可以说这几年来,我也曾怀着这样的期盼,希望身边的朋友们能够借我一把力,共同奋斗,创造一些“奇迹”,但是每次也都是失望,失望,还是失望。
虽然前人们都说,在这个时代,没有独行者。但是,茫茫人海之中,想要找一个志同道合者,太难。并且,没有一个共同的目标,也很难找到志同道合者。所以,在这段日子,还是做一个默默地独行者更好,省却了若干烦心事。
但是,总不能因为别人,就失去了对自己的信心。自己能力有限是正确的,从小老爸就告诉我,要知道自己能吃几碗干饭。正如孟子所言,既然知道自己的能力,那就动心忍性,努力去学习,提高自身能力。
所以,虽然我可以理解这种心情,但是原谅我不能同意这种能力有限的结果。
以铜为鉴,可正衣冠;以古为鉴,可知兴替;以人为鉴,可明得失。每次员工大会,都颇有收获,实在是听君一席话,胜读十年书的感觉。小韩所谓C++的一万个小时,自以为还是远远不够的,假设平均每天工作学习十个小时,那么需要一千天,大概为三年时间。自从2012年2月份实习到如今,大概也有2年半的时间了,基本上每天都保持看书学习以及工作的习惯,但是却越加觉得C++之深厚,要想真正精通,还需要2年半的时间吧。也许2年半后,又觉得再需要5年时间吧,嘛,太极之意,“忘记”所有,便是大成之时吧。
又跑题了,开始今天的主题,PCLint,自觉这部分至少可以分为两篇文章,如果要深入讲解,足以涵盖《Effective C++》,《More Effective C++》等书的内容,所以还是只介绍用法,要想知道的更多,那就Google一下吧!
第一部分内容,主要介绍PCLint的功能以及如何安装。第二部分内容则讲解PCLint如何使用(暂时这么计划的,也许会突发奇想出来第三部分第四部分,那就请继续关注吧)。
2 PCLint简介
首先,提供一下PCLint的相关链接:
官网:http://www.gimpel.com/html/index.htm
最新9.0L安装包:http://download.csdn.net/detail/winking324/8102281
接下来,简单介绍一下PCLint到底是一个什么样的工具。
PCLint是GIMPELSOFTWARE 公司研发的C/C++软件代码静态分析工具,可以说,PCLint是一种更加严格的编译器。其主要分为PCLint和FlexeLint,PCLint主要应用于Windows平台,以二进制可执行文件提供,而FlexeLint应用于其他平台,例如Linux,以源代码形式发布。
PCLint在全球拥有广泛的客户群,许多大型的软件研发组织都把PCLint检查作为代码走查的第一道工序,例如说华为(感谢华为,让我学习到如此强大的工具)。PCLint不但能够对程式进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针连同冗余的代码,还能够有效地提出许多程序在空间利用、运行效率上的改进点。
总结下来,PCLint就是不通过执行程序进行代码分析,发现代码中潜在的Bug。通过个人实践来看,PCLint可以发现非逻辑上的80%左右的Bug,绝对是C++开发以及测试人员一个强大的助手(爸爸妈妈再也不用担心我写错代码了)。
既然PCLint如此强大,那么问题来了。
3 PCLint安装及初步配置
安装主要根据上面的最新9.0L安装包进行讲解,2014年10月16日更新,本人亲自打包,并增加自动更新脚本,方便一步操作(资源1分就当赞助费了,谢谢,如果没有分数下载,请留言邮箱)。
安装包主要包含如下两部分(原谅我的小广告,请支持2345.com):
第一个Update为升级包,第二个Gimpel_PC_Lint_9.zip为PCLint的安装包。
1. 解压PCLint的安装包,并进行安装,直接Next到最后一步,选择执行配置程序,并点击Finish。如果这里没有选择执行配置程序,可以通过执行安装目录下的CONFIG.exe来执行配置程序。
2. 接下来弹出PCLint的配置程序,点击下一步开始配置。
3. 说明执行完PCLint配置后,会生成执行脚本以及PCLint的配置文件(*.lnt),继续下一步。
4. 选择生成路径,安装路径即可,以及文件名称,然后下一步。
5. 选择编译器,VisualStudio现在最高只有2008,所以只好选择这个了,选择后点击下一步。
6. 选择平台,根据自己的需要,选择对应的平台,这里选择32bit,点击下一步。
7. 选择依赖的库,对于VisualStudio开发来说,主要包括Active Template Library(ATL),Microsoft FoundationClass Library,Standard Template Library,Windows 32-bit这四部分,选择后下一步。
8. 选择一些特殊的优化建议,例如说代码安全性和效率上的。这里按照最大原则进行选择,有:Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rdEdition),Dan Saks,MISRA 2004,然后下一步(PS:Effective C++这两本巨作真心的给力,C++入门必读经典)。
9. 指定当前使用库的头文件所在位置,选择Create –i options,并下一步,否则执行PCLint时会因为找不到头文件而失败。
10.选择头文件路径,以分号或者换行(Ctrl + Enter)区分,这里仅添加Visual Studio的标准头文件。由于不同的公司或者组织,其文件组织方式可能不一样,又或者包含了其他的各种库,所以有需要可以在这里进行添加,或者执行PCLint时出现错误,修改*.lnt文件添加即可。
11.提示是否打开新的配置,选择否。
12.创建OPTIONS.LNT文件,就是简单几个问题,由于我这边显示内容不全,所以选择No,然后下一步,如果显示全的话可以分别看一下,就是一些实例代码,然后选择一下即可。
13.选择对应的开发环境,这里最高只有VC9,所以对应选择这个即可。
14.添加PCLint到系统环境变量中。
15.经过漫长的配置设定,总算完成了。
4 PCLint更新
经过上面复杂的安装及配置后,接着就需要更新一下PCLint程序,使其支持更多的C++检查项等。
1. 解压压缩包中Update目录下所有文件到PCLint的安装路径,例如我的PCLint安装在D盘,则对应文件路径应该为:
D:\lint\l9-a-b.lp
…
D:\lint\lpatch.exe
D:\lint\Update.bat
2. 双击Update.bat,进行PCLint的更新,更新成功后的结果如图。
最后一行,版本号应该为9.00L。如果不正确,请进行路径或者文件是否正确的检查。
另外,说明一下更新的方法,首先,要确定当前PCLint的版本号,方法为使用cmd定位在PCLint的安装路径下,执行lint-nt.exe–v即可。其次,去官网上下载最新的更新程序lpatch.exe以及更新包(例如l9-a-b.lp等),将其拷贝到安装路径下,执行命令lpatch.exe l9-a-b.lp即可。
5 进一步思考
可惜不是周末,也不是周五,不能一口气写完。同学们就先尝试一下安装和升级方法吧,如果已经熟练掌握了,可以通过Google等查看如何进行C++代码的检查,或者查看一下PCLint的手册,绝对可以大涨姿势,学习到很多C++编程中的注意项。如果能写出一把连PCLint都没有一个Warning或者Error的代码,那么恭喜你,你已经成为一个C++的牛人了!
昨天看到一句不错的话,时间,抓起了就是黄金,虚度了就是流水;书,看了就是知识,没看就是废纸;理想,努力了才叫梦想,放弃了那只是妄想。努力,虽然未必会收获,但放弃,就一定一无所获。
想起李科分享的一句话,对于产品人员,最重要的就是好奇心。我想说的是,对于开发人员,最重要的就是尝试心!是是非非,对对错错,不过就是一个Hello World!
软件质量之道:PCLint之一