VC中多文件工程的PCLint使用详解

2016-02-19 20:12 40 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的VC中多文件工程的PCLint使用详解,希望大家看完后能赶快学习起来。

【 tulaoshi.com - 编程语言 】

1.安装

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

 我使用的是PC.Lint.v8.00e,是不用安装的版本。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

 解开到E:PC.Lint.v8.00e目录,可执行文件为Lint.exe(lint-nt.exe与其相同,可能为NT平台用的,在Win2000下都可运行)。
 子目录lnt内是检查的规则及选项文件,这两种文件扩展名全为.lnt。

2.准备自己工程的选项文件

 在E:PC.Lint.v8.00elnt下新建MyProj.lnt文本文件,我们将自己工程的很多头文件目录,在其中一一列出来,内容如下:
 
 std.lnt/*注释:包含的规则和/或选项文件*/
 env-vc6.lnt
 /*下面为各头文件目录,可以在字串中不要双引号,可以有多行*/
 -i"C:MyProjIncludeA" -i"C:MyProjIncludeB" -iC:MyProjIncludeC
 -iC:MyProjIncludeD
 -e641//另一种注释//这是省略#641错误
 指明各头文件目录很重要。头文件各目录的名称可能在VC的ProjectProject SettingsProject Options栏中:
  /I "/Include/PS",可供借鉴(相对路径暂未测试)。
  当后面运行Lint时出现无法打开某个头文件时,需要不断添加头文件所在目录的名称到本选项文件中。

3.在VC中运行PCLint(针对单个文件但需包含多个头文件目录):

    A 点击Tools/Customize/Tools出现定制窗口
    B 在Menu contents中双击下面的空白拦,输入拟新增的Tool名称:PCLint
    C 双击PClint项,在Command中填入要调用的.exe文件名:lint
      Arguments:中填入:-i"E:PC.Lint.v8.00elnt" MyProj.lnt $(FilePath)
      $(FilePath)这个字串是个宏名,也可以通过点击右边的三角箭头选择;可能为要检查的本文件的路径加文件名,而
      不能是$(FileName)!!!因为它可能只是文件名而不带路径,将导致使用时说无法发现!
      另外,MyProj.lnt这个选项文件必须在$(FilePath)之前。
      Initial Directory项:在Arguments项中若缺少-i"E:PC.Lint.v8.00elnt"时将报无法找到各个.lnt文件,可在此
      栏填E:PC.Lint.v8.00elnt来指定。
      选中"Use Output Window" (这将使PCLint运行的结果在VC下方Output窗口中,双击行号还可以跳到指定行)
    D 打开一个项目,让焦点位于某个源程序编辑窗口,点击Tools/pclint菜单即可

直到VC Output窗口中出现Tool returned code: ,才算Tool运行完,若未运行完,可能在再点击PCLint时报错。

4.网上搜到的VC环境多个文件同时Lint的方法,大致为找到各个.c文件,将各文件名经xargs传给lint来实现。但需要find,xargs等
命令,似乎需要模拟unix环境的软件支持中才有,我装的Cygwin的环境中对find命令后的格式有问题,无法支持unix中的
find . -name *.c,故无法由此找到各个.c文件名。但可以用Cygwin的ls命令来代替find。

 

   A 点击Tools/Customize/Tools出现定制窗口
  B 在Menu contents中双击空白拦,输入:PCLint-project
  C 双击PCLint-project项,在Command:中填入:find
      Arguments:中填入:$(FileDir) -name *.c | xargs pclint -i"c:unixusr" -u std.lnt env-vc6.lnt
      选中"Use Output Window"
  D 打开一个项目,让焦点位于最项层目前的一个Source Window中,点击Tools/PCLint-project菜单即可

 
  A 点击Tools/Customize/Tools出现定制窗口
  B 在Menu contents中双击空白拦,输入:PCLint-Proj
  C 双击PCLint-Proj项,在Command:中填入:ls
      Arguments:中填入:*.c |xargs lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt
      Initial Directory项:本栏填写工程的一个源文件子目录(保证在Arguments项中有-i"E:PC.Lint.v8.00elnt")
      选中"Use Output Window"
  D 打开一个项目,让焦点位于最顶层目前的一个Source Window中,点击Tools/PCLint-Proj菜单即可

 
  A 在MyProj.lnt末尾添加一行 *.c (即目标为本目录下所有.c文件)
  B 点击Tools/Customize/Tools出现定制窗口
  C 在Menu contents中双击空白拦,输入:PCLint-Proj
  D 双击PCLint-Proj项,在Command:中填入:lint
      Arguments:中填入:-i"E:PC.Lint.v8.00elnt" MyProj.lnt
      Initial Directory项:本栏填写工程的一个源文件子目录(保证在Arguments项中有-i"E:PC.Lint.v8.00elnt")
      选中"Use Output Window"
  E 打开一个项目,让焦点位于最项层目前的一个Source Window中,点击Tools/PCLint-Proj菜单即可

上述方法中的ls,xargs等命令位于Cygwin的目录中,需要将路径添加到系统的PATH中:
  "我的电脑"(右击鼠标)-"属性"-"高级"-"环境变量"-"系统变量"-"Path"
    加入"C:cygwinin"重启生效。
 ls *.c将同时找到.c文件和.cpp文件,但是也会将非工程所需的.c文件编译进来,需要手工把文件转走。
 另外,这种方法一次只能Lint一个目录,每完成一个目录就要重新设置Initial Directory项为新的要检查的目录。

5.在DOS窗口中对一个目录多个文件进行Lint
1)基于Cygwin
cd C:MyProjSrcA
ls *.c | xargs lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt LintOutput.txt
ls *.c 也可以用DOS命令dir *.c/B来替换,/B的意思是仅列出各文件名。LintOutput.txt的意思是将Lint结果输出到
LintOutput.txt文件中。
2)无Cygwin支持
cd C:MyProjSrcA
dir *.c /B
将所有列出的.c文件名称复制到E:PC.Lint.v8.00elntMyProj.lnt中,内容如下:
 std.lnt/*注释:包含的规则和/或选项文件*/
 env-vc6.lnt
 /*下面为各头文件目录,可以在字串中不要双引号,可以有多行*/
 -i"C:MyProjIncludeA" -i"C:MyProjIncludeB" -iC:MyProjIncludeC
 -iC:MyProjIncludeD
 -e641//另一种注释//这是省略#641错误
 a.c //指定要Lint的文件
 b.c
 c.c
 最后几行指定的要Lint之文件也可以用通配符,如:
 *.c
然后直接运行 lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt LintOutput.txt

来源:https://www.tulaoshi.com/n/20160219/1622995.html

延伸阅读
很早以前在某大学BBS上下载的。刚才整理文件,又看到它了。贴上去,大家共享。 刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="程佩君"; char temp[200]; char *buf; ...
VC6中使用CHtmlView在对话框控制中显示HTML文件              编译/赵湘宁       本文的例子程序    在Visual Studio 6.0中出现了一个新类CHtmlView,利用这个类,我们可以实现在对话框的控制中显示HTML文件。           要想使用CHtmlV...
c++中.dll与.lib文件的生成与使用的详解 -------------------------------------------------------------------------------- 两种库: • 包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 • 包含函数代码本身,在编译时直接...
Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 1、定义常量 (1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。  TYPE const ValueName = value;      const TYPE ValueName =...
每一个IOS程序都有一个UIWindow,在我们通过模板简历工程的时候,xcode会自动帮我们生成一个window,然后让它变成keyWindow并显示出来。这一切都来的那么自然,以至于我们大部分时候都忽略了自己也是可以创建UIWindow对象。   通常在我们需要自定义UIAlertView的时候(IOS 5.0以前AlertView的背景样式等都不能换)我们可以使用UIWindo...

经验教程

183

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部