总结PClint安装及使用研究总结报告.docx

上传人:b****7 文档编号:8961628 上传时间:2023-02-02 格式:DOCX 页数:45 大小:753.08KB
下载 相关 举报
总结PClint安装及使用研究总结报告.docx_第1页
第1页 / 共45页
总结PClint安装及使用研究总结报告.docx_第2页
第2页 / 共45页
总结PClint安装及使用研究总结报告.docx_第3页
第3页 / 共45页
总结PClint安装及使用研究总结报告.docx_第4页
第4页 / 共45页
总结PClint安装及使用研究总结报告.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

总结PClint安装及使用研究总结报告.docx

《总结PClint安装及使用研究总结报告.docx》由会员分享,可在线阅读,更多相关《总结PClint安装及使用研究总结报告.docx(45页珍藏版)》请在冰豆网上搜索。

总结PClint安装及使用研究总结报告.docx

总结PClint安装及使用研究总结报告

PC-lint研究总结

 

1.PC-lint总体介绍

PC-Lint/FlexeLintforC/C++是GIMPELSOFTWARE公司的产品,是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。

它除了可以检查出一般的语法错误外,还可以检查出那些虽然符合语法要求,但很可能是潜在的、不易发现的错误。

C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。

PC-Lint识别并报告C语言中的编程陷阱和格式缺陷的发生。

它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。

软件除错是软件项目开发成本和延误的主要因素。

PC-lint能够帮你在程序动态测试之前发现编码错误。

这样消除错误的成本更低。

PC-lint全球拥有广泛的客户群,因为它性价比高,易于学习,容易推广和固化到软件开发测试流程中去。

使用方法很简单,可以用命令行方式进行,例如lint-nt–ustd.lnttest1.ctest2.ctest3.c。

另外支持MAKEFILE方式。

也可以集成到开发环境中。

如集成到SourceInsight/SLICKEDIT/MSVC6.0/KEILC..等。

如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打开所有的编译开关,如果一定要关闭某些开关,那么要给出关闭这些开关的正当理由。

由于越来越多的用户要求能在非PC的平台上使用PC-Lint,GIMPEL公司采用了标准C源码包的方式发布了FlexeLint,这样一来,FlexeLint就可被用户方便的移植在各种的平台上。

2.安装和配置

2.1安装

由于此版本比较特殊,故无需安装,只需要将RAR压缩包里的所有文件解压到一个目录下即可,这里假定为C:

\PCLint8目录。

解压之后目录中文件及目录的说明如下:

lint-nt.exePC-lint可执行程序;

config.exe配置向导;

read80.txt手册的补充说明,最新特性的更新都在这里说明;

pc-lint.pdfPC-Lint英文参考手册,许多问题的答案可以在这里找到;

pr.exe打印工具;

msg.txt文本格式的错误号信息解释文件;

patch.exeLINT补丁升级工具;

Lnt\包含各种lnt配置文件的目录,文件如下:

co-....lnt各种特定的编译器的配置文件;

co.lnt通用的编译器配置文件;

sl-....c支持各种非ANSI标准编译器的标准库模块;

sl.c支持ANSI标准的通用编译器的标准库模块;

env-....lnt支持包括微软VisualStudio在内的各种开发环境以及多种编辑工具的配置文件;

lib-....lnt支持各种特定库的配置选项文件;

au-....lnt作者编程建议的配置文件;

Test\.包含各种测试源文件的目录。

2.2配置

假定我们为MicrosoftVisualC++6的开发环境进行配置,运行C:

\PCLint8\config.exe进行配置。

1)运行C:

\PCLint8\config.exe后出现如下画面,选择下一步;

图2.2.1

2)出现命令行使用的说明窗口,选择下一步;

图2.2.2

说明:

LIN.BAT,OPTIONS.LNT,STD.LNT为成功运行完此配置向导后自动生成的文件。

LINT-NT实际上就是LINT-NT.EXE命令。

LIN.BAT中的命令语句形式还可在IDE或编辑器里使用;

3)选择是创建或修改已有配置文件STD.LNT的选项,这里我们是第一次配置,故选择上面一个选项CreateanewSTD.LNT,不修改配置路径,然后选择下一步;

图2.2.3

说明:

界面中配置路径不修改的话就是PC-Lint安装的路径C:

\PCLint8,新建的STD.LNT就存放在这个目录下,当然用户也可选择另外的配置路径存放生成的STD.LNT。

4)接下来是选择编译器,在下拉框中选择自己使用的编译器。

这里我们选择MicrosoftVisualC++6.x(co-msc60.lnt),点击下一步;

图2.2.4

说明:

如果没有自己使用的编译器,可选择通用编译器:

GenericCompilers。

这个选项会体现在co-xxx.lnt文件中,并存放在前面我们选择的配置路径(C:

\PCLint8)下,在后面配置选项我们所选择的***.LNT均会被存放到这个路径下。

5)接着会让你选择一个的内存模型,可以根据自己程序区和数据区的实际大小选择一个恰当的内存模型。

内存模型的选项会体现在STD.LNT文件中。

缺省选择32-bitFlatModel.,然后选下一步;

图2.2.5

6)选完内存模型后,会看到一个库类型的列表,在这里选择一个或多个编译时使用的库。

建议选择Microsoft'sFoundationClasslibrary和WindowsNT,Windows32-bit,如果你用到了StandardTemplateLibrary,当然也选上,选择下一步;

图2.2.6

说明:

各种库的配置文件名为lib-xxx.lnt,配置向导会把选中的库的lnt配置文件拷贝到配置路径下。

7)接着是让你选择为使用C/C++编程提出过重要建议的作者,选择的某作者后,他提出的编程建议方面的选项将被打开,作者建议的配置名为AU-xxx.LNT。

建议全部选择,选择下一步;

图2.2.7

说明:

同样,选中作者建议的AU-xxx.LNT,也会被配置向导拷贝到配置路径下。

8)下一步是选择用何种方式设置包含文件目录。

这里我们选择用-i方式协助我们来设置,然后选择下一步;

图2.2.8

说明:

这里有两种选项:

第一种选项是使用-i选项协助我们设置,-i选项体现在STD.LNT文件中,每个目录前以-i引导,目录间以空格分隔。

第二种是跳过这一步,手工设置。

建议选择第一种。

9)如果步骤8中选择使用-i选项,安装程序会接着让你输入包含文件所在的目录。

在下面的文本框里,可手工输入文件包含路径,用分号“;”或用ctrl+Enter换行来分割多个包含路径。

或者可以点中Brows,在目录树中直接选择。

填完后选择下一步;

图2.2.9

说明:

如果不输入包含文件目录,直接选择下一步,在安装完成后在std.lnt文件中手工添加,注意如果目录名中有长文件名,使用时要加上双引号””,如-i”E:

\ProgramFiles\MSVC\VC98\Indlue”。

10)然后出现以下对话框,表示std_a.lnt,std.lnt在配置路径下已被创建,这里的std.lnt实际上就是std_a.lnt的一个拷贝,只是在缺省方式下,lint时使用的配置文件是std.lnt;

图2.2.10

选择确定后,这里将会问你是否进行另一个编译环境的配置。

这里我们选择否。

图2.2.11

说明:

如果选是,将会从第4步开始进行配置,在配置完了包含路径后,会出现下面的对话框,表示另一个编译环境的std_b.lnt配置文件在配置路径下被创建,并且问你是否要用这个文件替换已经存在的std.lnt,以使得最后配置的编译环境的配置成为lint时的缺省配置。

图2.2.12

11)接下来将会准备产生一个控制全局编译信息显示情况的选项文件OPTIONS.LNT,这里选择No,即不取消这些选项。

图2.2.13

说明:

该文件的产生方式有两种,一种是安装程序对几个核心选项逐一解释并提问你是否取消该选项,如果你选择取消,则会体现在OPTIONS.LNT文件中,具体体现方式是在该类信息编码前加-e,后面有一系列逐一选择核心选项的过程。

如果选择第二种选择方式,安装文件会先生成一个空的OPTIONS.LNT文件,等你以后在实际应用时加入必要的选项。

12)接着选择所支持的集成开发环境选项,可选多个或一个也不选,PC-LINT提供了集成在多种开发环境中工作的功能,例如可集成在VC、BC、SourceInsight中。

这里我们选择MSVC++6,这样env-v6.lnt就会被拷贝到配置路径中。

图2.2.14

13)安装程序会生成一个LIN.BAT文件,该文件是运行PC-LINT的批处理文件,为了使该文件能在任何路径下运行,安装程序提供了两种方法供你选择。

第一种方法是让你选择把LIN.BAT拷贝到任何一个PATH目录下。

第二种方法是生成一个LSET.BAT文件,在每次使用PC-LINT前先运行它来设置路径,或者把LSET.BAT文件的内容拷贝到AUTOEXEC.BAT文件中。

建议选择第一种方法,指定的目录为安装目录。

图2.2.15

图2.2.16

14)配置完毕。

图2.2.17

说明:

以上配置过程中在配置路径下产生的多个*.lnt文件,除了std.lnt,std_a.lnt,std_b.lnt,option.lnt为配置向导所生成,其它co-xxx.lnt,lib-xxx.lnt,env-xxx.lnt均是从C:

\Lint8\lnt中拷贝出来的,在这个目录下还有其它PCLint所支持的编译器、库及集成开发环境的lnt配置文件,所有的lnt文件均为文本文件。

上面的配置方法适合于刚开始接触PC-lint时使用,对于熟练的使用者可以直接编辑、编写各*.lnt配置文件安成上面的配置工作,或者定制出更适合自己使用的配置环境。

3.使用方法

3.1命令行方式

命令行的使用方式是PC-lint最基本的使用方式,也是其他各种集成使用方式的基础,通过命令行可以完成PC-lint的全部代码分析工作。

PC-lint的命令行有下列形式:

Lint-ntoptionfile1[file1file3…]

其中的Lint-nt是PC-lint的可执行程序(见2.1安装),它完成PC-lint的基本功能;option代表PC-lint可接受的各种选项,这是PC-lint最为复杂的部分,它的选项有300多种,可以分为:

错误信息禁止选项、变量类型大小选项、冗余信息选项、标志选项、输出格式选项和其他选项等几类,后面会有更多的介绍;file为待检查的源文件。

另外值得注意的一点是,在命令行中可以加入前面提到的*.lnt配置文件名,并可以把它看作是命令行的扩展,其中配置的各种选项和文件列表,就和写在命令行中具有一样的效果。

3.2集成到IDE方式

3.2.1集成到VC中

在集成开发环境中,PC-Lint8.0对VC++6和VC++7.0的支持是最完善的,支持直接从VC的工程文件(VC6是*.dsp,VC7是*.vcproj)导出对应工程的.Lnt文件,此文件包含了工程设置中的预编译宏,头文件包含路径,源文件名,无需人工编写工程的.Lnt文件。

下面是集成到的VC6中的tools设置说明,参见C:

\Lint8\lnt\env-vc6.lnt中的注释:

导出当前工程的.lnt文件(用来导出工程设置和源文件名,头文件包含路径),下面的对话框点击菜单的Tools->Customize->Tools可以看到。

图3.2.1.1

PC_LINT8.0ExportProject.Lnt

Command:

C:

\PCLint8\LINT-NT.EXE

Arguments:

+linebuf$(TargetName).dsp>$(TargetName).lnt

Initialdirectory:

$(TargetDir)\..

当修改过工程设置中的头文件包含路径、预编译宏或新增源文件后,需要重新导出工程的lnt文件,否则修改后的设置无法自动体现在工程的lnt文件中。

以上设置只要修改Command中的Lint-nt.exe所在路径即可。

执行过这个命令后,$(TargetName).lnt被放到$(TargetName).dsp所在目录中($(TargetDir)\..下),如果成功,打印出的返回值为0,如果失败则返回非零值,具体出错信息需查看$(TargetDir)\..\$(TargetName).lnt文件内容。

其中$(…)的字串为VC的参数宏,调用工具命令时VC将它们替换为对应的字符串。

$(TargetName)为当前激活的工程名(通过菜单Project->SetActiveProject设置当前激活工程,或在WorkSpace的工程树上右键对应的工程选择SetasActiveProjec),$(TargetDir)为当前激活工程输出目标文件所在路径(一般缺省为工程所在目录下的Debug或Release目录),具体参数宏的含义说明参考MSDN中的VC的使用指南。

在Initialdirectory的$(TargetDir)\..表示在这个目录下执行此命令。

注:

参数+linebuf表示加倍行缓冲的大小,最初是600bytes。

行缓冲用于存放当前行和你读到的最长行的信息。

 

检查当前激活工程中当前窗口中的源文件。

图3.2.1.2

PC_LINT8.0ForUnitCheck

Command:

C:

\PCLint8\LINT-NT.EXE

Arguments:

-i"C:

\PCLint8"-ustd.lntenv-vc6.lnt$(TargetName).lnt"$(FilePath)"

Initialdirectory:

$(TargetDir)\..

注意这一步最容易出错误。

与。

,路径不同,会出现找不到头文件的路径的情况

执行此命令前提是$(TargetDir)\..目录下已经有工程的$(TargetName).lnt文件,这个文件在步骤1中生成。

第一个参数-i"C:

\PCLint8"为lint搜索*.lnt文件的目录,这里就是我们的配置路径。

std.lnt就是前面配置过程中生成编译环境的配置文件,如果有需要支持多个编译环境,可以直接改成对应的配置文件名,例如这里可以改为std_a.lnt,表示使用std_a.lnt中所配置的编译环境设置。

最后一个参数"$(FilePath)"就是当前窗口中的带路径的源文件名。

需要注意的是,当前窗口中打开的源文件一定要属于当前激活的工程,否则lint可能会出错。

检查当前激活工程中的所有源文件。

图3.2.1.3

PC_LINT8.0ForProjectCheck

Command:

C:

\PCLint8\LINT-NT.EXE

Arguments:

+ffn-i"C:

\PCLint8"std.lntenv-vc6.lnt$(TargetName).lnt

Initialdirectory:

$(TargetDir)\..

执行此命令前提是$(TargetDir)\..目录下已经有工程的$(TargetName).lnt文件,这个文件在步骤1中生成。

此命令把$(TargetName).lnt中所包含的源文件lint一遍,如果工程比较大的话,一般输出的内容会超过VC的输出窗口的缓冲区大小,导致只能看到后面一部分Lint的信息,可以把Arguments改为

+ffn-i"C:

\PCLint8"std.lntenv-vc6.lnt$(TargetName).lnt>$(TargetName).txt

把结果输出到一个名为$(TargetName).txt的文件里。

注:

参数中的+ffn表示FullFileNames,可被用于控制是否使用的完整路径名称表示。

3.2.2集成到CB中

从PC-Lint8.0j版本开始,支持从C++Builde6的工程文件.bpr导出工程的Lint配置。

自动导出C++Builder6的工程设置lnt文件的方法参见C:

\Lint8\read80.txt中的说明,下面是集成到的CBuilder6中的tools设置说明:

运行C:

\Lint8\Config.exe将lint环境配置为C++Builder的。

要求需要lint的工程的工程文件.bpr,源文件.c、.cpp和最后工程生成的最终文件这3者要在同一个目录下,否则下面说明中的Workingdir要手工修改。

导出当前工程的.lnt文件(用来导出工程设置和源文件名,头文件包含路径):

从C++Builder的Tools菜单中选择“ConfigureTools”命令项,在打开的ToolOptions对话框中点击Add按钮。

按图填入各项参数。

由于CBuilder6对命令行参数传递重定向命令的处理有问题,所以还需要编写一个LINTEXP.BAT完成此功能。

图中各参数的内容参见后面的LINTEXP.BAT批处理文件内容的注释。

图3.2.2.1

LINTEXP.BAT的内容如下:

@echooff

remTitle:

&ExportProject.Lntfile

remProgram:

E:

\Borland\CBuilder6\Bin\LINTEXP.BAT

remParameters:

$NAMEONLY($EXENAME).bpr$NAMEONLY($EXENAME).lnt

@echoon

C:

\Lint8\LINT-NT.EXE+fpa-d"BCB=e:

\\borland\\cbuilder6"%1>%2

其中E:

\Borland\CBuilder6为C++Builder6的安装目录,需根据实际情况修改。

$NAMEONLY()是CBuilder6提供的一个宏函数,将文件名的后缀去掉,$EXENAME代表了工程最后生成的文件名,这里要求它和工程的.bpr去掉后缀的文件名同名。

检查当前工程中当前窗口中的源文件:

图3.2.2.2

Title:

LintForCurrentFile

Program:

C:

\Lint8\LINT-NT.EXE

Parameters:

$SAVE-u-v-iC:

\Lint8stdenv-cb$NAMEONLY($EXENAME).lnt$EDNAME

和VC6的集成方法一样,由于参数中需要工程的lnt文件,执行此命令前提是源文件所在目录下已经有工程的$NAMEONLY($EXENAME).lnt文件,这个文件在步骤3中生成。

其中$EDNAME表示当前编辑的源文件名。

检查当前工程中的所有源文件。

图3.2.2.3

Title:

&LintForCurrentProject

Program:

C:

\Lint8\LINT-NT.EXE

Parameters:

$SAVEALL-v-i"C:

\Lint8"stdenv-cb$NAMEONLY($EXENAME).lnt

执行此命令前提是源文件所在目录下已经有工程的$NAMEONLY($EXENAME).lnt文件,这个文件在步骤3中生成。

设置BuildTool在ProjectManager中检查指定的单个源文件:

从C++Builder的Tools菜单中选择“BuildTools”命令项,在打开的BuildTools对话框中点击Add按钮。

按图填入各项参数。

图3.2.2.4

Title:

Lint

OtherExtensions:

.cpp;.c;.cxx

CommandLine:

C:

\Lint8\LINT-NT.EXE-u-i"C:

\Lint8"std.lntenv-cb.lnt-i$INCLUDEPATH-D$DEFINE$NAME$SAVE

其中$INCLUDEPATH为工程设置中的include路径,$DEFINE为工程设置的预编译宏。

添加后,如图在ProjectManager中的源文件上点击鼠标右键,选择Lint就开始检查选中的文件了,输出信息在Build窗口。

图3.2.2.5

3.2.3集成到SI中

SourceInsight的集成方法参见C:

\Lint8\lnt\env-si.lnt中的注释。

从Options菜单中选择“Custom Commands”命令项。

点击Add…。

在Name栏中输入“PC-lint unitcheck”,原则上这个名称可以随便起,只要你能搞清楚它的含义就可以了。

在Run栏中输入“C:

\Lint8\lint-nt -u -iC:

\Lint8\ std env-si %f”其中C:

\Lint8是你PC-LINT的安装目录。

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

在Control栏中选择“Save Files First”。

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

在Pattern栏中输入“^\([^ ]*\) \([0-9]+\)”。

点Close键加入该命令。

如下图:

图3.2.3.1

使用时,在Source Insight下打开要LINT的文件,打开Options菜单中的“Custom Commands”命令项,在“Command”栏中选择“PC-lint unit check”命令运行即可。

请注意,不论你怎样配置参数一定不要忘记了将env-si.lnt包含在你的配置文件里,否则就无法进行错误信息和程序的自动对应了。

用Menu命令把PC_Lint添加到菜单中。

图3.2.3.2

 

至此,你可以运行sourceinsight下集成的PC-Lint功能完成对代码的走查,并且很方便的找到错误信息的位置。

图3.2.3.3

在错误信息处点击旁边的红色图标,就会自己跳转至错误出现处。

上图就是一个不安全变量转换的警告信息。

以上是对在sourceinsight3.5中使用集成PC-lint的一个总结。

我们可以看到该方式使用PC-lint简单易用,容易查找到错误,但考虑只能做当前文件的单元检查,需要自己指定Include目录和需要自己定义相关的宏等,设置过程比较麻烦,并且不够通用。

此方式适合个人维护自己的代码用,对于整个部门的代码的走查,还是采取makefile的方式比较好。

3.2.4集成到UE中

图3.2.4.1

(1)从UltraEdit的<高级>菜单中进入<工具配置>

(2)<菜单项目名>栏输入“PC-lintunitcheck”

(3)<命令行>栏输入以下命令:

C:

\PCLint8\LINT-NT–u-iC:

\PCLint8\si\stdenv-si%f

其中,C:

\PCLint8是PC-Lint的安装目录

(4)<工作目录>栏输入以下路径:

x:

\code

(5)选中<先保存所有文件>的复选框

(6)在<命令输出>栏中,选中<输出到列表>和<捕捉输出>

(7)点<插入>将命令行插入UltraEdit的菜单,此时在UltraEdit的<高级>菜单中会增加一个栏目,点击该栏目即可对当前文件执行PC-lint。

检查的执行结果如下图所示:

图3.2.4.2

3.3makefile方式

这里makefile指的是一类文件,用在C/C++的Make工具中,Make工具通过makefile文件来描述源程序之间的相互关系,并自动维

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1