3.2.2在Ultra Editor中集成选取 Menu | Advanced | Tool Configuration …… :
1)点按“Insert",
2)在command line:中填写:c:\lint\lint-nt c:\lint\std.lnt %f
3)在Menu Item中填写:PC-LINT
4)在Command Output中选择: (x) Output to List Box 和 (x) Capture Output
5)点按"OK"如图所示的配置笔者在UE6.0 / NT 4.0 下测试成功。
3.2.3 在MSVC 6.0中集成//这个好使过基本原理是一样的:
1)选取 menu | tools | customize……
2)选取 Tools Tab:
3)点按主对话框上方的虚线小方框 New a tool item
4)输入 name: PC-LINT
5)输入 Command: c:\lint\lint-nt.exe
6)输入 Arguments: c:\lint\std.lnt $(FilePath) //注:替std.lnt为lnt\env-vc6.lnt
7) 选择 (x) Use Output Window
8)Close完成后,在tools菜单下就会有一项PC-LINT选项。
3.3LINT选项LINT选项可以放在注释中,例如:/*lint option1 option2 …… optional commentary */ //lint option1 option2 …… optional commentary选项间要以空格分开,lint命令一定要小写,并且紧跟在/*或//后面,不能有空格。如果选项由类似于操作符和操作数的部分组成,例如-esym(534, printf, scanf, operat or new),其中最后一个选项是operator new,那么在operator和new中间只能有一个空格。
选项还可以放在宏定义中,例如:#define DIVZERO(x) /*lint -save -e54 */ ((x) /o) /*lint -restore */ LINT的选项很多共有300多种,大体可分为以下几类:
1)错误信息禁止选项该类选项是用于禁止生成某类错误信息的选项,最常用的是-e和+e,-e是禁止生成某类错误信息,+e是恢复生成某类错误信息。运行lint目录下的msg.exe可以得到msg.txt文件,这个长达5000行的文件包含了所有的错误信息号和解释。
-w 对于所有大于级别的告警信息都不显示。
-wlib()对于所有大于级别的关于库函数数的告警信息都不显示。我们可以用-wlib(0)来屏蔽所有的库函数的告警信息,-wlib(1)只显示库函数中的句法错误。
-esym(#,) 可以屏蔽对于特定符号的某告警信息。
2)变量类型大小选项不同的目标机、编译系统变量类型的的大小(如短整形变量、整形变量等)会有所不同,该类选项用于为目标机设置变量类型的大小。由于默认的设置与大部分的编译器是匹配的,这些专门的设置通常情况下是不需要的,只在特别的目标机结构中才用。例如一个M680 00目标机,它的int类型和指针类型通常是32bit的,这时你应该使用选项:-si4 -sp4.这些尺寸参数的当前值可以通过help屏来获得,例如可以输入以下命令行:lin -si4 -sp4 ?
3)冗长信息选项冗长信息指的是LINT过程中产生的一些与编译过程有关的信息,而不是真正的告警信息、错误信息等。是否生成这些信息可以通过-v和+v选项来决定。+v是生成这些信息,-v是关闭这些信息,这组选项中除+v外,其它所有选项都可以关闭+v选项。
4)标记选项以+f、++f、-f和——f开头的选项是标记选项。他们的逻辑含义分别如下:+f……:通过把标志置为1而把它置为ON -f……:通过把标志置为0而把它置为OFF ++f……:标志增1——f……:标志减1后面两个用于你想在局部把一个标志置为ON的情况,而不影响全局设置。例如你可以这样使用:/*lint ++flb */ int printf( );/*lint ——flb */标记选项的种类很多,基本含义是用于打开或关闭某类语法情况使用,例如允许使用缩写结构体名称,允许使用无名联合体,把所有模块当作C++编译等。
5)消息显示选项消息显示选项用于定义消息输出格式。主要有消息高度选项、消息宽度选项、消息格式选项等。
6)其它选项其它选项中的种类很多,各种类间差异很大,在这里就不一一介绍了,建议大家看一看《PC-LINT》一书,第五章有对每种选项的详细说明。lint本身也有一些说明信息, lint-n t 2> lint.txt 然后狂按几个回车就可以生成一个lint选项的说明文件。
4.LINT一个工程下的多个C文件4.1为何要LINT多个C文件在程序编码初期,我们关心的可能只是单个C模块种中的语法问题,等到编程后期,对于由多个C模块组成的程序,我们希望了解当把多个模块连接在一起后是否还有存在于模块间的语法问题。这时编译器虽然能给出一些告警,但PC-LINT的连接能给出更多的告警。还有当我们能保证其中的几个模块相对稳定,而另外几个模块仍有问题时可以先将几个稳定的模块编译连接成一个目标文件,文件每次修改完成后先单独编译,然后连接入总的目标文件。
4.2如何LINT一个工程下的多个C文件象我们平时使用的编译工具一样,PC-LINT在编译连接多个C文件时也会先把每个C文件编译生成中间的目标文件*.lob,然后再将所有的LOB文件连接在一起。LOB是Lint Object Mod ule的缩写。这个文件中包含了一个C或C++模块的所有外部信息。生成LOB文件时有三种选项要注意:
第一种是-u,如果要LINT生成LOB文件,就一定要加-u选项;
第二种是-zero或-zero(500)选项,为了保证LOB文件在模块存在错误的情况下也能生成,就一定要加这个选项;
第三种是-oo[(filename)],filename是生成的LOB文件的名称,在-oo后面,可加,也可不加,如不加,则LOB文件名与原C模块的名称相同,例如:lint -u alpha.c -oo(a1)
生成的LOB文件名为:a1.lob lint -u alpha.c -oo生成的LOB文件名为:alpha.lob LINT一个工程下的多个C模块,在用户的源程序目录下一般需要三个文件: 一个选项文件(*.lnt)、一个批处理文件(*.bat)和一个MAKEFILE文件(*.mak)。下面一一讲述如何制作这些文件。
1)选项文件(*.lnt)
选项文件在前面也提到过,你可以把你LINT每个C文件时时用到的所有公共选项罗列在该文件中,选项生效的顺序按照从左到右,从上到下的原则。该类文件可以层层嵌套,嵌套的层数没有限制。例如make.lnt文件:-iC:\lint std.lnt +os(temp)
-e46 +vm -zero
2)批处理文件(*.bat)
制作批处理文件时要注意要在该文件中调用TCMAKE.EXE文件和MAKEFILE文件,例如lintma ke.mak文件:
MAKEFILE使用的TCMAKE的语法,和我们平时开发编译时使用的MAKEFILE文件语法格式一样,例如下面的lintmake.mak文件:
4.3简单的LINT多个文件假设我们的工程不复杂,我们可以负担起每次都将所有的文件都lint一遍的开销,也可以不使用上面的正规用法。笔者在实践中发现,将所有的*.c文件放在一个lint命令中,同样能完成lint整个工程的目的。
如:lint-nt c:\lint\std.lnt AllMySource.lnt在AllMySource.lnt中包括你的工程中的所有源文件:a1.c a2.c a3.c需要注意的是,在std.lnt文件中就不需要-u选项了。因为我们已经提供了所有的信息