如何将PCLint集成到SourceInsight中(针对VxWorks+Tornado开发平台)

 PC-Lint 是一款C/C++软件代码静态分析工具。 PC-lint在全球拥有广泛的客户群,许多大型的软件研发组织(包括几大通信设备厂商)都把PC-Lint检查作为代码走查的第一道工序。PC-Lint不但能够对程式进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针连同冗余的代码,还能够有效地提出许多程序在空间利用、运行效率上的改进点。

网上有很多将PCLint集成到SourceInsight中的文章,但全部都是基于VC开发平台的。由于我们公司开发软件最常用的工具组合为基于VxWorks系统的Tornado+SourceInsight开发平台,所以此文档主要基于此开发平台进行说明。希望能够给大家来带帮助。

集成方法如下:

1、解压PCLint8.rar到D盘根目录下(为了减少过多的设置,直接解压到D盘根目录是最方便的;注意:必须使用此压缩包中的PCLint)。

2、打开“D:\PCLint8”文件夹,用记事本或UltraEdit打开std.lnt文件,如下图所示:

图1-1

3、上图std.lnt中,红框1中的两个路径要设置成大家自身Tornado目录下的路径;红框2中的路径需要包含自身工程路径中头文件的路径(不需要包含C/C++标准头文件的路径)。注意:这里头文件要包含全面,包括驱动库提供的头文件、自身定义的头文件。如果头文件包含不全,在进行代码检查时首先就会提示找不到头文件,无法继续进行代码检测。这时,你可以直接在代码中注释掉找不到的头文件,或者红框2中加入相应头文件的路径。

4、std.lnt文件设置保存完成后,就可以设置SourceInsight把PCLint集成进去。从Options菜单中选择“Custom Commands”命令项。点Add键会出现下面的Add New Custom Command对话框。在New command name:栏中输入“PC-lint80”,原则上这个名称可以随便起,只要你能搞清楚它的含义就可以了,然后按OK按钮。

图1-2

5、在Run栏中输入“d:\PCLint8\lint-nt -u -id:\PCLint8 std.lnt env-si %f”其中d:\PCLint8是你PC-LINT的安装目录, %f是表示当前打开的文件。如果要Lint多个文件则需要使用配置文件,在配置文件里包含多个文件,将%f改成你自己的配置文件即可(建议只包含一个文件,一个一个的查问题)。

6、在Output栏中选择“Iconic Window”、“Capture Output”。

7、在Control栏中选择“Save Files First”、将缺省打了勾选上的“Pause When Done”改成不选择。

8、在Source Links in Output栏中选择“Parse Links in Output”、“File,then Line”。

9、在Pattern栏中将缺省设置改成^\([^ ]*\) \([0-9]+\)就大功告成了。

10、如果需要Lint当前打开文件的同一目录下所有文件,可以将%f改成%d\*.cpp(不推荐这样做,一个文件一个文件的查比较好)。整个设置截图如下:

图1-3

11、设置菜单按钮。点击上图“Menu…”,弹出新对话框,如下图所示。找到“PC-Lint80”,在“Menu”下拉框中选择菜单所处的位置,我选择的为“Search”,然后选中<end of menu>,点击Insert按钮,这样PCLint就加入到SourceInsight的菜单里了。

图1-4

12、设置快捷键。点击上图“Key”按钮,弹出新对话框,如下图所示。点击“ Assign New Key”,然后设置成“Shift+F11”,点击OK。这样快捷就设置好了。到此PCLint就成功集成到SourceInsight中了。

图1-5

 

下面来介绍如何使用:

1、首先点击到想要检测的文件,如下图,我以自身工程的xcu.c文件为例。

图2-1

2、如下图所示,点击Search,选择PC-Lint80;或者用已经设置好的快捷键“Shift+F11”。

图2-2

3、运行结果如下图所示。特别注意:下图结果报的头文件错误,任何头文件错误都会终止检测,所以下图的结果并不代表xcu.c代码没有问题。遇到这种情况,首先要解决头文件中的错误,如果无法解决或并不想关心此头文件错误,可以直接在xcu.c中注释掉此头文件。

图2-3

4、注释掉后,再次点击运行PC-Lint80,结果如下图所示。这时xcu.c正常被检测。例如:红框1,ApiSetPortSpeedAndDuplex()函数重复定义;红框2:send_to_clock[index]可能会产生数组越界。

图2-4

5、修改所有代码漏洞后,再次运行PC-Lint80,如下图所示。证明代码修复完成。

图2-5

 

注意:PCLint不是完全智能的,当它报错时,可能人工根据代码逻辑检查会发现代码其实没有问题。但为了提高代码质量,建议尽量改进报错的代码(用assert保证)。据非官方消息,PCLint在很多大型公司中被广泛使用,有些公司甚至要求消除所有PCLint的报错才允许编译代码或进中试。所以推荐大家使用此工具,从源头上杜绝软件问题,以提高代码质量。

 

文章中提到的PCLint压缩包下载地址:PCLint.rar

 

如需转载,请注明原文链接:http://blog.csdn.net/love_lei/article/details/7333349

发布了6 篇原创文章 · 获赞 19 · 访问量 20万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章