前言

PC-lint是一款小而强大的C/C++静态代码检查工具,它可以检查未初始化变量,数组越界,空指针等编译器很难发现的潜在错误。在很多专业的软件公司如Microsoft,PC-Lint检查无错误无警告是代码首先要过的第一关。

安装配置

有关安装步骤,请参考附录中的文章“静态代码检查工具PC-Lint“的“4 PC-Lint软件使用方法”,不过该文章使用的是VC++ 6.0的开发环境,最新的PC-lint 9.0支持VS2008,可以在安装过程中自己选择。

关于PC-lint和VS2008的集成,请参考PC-Lint安装目录下的env-vc9.lnt文件,里面讲解的非常之详细,不必参考“静态代码检查工具PC-Lint”这篇文章中的该段内容(如果你的E文不是很好,那参考一下中文还是有帮助的)。

在env-vc9.lnt文件中的Simple Check部分,有如下一段内容:

Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemFileName)$(ItemExt)"

建议使用以下一段新的Arguments:

Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemDir) $(ItemFileName)$(ItemExt)"

作用是在检查代码的生成结果中,可以双击某一个检查结果直接定位到代码中的某一行,缺点是检查结果会更长一点,因为它使用了全路径。

依照env-vc9.lnt的说明配置完成后,在VS2008的Tools菜单下会有四个PC-lint的选项,如下图所示。

常见错误

1. 在PC-lint的Configuration向导结束后,会在PC-lint的安装目录下生成std.lnt文件,里面有一行:

options.lnt -si4 -sp4

如果按照“静态代码检查工具PC-Lint“走完所有的标准配置的话,options.lnt会自动生成,但无内容(注释除外),如果中间某一步skip了,可能该文件就不会生成,这时就需要手动创建一个options.lnt文件,或在std.lnt中注释掉options.lnt,否则会在使用PC-lint时会出现找不到options.lnt的错误。

PC-lint的安装包下面还有一个options.lnt文件(非自带),可以直接拷贝到PC-lint安装路径下替换掉原来的文件,里面我已经加了一些屏蔽错误项作为示例。

2. 在使用PC-lint的过程当中,如果发生某个库头文件找不到的错误,可以打开std.nt文件,在后面添加该头文件所在的全路径,格式如下:

-i"D:/WinDDK/7600.16385.0/inc"

3. PC-lint不支持Unicode Codepage 1200和1201,请使用Unicode (UTF-8 with signature) - Codepage 65001.

使用PC-lint

在安装完并配置成功之后,使用PC-lint可以说是易如反掌,只要打开一个VC++工程,单击“Tools”菜单下的四个PC-lint选项即可,以下是这四个选项的使用区别:

1. PC-lint (Simple Check)

只能对单个文件进行检查。

打开一个cpp文件(或头文件),单击PC-lint (Simple Check)即可。

2. PC-lint (Project Creation)

创建工程的文件列表。

打开一个VC++工程,单击PC-lint (Project Creation),然后会有一个(工程名).lnt文件生成到该工程目录下。打开检查一下是否包含了所有的源文件,可以手动修改。

3. PC-lint (Project Check)

对整个工程进行代码检查。

在(工程名).lnt创建以后,直接单击PC-lint (Project Check)即可。

4. PC-lint (Unit Check)

对单个文件进行检查,但是应用了PC-lint (Project Creation)生成的(工程名).lnt文件中的-d和-i选项。

打开一个cpp文件(或头文件),单击PC-lint (Unit Check)即可。

总结

准备好了吗,还不立马赶在领导之前去检查一下你的代码!!!

附录

静态代码检查工具PC-Lint

http://blog.chinaunix.net/u/30686/showart_408389.html

PCLint使用介绍

http://blog.csdn.net/lbqBraveheart/archive/2010/05/17/5602391.aspx

http://blog.csdn.net/harbinzju/article/details/5844221

PC-lint 简明教程的更多相关文章

  1. Docker简明教程

    Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...

  2. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  3. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

  4. 2013 duilib入门简明教程 -- 部分bug 2 (14)

        上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃            如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...

  5. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  6. 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)

        界面的显示方面就都讲完啦,下面来介绍下控件的响应.     前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...

  7. 2013 duilib入门简明教程 -- FAQ (19)

        虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下.     需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...

  8. Mac安装Windows 10的简明教程

    每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...

  9. 2013 duilib入门简明教程 -- 总结 (20)

        duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~       这里给出Alberl最后汇总的一个工程,戳我下载,效 ...

  10. plain framework 1 参考手册 入门指引之 简明教程

    简明教程 简单的例子 实现代码 简单的例子 如果你已经下载好整个框架的源码,那么你可以在这里找到应用的例子: plainframework/applications/pf_simple 如果你在win ...

随机推荐

  1. 使用python操作RabbitMQ,Redis,Memcache,SQLAlchemy 其二

    一.概念 1.Memcached     Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 ...

  2. Java疯狂讲义(二)

  3. 什么是AOI自动光学检测机测试技术

    前言 当印刷电路板的价格以每年六到八个百分点的速度持续滑落,产品的生产良率就成为维持产业竞争力的要素.要获得高的良品率需要有良好的制造控制能力,而要获得良好的制程控制,似乎就必须要在各个制程中执行良好 ...

  4. Linux上MongoDB的安装与配置

    长话短说,一共有两种方法.(我随便选了一个发行版Mint) 一.apt-get方法 官网上说的很清楚: http://docs.mongodb.org/manual/tutorial/install- ...

  5. CloudStack修复bug

    CloudStack应用越来越广,但是随着测试也遇到了越来越多的bug. 不想等待新版本发布而且又急于修复某些bug的童鞋,可以参考下本文内容. CloudStack是java语言写成,发布时会发布为 ...

  6. 队列的定义与实现(C语言实现)

    小时候.我们做早操的时候或者军训的时候,都排成一列,有头有尾.如果你迟到了,仅仅能站到最后面一个.退场的时候.都是由第一个先走的.这就是队列雏形. 队列的定义 队列是一种特殊的线性表 队列仅在线性表的 ...

  7. Ceph之数据分布:CRUSH算法与一致性Hash

    转自于:http://www.cnblogs.com/shanno/p/3958298.html?utm_source=tuicool 数据分布是分布式存储系统的一个重要部分,数据分布算法至少要考虑以 ...

  8. 【JavaScript】标签样式中多出了element.style

    是因为使用了js增加或修改了样式.

  9. [转] Ant 编译 Android 项目为 Apk 实战, 常见问题解决

    补充,自行安装Ant, 配置ant环境变量, 在android 项目 根目录下使用 android update project 可以自动生成 build.xml 和 local.peoperties ...

  10. [转]Windows7 64bit下配置Apache+PHP+MySQL

    原文链接:http://blog.csdn.net/sbz0409/article/details/12946375 1.准备资料: 首先下载文件:Apache2.4.16 64bit,http:// ...