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如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...
随机推荐
- Ubuntu 安装 SSH server 并配置 SSH 无密码登录
https://hinine.com/install-and-configure-ssh-server-on-ubuntu/ Ubuntu 安装 SSH server 并配置 SSH 无密码登录 发表 ...
- 【BZOJ 1030】[JSOI2007]文本生成器
[题目链接]:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1030 [题意] [题解] /* 先把AC自动机搞出来; 然后利用AC自动机,把 ...
- ag-admin部署使用心得
开源地址:https://github.com/wxiaoqi/Spring-Cloud-AG-Admin(后端)https://gitee.com/geek_qi/AG-Admin-v2.0(后端) ...
- 报错:Unsupported major.minor version 52.0 (jar包对不同JDK版本的兼容性问题:)
Unsupported major.minor version 52.0 这类错误是因为Java版本不一致造成的,在高版本的JDK(1.8)环境中编译JAR包,然后JAR在低版本的JVM(1.6)中运 ...
- Mobile Push Notification
In one embodiment, a method includes sending to a mobile client computing device a first notificatio ...
- Ultra-wideband (UWB) secure wireless device pairing and associated systems
Methods and systems are disclosed for ultra-wideband (UWB) secure wireless device pairing. Secure pa ...
- IOS开源项目指标
https://github.com/edagarli/open-ios-projects/blob/master/README.md 版权声明:本文博主原创文章,博客,未经同意不得转载.
- 通过javacv对视频每隔1秒钟截取1张图片
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org. ...
- 1.跟着微软 https://docs.microsoft.com/zh-cn/dotnet/core/ 学习.net core
10分钟快速使用 安装之后 打开cmd 第一步. dotnet new console -o firstApp 第二步. cd firstApp 第三部.dotnet run 这样就运行了hello ...
- WinForm控件与WPF控件的交互
原文:WinForm控件与WPF控件的交互 这个问题其实也可以理解为:怎样在WPF/XAML中使用Winform中的控件(如PictureBox)?首先看看XAML代码:(注意下面加粗的部分)< ...