PC-lint 简明教程(C/C++静态代码检查工具)
前言
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 简明教程(C/C++静态代码检查工具)的更多相关文章
- [原创]Java静态代码检查工具介绍
[原创]Java静态代码检查工具介绍 一 什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...
- 静态代码检查工具 cppcheck 的使用
CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们 ...
- 静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)
CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...
- C#静态代码检查工具StyleCode
C#静态代码检查工具StyleCode -- 初探 最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护. 但是人工检查起 ...
- Python静态代码检查工具Flake8
简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...
- 基于Source Insight_Scan的C/C++静态代码检查工具安装说明
基于Source Insight_Scan的C/C++静态代码检查工具安装说明 本文链接:https://blog.csdn.net/M19930517/article/details/79977 ...
- Lint——Android SDK提供的静态代码扫描工具
Lint和FindBugs一样,都是静态代码扫描工具,区别在于它是Android SDK提供的,会检查Android项目源文件的正确性.安全性.性能.可用性等潜在的bug并优化改进. 下图简单地描述了 ...
- 静态代码检查工具-PMD初学者入门篇
前言: PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码. PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则 ...
- Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果
为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...
随机推荐
- 【9302】&&【a301】兔子繁殖
Time Limit: 10 second Memory Limit: 2 MB 问题描述 有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对 ...
- Spring中WebApplicationInitializer的理解
现在JavaConfig配置方式在逐步取代xml配置方式.而WebApplicationInitializer可以看做是Web.xml的替代,它是一个接口.通过实现WebApplicationInit ...
- Access control differentiation in trusted computer system
A trusted computer system that offers Linux® compatibility and supports contemporary hardware speeds ...
- yii2 实现无极限分类
在商城项目或者其他的项目中无极限分类是非常常见的场景 那么许多人都会这样干 利用递归每次查询数据库,说来惭愧,我以前也是这样干的 总有点误人子弟的感觉 这样做在数据量大的情况下会有一定的延迟 publ ...
- make 的参数
1. -j -j(表示 job 的数目)参数可以对项目在进行并行编译,比如在一台双核的机器上,完全可以用 make -j4,让make 最多允许 4 个编译命令同时执行,这样可以更有效的利用 CPU ...
- Redis实战:如何构建类微博的亿级社交平台
微博及 Twitter 这两大社交平台都重度依赖 Redis 来承载海量用户访问.本文介绍如何使用 Redis 来设计一个社交系统,以及如何扩展 Redis 让其能够承载上亿用户的访问规模. 虽然单台 ...
- DDD实战8_1 实现对领域中连接字符串的可配置
1.在webapi的配置文件中配置连接字符串节 2.在webapi的startup类中的Configure方法中 将工具类里面AppSetting的静态Section的值 对应上webapi的配置文件 ...
- Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面 前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1.准备工作 1.1.打开 ...
- UML静态视图——类图、对象图、包图
绘画类的最重要的图是抽象类.让我们回顾一下类的基本内容. 一.分类 1.类的概念: 面向对象编程的类是一个基本概念.类是具有相同特性的.办法.集合语义和一组对象的关系. 2.类分类: 实体类:保存要放 ...
- Opencv中K均值算法(K-Means)及其在图像分割中的应用
K均值(K-Means)算法是一种无监督的聚类学习算法,他尝试找到样本数据的自然类别,分类是K由用户自己定义,K均值在不需要任何其他先验知识的情况下,依据算法的迭代规则,把样本划分为K类.K均值是最常 ...