PClint和SI的结合静态代码检视

前言:

    网上关于PClint和SI的结合文档很多,但是都没有很好的结合到大型的代码开发实际中去。这篇文章将这个详细的介绍了如何正确的配置PClint,使能在大型的代码开发中使用静态检视代码

一:文档编写的目的

    在编写C/C++代码的时候,针对代码的静态检视工作在紧张工作时候变得极为重要。调试了多种的静态检视工具,最终还是觉得PClint+SI的静态检视工作,对于代码的检视将会大大的减少编译时检测不到问题,大大的减少了很多隐藏的bug。节省开发成本和研发的投入。

二:Pclint的安装

    2.1:使用的背景

    关于PClint的安装,网上有很多的blog和文档。但是更多只是一些浮于表面的介绍,这里会做一些更为针对性的介绍。

    在使用PClint的时候,需要明白自己使用的是什么编译器,同时要有编译器的环境。因为大多数的开发者目前使用的都是在WIN+SI,而编译的环境却在UNIX下进行的。所以在安装PClint,选择编译器和创建STD.lint,options.lint,include.lnt的时候,在大型的工程时候会成为一个很严重的问题。

    2.2 PClint安装前的装备

    下载一个PClint的版本,这里使用的是PClint_v9.0.

       解压之后如下:

PClint和SI的结合静态代码检视

    我们选择pclint9Setup.exe去安装文件。默认的时候是将安装在C:/LINT下的,安装的时候,可以参照网上的一些安装文档。关于安装的时候,将安装配置的。里面的编译器选择GCC字段的。安装配置完,可以在C盘下看到如下的文件:

PClint和SI的结合静态代码检视

    上图标注的四个是最为重要的分别为:co-gcc.lnt,选择的编译器,env-si.lint是你将要在那种的IDE中使用这个PClint。Lint-exe是PClint的应用程序。Std.lnt是整个PClint所要使用的运行时环境变量。

    2.3 std.ln文件的配置

    通过上面的安装我们得到了一个关于PClint和我们编译环境相结合的一个配置文件,这里将进一步的介绍这个配置文件,这将是使用PClint的关键。

    看一下我的std.lnt的文件内容如下:

PClint和SI的结合静态代码检视

    对于这个文件,在上面都有标注了。里面第一个是编译者的建议,这个是在安装的时候选择的。第二个是在配置的时候选择的编译器的类型,第三个就是统一平台的库文件lnt文件。而最为重要的就是options.lnt和include.lnt文件。这两个文件都是在后来自己添加在lnt目录下的,我们先来看下options的内容:

PClint和SI的结合静态代码检视

    这个options里面的内容,其实是针对需要屏蔽的pclint的检视代码的意见。因为如果全部按照pclint的检查标准,大概目前我们写的代码都将是体无完肤的操作了。如果你想屏蔽掉哪个报错,可以在这里面添加-e#(#就是你要屏蔽的号段)。

     下面我们来看下include的文件。

PClint和SI的结合静态代码检视

    这个include的文件其实包含主要的两部分,一部分就是编译器的部分。如上面的第一个红框。这个编译就是你在unix的编译器,这个其实可以在你编译环境下找到。第二个就是你大型项目的代码头文件的路径。需要你自己一个个的添加。如果需要屏蔽文件,也可以在这个文件里合理添加就可以了。

    这里介绍一下,这个路径的如果正确的选择。我是将编译器的环境代码拷贝到了本地,选择了相应的头文件包含,并将项目的代码在在服务器上用git建了一个仓库,然后将每次编译过的代码git到本地,包含相应的路径。

    其实合理的安排是在一个服务器上安装samba的服务,将编译器和代码路径映射到本地,在包含的时候将非常的方便多人同时使用。如下图所示:

PClint和SI的结合静态代码检视

    这样针对一个项目或者一个公司的配置就可以只配置一个lint文件,更新也只需要更新这个一个文件,这样大大节省了这个检视的投入。

三:PClint 和SI的结合

    关于PCLint和SI的融合其实网上文章也很多,这里只针对性的提一下:

    结合选择custom command,配置如下:

PClint和SI的结合静态代码检视

    里面可以看到第一个是包含你的lint-nt.exe 的应用程序,相当于是命令。而-i包产的是pclint的一些配置文件路径, 配置文件是 std.lnt env-si.lnt。 %f是只检测当前的文件。其他的没有什么太多的解释。

四:结束语

    按照以上的合理按配置,最终这边对代码的检视结果如下:

PClint和SI的结合静态代码检视

    这个结果还是我在屏蔽了一些操作之后,检查的结果。针对的就是以前的一些代码检视。可以发现即使这样还存在n多的问题。所以这个对于在编译之前的检测将会进一步的提高我们的代码质量和减少开发的周期。

    最后还是要强调的是在配置的时候,要明白你的编译器,并找到你的编译环境,同时要明白你所包含的库文件的include,是你编译的include和你大型项目下的include的路径。这个理解了和会使用了,pclint也就会了。

    
相关的软件工具和文档,可以从我的下载资源里面下载。