代码分析

 

利用SourceInsight与PC-LINT集成做代码分析

1)从Options菜单中选择“Custom Commands”命令项。
2)在Name栏中输入“PC-lint ”,这个名称可以随便起,只要清晰即可。
3)在Run栏中输入“c:\lint\lint-nt -u -ic:\lint std env-si %f”其中c:\lint是你PC-LINT的安装目录。
4)在Output栏中选择“Iconic Window”、“Capture Output”。
5)在Control栏中选择“Save Files First”。
6)在Source Links in Output栏中选择“Parse Links in Output”、“File,then Line”。
7)在Pattern栏中输入“^\([^ ]*\) \([0-9]+\)”。
8)点Add键加入该命令。
9)使用时,在Source Insight下打开要LINT的文件,打开Options菜单中的“Custom Commands”命令项,在“Command”栏中选择“PC-lint unit check”命令运行即可。可以添加运行PC-LINT的快捷键:打开Options菜单中的“Custom Commands”命令项,点击该对话框中的”keys”,在弹出的对话框中选中PC-LINT命令,点击”Assign New Key…”菜单,会提示你在键盘上按快捷键,此时在键盘上同时按下“ctrl、shift和p”键,点”OK”,就可以用ctrl+shift+p运行PC-LINT了。
在sourceinsight下打开一个文件,按下”ctrl+shift+p”,编译开始,会出现一个dos窗口,在dos窗口中可看到头文件找不到,那是因为环境变量没有设置,打开pc-lint安装目录下std.lnt文件,在文件尾以”-I ”方式加上所需的头文件所在的路径,如:-I C:\ISIPPC\diab\4.2b\include -IC:\Tornado\host\diab\include 再按ctrl+shift+p就可以查看查错结果了。

 

 

 

 

 

 

 

 

 

 

原来是这样解决的,多谢各位啦:)

一、安装。
1。首先,将本目录下的文件全部拷贝到c:\lint之下。
2。然后,在Source InSight 中,选择 Option-> Custom Commands... 弹
出“Custom Commands”窗口。
进行如下设置:
1) Command 不要填,Name填 PCLint
2) Run中填:C:\LINT\Lint-nt.exe -ic:\lint\ std.lnt %f
3) 选中以下复选框:
Iconic Window
Capture Output
Save Files First
Wait Until Done
Parse Links in Output
File, then Line
其他复选框不选。
4) Pattern 中填:^\([a-zA-Z0-9].*\)\w\(\w[0-9][0-9]*\w\)
然后点 Add 按钮。
3。最后设置快捷键。
点此窗口中的 Keys... 按钮,在 Commands 框中选“PCLint”,点
"Add " 按钮,然后敲一个热键。建议设为 " Ctrl+Shit+1 ",没有冲
突。最后点 "OK " 键。
4。在“Custom Commands”窗口中点 "Change "按钮。

二、使用
以后,在要 lint 的文件窗口下使用热键 " Ctrl+Shit+1 "就可以使用
PClint 啦。

 

 

 

.安装

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

解开到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菜单即可

【方法1如下:】
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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值