写代码之际突然想起了pc-lint这个"古董级"的代码静态分析工具;
下午机房的服务器歇菜了,没法调试游戏,刚好抽出时间来研究一下pc-lint集成在SourceInsight中;
当然百度上也有许多集成的方法,但是经常有某些错误,导致进程无法lint的正常执行;
分3块部分来讲,先说第一块:
一:安装pclint和SourceInsight
安装pclint: 上http://download.csdn.net/detail/u012329294/8280039 或者直接百度
安装SourceInsight: http://rj.baidu.com/soft/detail/10258.html?ald 或者直接百度
配置SourceInsight可以参考我去年写的一篇SourceInsight安装配置指南;
pclint主要配置是 std.lnt ---主入口
其中要配置一些其他的.lnt文件,如果在之后的运行过程中提示找不到lnt文件但是实际文件存在的情况,可以手动拷贝到std.lnt文件中; 在最后加上引用lib文件的路径作为头文件引用路径:
我这里已经写好了,大家直接拷贝就行了;
std.lnt文件我待会儿也会发在附件中;
二:将pclint集成到SourceInsight
1.打开Options中的Custom Commonds
2.随意起个名字比如pclint;,再点击Add
3.Run中填: C:\lint\lint-nt -u C:\lint\std.lnt C:\lint\env-vc6.lnt %f
4.勾选Iconic Window; Capture Output; Parse Links in OutPut; File,then Line; 4个选项
5.Close
6.打开MenuAssignments界面;输入自己刚刚取的名字
7.在MenuAssignments界面选择Menu ,选择Help,选择<end of menu>
8.点击insert;
9.你可以看看在Help界面,有没有出现刚刚你自己定义的名字
大功告成;
三.开始运行pclint了;
1.在SourceInsight中打开你想要检查的cpp文件,
2.Help->pclint;开始执行了
3.执行完毕后会弹出link的分析界面
那就说明lint完毕了;
四.简单分析下,拿自己代码做例子吧;
1.上图
![](https://i-blog.csdnimg.cn/blog_migrate/9906c096aa4ddcfb54019e1d94fd4543.png)
我圈了4个红色的地方;
然后再来看看我写的代码:(提示:::点击左边的小红箭头可以直接跳转到指定代码位置!!)
红圈1:
能看出来后面的return FALSE; 是肯定走不到的分支;
红圈4:
这个比较严重,我发现我的stActiveSingle变量居然没有用过....
红圈2:
代码是指针的直接偏移指定字节数得到结构体指针;还是很可能野指针的,但是这个毕竟按照消息头规则来的,那应该是没问题;
红圈3: 2
error 641: (Warning -- Converting enum 'TCBY_ENUM_ACTIVETYPE' to int)
不能直接把enum转成int;
五.分析完毕
附:lint文件内容:
// Microsoft C and Visual C++ 6.x, -si4 -sp4, lib-w32.lnt
// Standard lint op