• 会员登陆 | 会员注册
  • 返回首页

    Lint的使用方法(一)

    时间:2013-03-22 18:00来源:未知 作者:admin 点击:
    13)格式十三: --emacro( {#}, symbol, ) 2.2.4 选项的分类 PC-lint的选项有300多种,可以分为下面几类: (1)禁止错误信息 选项开头使用 -e 可以禁止指定的错误消息,使用 +e 恢复指定的错误消息。如果禁止消息,只不过不让消息输出,并不影响PC-lint的处理过
      

    13)格式十三:
    --emacro( {#}, symbol, )

    2.2.4 选项的分类
    PC-lint的选项有300多种,可以分为下面几类:
    (1)禁止错误信息
    选项开头使用 -e 可以禁止指定的错误消息,使用 +e 恢复指定的错误消息。如果禁止消息,只不过不让消息输出,并不影响PC-lint的处理过程。顺便提一下前面提到的 -wLevl ,这个选项是禁用指定级别及以上的消息的显示。

    16)格式十六:
    禁止和恢复在扩展模板(expanding templates)时的错误消息。

    2.PC-lint的用法

    10)格式十:
    +elib( # [, #]) re-enables

    1.3.2 对一个项目进行静态代码分析
    下面的步骤是在1.2.2的基础上进行的。
    (1)打开So**ceInsight, 选择OptionsmandsAdd, 输入pclint_prj
    (2)在Run中填写:
    (3)Dir不用填写,将Iconic Window, Capt**e Output, Parse Links in OutPut,三项勾选上,并将File,then Line的单项选择也选上。
    (4)**点右侧的Menu在弹出的界面中在下拉框Menu中选择View,**在下面的Menu Cotents中选择 end of menu右侧点Insert即可。
    (5)可以在So**ce Insight 3.5菜单View下看到刚才新建的项pclint_prj,打开项目,运行pclint_prj即可对项目进行静态代码分析了。

    1.3 将PC-lint集成到So**ce Insight 3.5中
    1.3.1 对单个C/C++进行静态代码分析
    (1)打开So**ceInsight, 选择OptionsmandsAdd, 输入pclint
    (2)在Run中填写: D:/PC-Lint/lint-nt -u D:/PC-Lint/std.lnt D:/PC-Lint/env-vc6.lnt %f
    (3)Dir不用填写,将Iconic Window, Capt**e Output, Parse Links in OutPut,三项勾选上,并将File,then Line的单项选择也选上。
    (4)**点右侧的Menu在弹出的界面中在下拉框Menu中选择View,**在下面的Menu Cotents中选择 end of menu右侧点Insert即可。
    (5)可以在So**ce Insight 3.5菜单View下看到刚才新建的项pclint,打开项目的任意一个待分析的源文件,运行pclint即可进行静态代码分析了。

    14)格式十四:
    禁止和恢复指定的符号的错误消息。举个C++的例子(实际应用中不太可能出现):
    分析结果中会提示某行的member X::f(double, int)没有被引用,为了屏蔽这个消息,你可以使用
    符号的完整签名为X::f(double, int),然而符号的名字为X::f,而且可以使用符号的名字来禁止错误消息的出现。另外,-esym 和 -e# 选项是**的,举个例子:
    对于alpha来说,它禁止了编号为714的错误消息,第二个选项并不会恢复编号为714的错误消息,除非前面有个对应的-esym(714,alpha)。

    15)格式十五:
    +etd( TypeDiff [] ) re-enables

    2、在eclipse安装目录修改配置文件:找到以下文件:eclipse\config**ation.settings\org.eclipse.ui.ide.prefs 打开后,在后面补充改刚刚配置的环境变量。

    2)格式二:
    -e(#[,#]) 为下一个表达式禁止指定的错误消息,Lint的使用方法(一),在这个表达式结束后被禁止的错误消息自动恢复,#代表数字或是数字匹配符,错误消息的编号为#。
    举个例子:
    它等价于下面的**:
    前一种方法更简单且更有效。

    (感谢参考的资料作者: )

    1)格式一:
    -e# 禁止指定的错误消息,#代表数字或是数字匹配符,错误消息的编号为#。
    +e# 恢复指定的错误消息,错误消息的编号为#。

    2.2.3 选项中的空格
    因为空格是用来分隔选项的,除此之外只能出现在圆括号的旁边或是空格自身被引用(例如******** new按语法要求中间就有空格)。举个例子:
    对于第三个,空格出现在圆括号的旁边,也出现在自身被引用的地方(******** new)。另外********和new之间出现两个空格也是不合法的,因为它违反了语法规则。另外,也可以使用双引号( )来保护空格,例如:
    - dWORD=unsigned short

    12)格式十二:
    +emacro( #, symbol)

    如我补充的是:ANDROID_SDK_Home=E\:\\java\\androidsdk (注意斜杠 式)

    **在Use Output Window 打上勾即可。
    (4)在VC6.0的菜单栏Tools下多了一个pclint_prj选项,打开一个VC项目后,就可以使用该选项对VC项目进行静态代码分析了。
    注意: Argument 项填的内容一定要注意参数中的路径,如果你不使用上述路径,可以用新路径将参数中的路径替换,以免重新写参数而导致出错。

    2.2.2 选项的规则
    通过使用加号和减号以注释的形式插入代码中,来恢复和屏蔽指定的被检查的选项。格式如下:
    或者
    注意:lint必须是小写,选项的一行不能超过80个字符,否则导致致命的错误,错误信息的编号就是323。如果选项确实有很长,可以通过换行的方式来实现。另外屏蔽和恢复的选项的代码可以放在宏定义中,宏被展开后,这些选项会生效。

    6)格式六:
    !e# 仅对其所在行有效。
    在这个例子中,仅对那一行禁止编号为720 的错误消息。看一下C语言的代码的用法:
    如果有更多的错误信息要禁止,而又无法使用通配符,则可以使用下面的方法:
    n = u / -1; //lint !e573 !e721

    5)格式五:
    --e{ # [, #] } 对于其所处的 {} 号区域内的整个代码体有效。 {} 号区域可能是复杂的**、函数体、C++的类,结构体或联合体的定义、C++的命名空间等。如果这个选项放在一个模块前,而模块前没有 {},则对整个模块生效。

    PC-Lint是一款C/C++软件代码静态分析工具,不仅可以检查一般的语法错误,还可以检查潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量、使用空指针等。在单元测试前使用PC-Lint来检查代码,可以提前发现程序中的潜在的错误,提高代码
    的质量。
    本文主要从两个方面介绍PC-lint,第一部分是在与不同的工具安装集成,第二部分是PC-lint的使用方法。

    (2)变量类型大小和对齐选项
    1)变量类型大小选项
    这组选项允许设置各种变量类型的大小和对齐方式。由于默认的设置于绝大多数的编译器都是一致的,所以这些参数的单独设置通常是没有必要的。使用变量类型大小的选项是为了特定的架构,而不是本地架构。举个例子,你需要为嵌入式**设置int和pointers通常为16位,那么你应该指定:
    下面的列表,#号代表一个小的整型值,仅举几个:
    -**# 字节的位数为#,默认的是-**8,
    -**o# sizeof(bool)就变为一个参数了,默认值为1,
    -sc# sizeof(char) 就变为 #,默认值为1,
    -slc# sizeof(long char) 就变为 #,默认值为2,
    2)对齐选项
    仅有两个可选择的注释信息来检测不规律的对齐,它们的错误编号是958和959,详细的介绍就省略了吧。

    7)格式七:
    -ealetter 参数不匹配禁止

    举个例子:
    第一行关闭了编号为504的错误消息,最后一个行则重新打开了编号为504的错误消息。其中数字也可以包含匹配符号,'?'匹配单个字符, * 匹配多个字符。
    比如:
    (1)-e7则关闭了700~799这个范围内的错误消息。
    (2)-e1*, 则关闭了所有以1开头的编号的错误消息。
    同样匹配符也能使用在-esymelibelibsymefileefuncemacroetemplatee(#)e(#)e{#} and e{#}.

    1. 安装PC-lint及如何集成到VC6.0和So**ce Insight
    1.1 安装PC-lint
    (1)下载PC-lint(PC-Lint 8.00w)。
    (2)将下载的压缩包解压至到D盘,并对文件夹重命名为PC-Lint,这样路径为D:/PC-Lint。
    备注:这也叫安?:)呵呵,似乎算免安装更合适吧。
    1.2 将PC-lint集成到VC6.0
    1.2.1 对单个C/C++进行静态代码分析
    (1)将D:/PC-Lint/lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt复制到D:/PC-Lint/下。
    (2)打开co-msc60.lnt,将该文件倒数第二行 lib-ole.lnt 的内容改为 D:/PC-Lint/lnt/lib-ole.lnt ,也就是在前面加上绝对路径,以免在后面的步骤中无法找到该文件。
    (3)在D:/PC-Lint/下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下:

    3)格式三:
    --e( # [,#]) 比上面的那个管的更宽一些,它对整个表达式有效,举个例子就明白它与上面的区别了。
    举个例子:
    整个表示式是指*(int *)0*(char *)0,下个一表达式指的是*(int *)0。区别一目了然,例子中将禁止两个编号为413 的错误消息, 如果使用 -e(413) ,则只禁止第一个编号为 413 的错误消息。

    4)格式四:
    -e{ # [, #] } 对下一个**或者声明有效
    举个例子:
    通过例子可以看出,这种格式放在函数之前,则对整个函数产生作用2013春季山西省电大统计分校招生,放在赋值**前则只对赋值**起作用,放在if或while前面,则对这一段**起作用。在C++的类定义或命名空间声明前放这么个选项,则将整个类或命名空间内的代码中指定的错误消息给禁止了。

    9)格式九:
    +efunc( #, Symbol [, Symbol]) re-enables

    (3)冗长信息选项
    冗长信息选项采用-v和+v开头来控制,冗长信息指的是在检测过程中产生的一些与编译过程有关的信息,或者说,冗长信息与编译过程中消息的频率和种类有关。如果使用-v,则冗长信息进被发送到标准输出,而是用+v,冗长信息进则会被发送到标准输出和标准错误中。如果要将错误信息重定向到一

    8)格式八:
    +efile( #, file [, file]) re-enables

    2.1 pc-lint目录下几个重要的文件及程序
    lint-nt.exe:PC-lint的可执行程序。
    config.exe: PC-lint的配置文件程序。
    pc-lint.pdf:PC-lint的PDF格式的在线手册,本文的大部分内容是从中得来的。
    msg.txt: 对于错误消息编号的详细解释。
    Lnt/: 这个目录下有些东西还是值得认识一下。
    colnt: 指定的编译器的可选编译文件。
    co.lnt: 通用的可选编译文件。
    slc 非ANSI编译器的标准库文件模块
    sl.c: 非ANSI编译器的通用标准库文件模块
    envlnt:不同平*下的可选文件,包括MS Visual Studio和其他各种编辑工具。
    liblnt:可选文件,新疆昌吉电大, 特定的 有挑战性 的库文件。
    aulnt: 可选文件, 作者们推荐的检测条件。

    对于C语言,1~199是与语法错误;200~299是PC-lint内部错误,应该决不会发生的;300~399是致命错误,通常是由于超越了某些限制;400~699是警告消息,提示被检查的程序中可能存在错误;700~899是提示信息,这些提示信息可能有错误,也可能是合法的程序,取决于个人的编程风格;900~999则是一些称为可选信息,一般不会自动输出。

    注:-i后面的路径名为VC 6.0的安装路径和及其头文件路径;options.lnt可以暂时为空。
    (4)在VC6.0的菜单栏中,ToolsCustomizetools 新建一个名为pclint的项,在下面填入
    项填入: D:/PC-Lint/lint-nt.exe
    Argument 项填入: -u D:/PC-Lint/std.lnt D:/PC-Lint/env-vc6.lnt $(FilePath)

    3、重启eclipse,重建AVD,运行即可成功。界面如下:

    1、设置环境变量:ANDROID_SDK_HOME 为你的SDK目录。如我的是:变量名 ANDROID_SDK_HOME 为 E:\java\androidsdk

    **在Use Output Window 打上勾即可。
    (5)在VC6.0的菜单栏Tools下多了一个pclint选项,打开一个VC项目后,就可以使用该选项对单个C/C++文件进行静态代码分析了。

    PC-lint提供了高级级别设置选项-wLevel,缺省的级别为3级。-w0w1w2w3w4 分别可以生成上述表格中对应告警级别和级别更低的告警,其中级别越低告警越重要。同样,也提供了处理库函数的头文件告警级别的选项-wlib(Level),缺省的级别也是3级,级别对应的含义与前者一样。

    1.2.2 对一个VC6.0项目进行静态代码分析
    下面的步骤是在1.2.1的前三步的基础上进行的。
    (1)先到 ~sy**ng/win32/UnxUtils.zip下载UnxUtils.zip。需要利用unix中的find等命令来查找当前目录下的C和C++文件,**再将它们送给lint程序处理。
    (2)解压UnxUtils.zip到D盘,这样路径为D:/UnxUtils。
    (3)在在VC6.0的菜单栏Tools下多了一个pclint_prj选项,打开一个VC项目后,就可以使用该选项对单个C/C++文件进行静态代码分析了。
    项填入: D:/UnxUtils/usr/local/wbin/find.exe
    Argument 项填入: $(FileDir) -name *.c -o -name *.cpp | D:/UnxUtils/usr/local/wbin/xargs D:/PC-Lint/lint-nt -i D:/UnxUtils/usr/local -u D:/PC-Lint/std.lnt D:/PC-Lint/env-vc6.lnt

    2.2 PC-lint的介绍
    2.2.1 错误信息编号
    对于大部分的错误消息,PC-lint都提供了一个关联的错误编号。小于1000的错误编号是分配给C语言的,1000以上的错误编号则是分配给C++语言的。1000呢?呵呵,被保留了。先看一个表格。
    C C告警级别
    语法错误(Syntax Errors) 1199 10011199 1
    内部错误(Internal Errors) 200299 0
    致命错误(Fatal Errors) 300399 0
    告警(Warnings) 400699 14001699 2
    提示(Informational) 700899 17001899 3
    可选信息(Elective Notes) 900999 19001999 4

    11)格式十一:
    +elibsym( # [, # ]) re-enables

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    最新评论 查看所有评论
    发表评论 查看所有评论
    请自觉遵守互联网相关的政策法规,严禁发布违法言论!
    用户名: 密码: 验证码: