静态分析工具
6. 7. 8. 9.
在初始目录中输入$(ItemDir) 选择“使用输出窗口” 单击“008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-13
检测项目
步骤
1.
生成与项目相关的包含所有cpp/c文件的 XXX.lnt文件
生成空的Options.lnt(不取消一些核心选项) 根据安装程序的提示逐一确定是否取消一些核心选项
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-9
安装验证
验证安装
当前目录设置为test\filea.cpp和filec.cpp 在命令行模式运行:lint-nt filea.cpp fileb.cpp,如果出现下面的结果 说明安装正常
编号<1000的错误号是分配给C语言的,编号>1000的用来说明 C++的错误消息
2.
消息的具体内容可以从安装目录下的msg.txt文件获得或者从手册中 的第17章也有相关的描述
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-3
Gimpel Software公司出品的一款针对C/C++的静态代码检测工具 (基于ANSI C/C++),支持几乎所有流行C/C++的编辑环境和编译 器,是“一种更严格的编译器”,可以检查出
1. 2.
一般的语法错误 完全符合语法要求,但是很可能是潜在的,不易发现的错误
PC-Lint产生的检测信息
1.
消息说明
PC_Lint 消息说明
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-4
案例
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-5
检测通过准则示例
d:\project\code>lint-nt –u unit.c d:\project\code2>lint-nt –w2 filea.cpp fileb.cpp Option选项:错误禁止、变量类型大小、冗余信息、标记选项和其它
使用Lin.bat文件
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-7
安装
步骤
运行安装程序,将PC-Lint相关内容释放到指定的安装目录,如c:\pclint 设置配置项
1. 2.
选择配置路径。如C:\PCLint 选择编译器。如“Microsoft Visual C++ 7.x (co-msc70.lnt)”。如果 没有自己使用的编译器,可选择通用编译器“Generic Compilers” (co.lnt)。 选择内存模式。例如,开发环境是32位的Windows,选择“32-bit Flat Model”
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-6
检测通过准则示例
以下警告信息需要确认
布尔值:503、774(恒真/假比较) 精度损失:569、734、732、571、616(丢失符号位) 返回值:534(函数没有返回值类型,可用void function()) 边界值:661、662(指针越界读写) 空指针:413、613、668(空指针引用、空指针传递) Switch语句:744、787(没有default分支,Switch中没有用到枚 举常量) 未使用的代码和变量:527-529、715、550-552、752
2.
3. 4. 5.
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-12
与VS .Net2003集成
步骤
1. 2. 3. 4. 5.
菜单选择:工具->外部工具 在外部工具对话框中:单击”添加” 在标题文本框中输入PC-LINT 在命令文本框中输入c:\pclint\lint-nt.exe 在参数文本框中输入:-i"c:\lint" std.lnt env-vc7.lnt "$(ItemFileName)$(ItemExt)" “$(ItemFileName) “
2.
运行Pc-Lint对XXX.lnt文件检查项目中所有 代码
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-14
生成项目文件清单
步骤
1. 2. 3. 4. 5.
菜单选择:工具->外部工具 在外部工具对话框中:单击”添加” 在标题文本框中输入PC-LINT PRJ 在命令文本框中输入c:\pclint\lint-nt.exe 在参数文本框中输入:-v os("$(TargetName).lnt") "$(ProjectFileName)"
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-10
PC-Lint的使用方式
命令行方式
直接使用lint/lint-nt命令
1. 2.
在DOS下使用lint 在Windows下使用lint-nt option file1 [file2 file3…..]
静态分析工具-11
与Ultra Editor集成
步骤
1.
菜单选择:Advanced->Tool Configuration… 在Command Line中输入: c:\lint\lint-nt -i“c:\lint“ std.lnt %F 在Menu Item中填写:PC-LINT 单击“Insert” 单击“OK”
6. 7. 8. 9.
在初始目录中输入$(ProjectDir) 选择“使用输出窗口” 单击“应用” 单击“确定”
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-16
静态检测工具PC-Lint
内容大纲
讨论与静态检测工具PC-Lint相关的内容
简介 安装 基本使用
1. 2. 3.
命令行 编辑器 消息说明 多文件检测
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-2
PC-Lint简介
工具说明
3.
4.
选择在编译时使用的库,例如常用的ATL、MFC、STL等(lib-atl.lnt…)
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有© 静态分析工具-8
2006级本科《软件测试与质量保证》
安装
步骤
设置配置项
5. 6.
选择专家的编程建议(Scott Meyers <Effective C++>) 选择并设置包含文件目录
6. 7. 8. 9.
在初始目录中输入$(ProjectDir) 选择“使用输出窗口” 单击“应用” 单击“确定”
2006级本科《软件测试与质量保证》
2008年9月-2009年01月 SEI of ECNU 孙海英 版权所有©
静态分析工具-15
检测项目
步骤
1. 2. 3. 4. 5.
菜单选择:工具->外部工具 在外部工具对话框中:单击”添加” 在标题文本框中输入PC-LINT PRJ 在命令文本框中输入c:\pclint\lint-nt.exe 在参数文本框中输入:-i"c:\lint" std.lnt env-vc7.lnt "$(TargetName).lnt"
以下警告信息不能出现
编号为1-199的警告:语法错误 未初始化警告:530、644-645、727-729、1401-1403(未初始 化、可能未初始化、未精确初始化、成员未初始化) 返回值:533(函数(不)应该返回数值) 比较:568、775(非负数与0比较)、650(超出比较范围) 声明:578(局部变量与全局变量同名,可读性下降)
使用INCLUDE环境变量 使用“-i”选项,会出现在Std.lnt如果选择使用-i方式协助设置包含文件选项, 就会要求输入一个或多个包含路径。 跳过这一步,以后手工修改
7. 8.
如果还需要创建其它编译器的配置文件的话,重复步骤2-6 配置选项文件Options.lnt,该文件反映了全局编译信息显示的情况