用pc-lint助力symbian开发

用pc-lint助力symbian开发


    使用pc-lint一段时间了,感觉确实对代码质量提升有很大帮助。再此,写一篇文章讲讲它在symbian开发中的使用方法。

(1)什么是pc-lint?

pc-lint是一个历史悠久,功能异常强劲的静态代码检测工具。它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如microsoft, pc-lint检查无错误无警告是代码首先要过的第一关,偶个人觉得,对于小公司和个人开发而言,pc-lint也非常重要,因为基于开发成本考虑,小公司和个人往往不能拿出很多很全面的测试,这时候,pc-lint的强劲功能可以很好地提高软件的质量。

pc-lint目前是支持c和c++程序的语法检查的,但很遗憾是一款商业软件(官方网站):

http://www.gimpel.com

尽管如此,google一下,会发现在可用的“free”版本很多。。。

 

在linux环境下有一个叫做splint的与pc-lint相似的代码静态分析工具也很好用,但是很可惜它只能支持c语言的分析。参考网址:

http://www.splint.org/


(2)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++)中说描述的各种提高效率和防止错误的方法。

(3)如何使用pc-lint?

pc-lint下载完毕后(一般“free”的版本都是“绿色”安装版,直接解压出来一个目录即可),我这里举例子就是解压以后出来的目录是d:/lint。

进入这个lint的目录,会发现有几个主要的文件,lint.exe, lint-nt.exe等等。

此时可以从命令行进入这里面看看下载到的pc-lint是什么版本的:

C:/Documents and Settings/wayne>D:/Lint/lint-nt -v -i"D:/Lint" std.lnt

PC-lint for C/C++ (NT) Vers. 8.00x, Copyright Gimpel Software 1985-2008
我这里是打过补丁的也就是8.00的x的版本(是8.00版里面的最后一个版本,hoho),一般网上“free”的,大都是8.00e的版本。

可以到如下地址来下载patch补丁,不过现在的patches似乎都升级到9.00a以后的了,但愿9.00a的“free”版能早点出来 :P

http://www.gimpel.com/html/ptch90.htm#pcl

好了,如果运行lint-nt以后,可以看到有版本号输出,以及什么can not open files之类的提示,那么恭喜,你的pc-lint已经可以工作了。

(4)配置pc-lint

pc-lint的目录中,你应该会看到一个叫做lnt的目录,这里面有很多以.lnt结尾的文件,这些文件就是相对应的pc-lint的配置文件了。不过,这里都是为什么vc啦,codewarrior啦,borland c++ builder之类的ide准备的了。还不是为symbian准备的,幸好在symbian的wiki里面有epoc.lnt这个配置文件下载,为了方便大家使用,我给压缩了一下传上来:

epoc_lnt.rar

从这份epoc.lnt的年代看来,呵呵,symbian很早以前就在使用pc-lint进行代码质量检查了,看来在技术上超前了我们很久很久啊!

好,把这两个lnt文件拷贝到d:/lint目录下面,然后修改std.lnt为如下内容:

epoc.lnt
options.lnt -si4 -sp4

看看有没有一个叫做lin.bat的批处理文件,如果没有,就手工添加一个,如下内容:

d:/lint/lint-nt -v -i"d:/lint" std.lnt %1 %2 %3 %4 %5 %6 %7 %8 %9

好了,然后把d:/lint这个路径添加到系统的path里面去,然后“运行”->“cmd”打开shell,然后输入:

lin [回车]

看看有没有输出,ok,如果有,那么代表你的for symbian的pc-lint环境就弄好了。

(5)把pc-lint跟vs2005集成

集成过程很简单,其实只要是支持调用第三方的程序的ide,更准确地说是editor都可以无缝地将pc-lint集成到环境中去,例如:vs系列ide,carbide c++,ultra editor, edit plus, source insight等等,hoho,偶甚至把emacs for win32也配置出来了:P。

1)打开vs2005,选择"tools"->"externel tools...",然后选择"add"

2)在title里随便输点什么,例如“lint current file”

3)在command里面输入:d:/lint/lin.bat

4)在argument里面输入:-i"$(SolutionDir)/inc" "$(ItemPath)"

这里的-i就代表pc-lint进行语法检查的时候当遇到头文件的时候要跑到哪个目录下面去找的意思,你也可以这样写:"$(SolutionDir)/group/conf.lnt"然后在你的group目录里面建立一个叫做conf.lnt的文件,把所有程序用到的include目录都用-i的形式放进去。

5)在intial directory里面输入:"$(ItemPath)"

6)最后,很重要的一点就是,需要把use output window这一项前面的小方块勾上。

然后按下确定,就一切ok了。

然后就是实验了,新建一个symbian的项目,然后把光标定位在cpp文件的代码编辑器里面,单击"tools"->"lint current file",呵呵,就会看到对当前cpp文件进行静态语法分析和检查的结果。这时候才会发现,原来gcce之类的编译器是多么的“宽容” :D。

pc-lint会输出很多的warning,很多在symbian里面不是问题,但是它就不管那么多了,还是报出warning,例如TRAPD之类的异常捕获的语法。

没办法了,谁让symbian本身就是一个怪物呢?不能用常规的思路去想它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值