代码走查工具(参考课件)

合集下载

代码走查检查表

代码走查检查表
4
整个代码体系结构组合合理,分层清晰,代码之间功能划分明确
5
所有的接口模块化,尽量减少接口之间的耦合度,修改时尽量不影响其他代码模块
6
代码体系构架对空间和速度都已经进行考虑
7
数据库操作、IO操作等是否正确关闭资源。并且必须在try -catch-finally 的finally中关闭。
8
一个业务如果进行多次数据库更新、添加、删除是否正确添加事务。
9
进行逻辑与、逻辑或判断时是否使用短路与、短路或。
10
多处使用相同代码时,应定义唯一方法或变量以供使用。
11
对象是否使用工厂获取。
12
导入类时,如果仅使用包中的几个类,应导入具体类,而不是导入整个包。
13
数组声明的时候使用 int[] index ,而不要使用 int index[]。
14
代码实现的逻辑是否与详细设计描述的逻辑一致
21
异常要统一处理,异常处理方法是否符合项目组的约定
22
在Action中不要过多的逻辑处理代码
23
不要出现魔鬼数字
24
检查可能出现空指针异常的地方,例如一个对象可能为空,却调用它的方法或属性。
25
显示的文本无拼写和语法错误
26
所有的表达式使用了正确的操作符
函数组织
1
所有的函数名都小于64个字符
2
函数高内聚 尽量只做一件事情,并做好
7
复杂的表达式具备可读性,添加注释说明,表达式结构清晰
8
续行缩进
9
括号在合适的位置
10
每个顺序的小块用空行隔开
11
注释和代码对齐或接续在代码之后
12
JSP必须不能有basepath。

【软件工程】【CMMI】代码走查单

【软件工程】【CMMI】代码走查单

1-14
用 应通 该配 尽符 可方 能式 减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要
1-15
为 若保 没护 有足(够pr理ot由ec,te不d)要;把没实必例要或保类护变(量pr声ot明ec为te公d)有,。就公定共义和为保私护有的(可pr见iv性at应e)当。尽量避免,所有的字段都建议
1-3
避免使用长名字(最好不超过 25 个字母)
1-4
采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中
1-5
所 写有 。单 包词 名首 全字 部母 小大 写写 。。使用能确切反应该类、接口含义、功能等的词。一般采用名词
1-6
采用完整的英文大写单词,在词与词之间用下划线连接,如:DEFAULT_VALUE
代码走查记录跟踪单
项目名称
记录更新人
记录更新时间
走期 模块名称
检查文件 代码总行 数(个) 数(LOC)
花费工时(H)
1
50000
2
50000
3
50000
编号
检查项
1 代码规范
1-1
程序结构清晰,简单易懂,单个函数行数不得超过100行;
1-2
使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符
1-7
对不易清楚识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX。
1-8
应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则
1-9
一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符

刚刚知道“代码走查”是什么意思

刚刚知道“代码走查”是什么意思

刚刚知道“代码⾛查”是什么意思
代码⾛查的最主要的⽬的是为了发现程序中的逻辑错误,编程风格⽅⾯的错误可以通过风格检查的⼯具去检查。

如下的检查单给代码⾛查的专家发现逻辑错误提供了⼀个很好的帮助。

序号检查项
1代码的注释与代码是否⼀致?注释是否是多余的?
2是否存在超过3层嵌套的循环与/或判断?
3变量的命名是否代表了其作⽤?
4所有的循环边界是否正确?
5所有的判断条件边界是否正确?
6输⼊参数的异常是否处理了?
7程序中所有的异常是否处理了?
8是否存在重复的代码?
9是否存在超过20⾏的⽅法?
10是否存在超过7个⽅法的类?
11⽅法的参数是否超过3个?
12是否有多种原因导致修改某个类?
13当发⽣某个功能变化时,是否需要修改多个类?
14代码中的常量是否合适?
15⼀个⽅法是否访问了其他类的多个属性?
16某⼏项数据是否总是同时出现,⽽⼜不是⼀个类的属性?
17switch语句是否可以⽤类来替代?
18是否有⼀类的职责很少?
19是否有⼀个类的某些属性或者⽅法没有被其他类所使⽤?
20在类的⽅法中是否存在如下的调⽤形式:a.b().c()?
21是否某个类的⽅法总是调⽤另外⼀个类的同名⽅法?
22是否某个类总是访问另外⼀个类的属性与⽅法?
23是否两个类完成了类似的⼯作,使⽤了不同的⽅法名,却没有拥有同⼀个⽗类?
24是否某个类仅有字段和简单的赋值⽅法与取值⽅法构成?
25是否某个⼦类仅使⽤了⽗类的部分属性或⽅法?。

JAVA静态代码质量分析工具FindBugs介绍PPT课件

JAVA静态代码质量分析工具FindBugs介绍PPT课件
些检查,不做哪些检查)。
Findbugs提供了方便操作的可视化界面,同 时也可以作为Eclipse的一个插件来使用,而 我们使用得最多的还是作为Eclipse的插件来
使用。
FindBugs和其他工具的区别
Checkstyle和PMD是根据样式(style) 来 改进代码质量的。
FindBugs分析引擎它直接操作类文件(class 文 件)而不是源代码。我们可以通过命令行 、各种构建工具(如Ant、Cruise Control、 Hudson及Maven等)、独立的Swing GUI或是 以Eclipse和NetBeans IDE插件的方式来运行 FindBugs。输出结果既可以是XML的,也可以
Enable bug categories选择项 Correctness关于代码正确性相关方面的; Performance关于代码性能相关方面的; Internationalization关于代码国际化相关方面; Multithreaded correctness关于代码多线程正确
安装了Findbugs插件后。右击点击你要检查的项 目选择【Find Bugs】->【Find Bugs】进行检
查。
要查看Findbugs检查出了哪些Bug,可以选择 Windows菜单->Show View->Bug Explorer,打
开Bug Explorer面板。
如果想要查看某个Bug详细的信息,则可以选择 Windows菜单->Open Perspective,然后选择 FindBugs就可以打开FindBugs的Properties面 板,在这个面板里面可以看到最详尽的Bugs信息

FindBugs的配置
选择你的项目,右键 => Properties => FindBugs => ❖Run FindBugs Automatically开关 当此项选中后,FindBugs将会在你修改Java类时 自动运行,如你设置了Eclipse自动编译开关后, 当你修改完Java文件保存,FindBugs就会运行, 并将相应的信息显示出来。当此项没有选中,你 只能每次在需要的时候自己去运行FindBugs来检 查你的代码。

code查询

code查询

Code查询1. 引言在软件开发中,我们经常会遇到需要查询特定代码或标识符的情况。

这可能包括查找某个函数或方法的定义、查看特定变量的使用位置,或者查询其他相关代码的引用。

在大型项目中,代码查询变得尤为重要,因为代码库的规模通常很大,手动查找某个代码片段或标识符的过程非常耗时且容易出错。

为了提高开发效率,许多集成开发环境(IDE)和代码编辑器提供了代码查询功能。

本文将介绍一些常见的代码查询技巧和工具,帮助开发者更轻松地进行代码查询。

2. 代码查询技巧2.1 使用IDE的内置代码查询功能大多数现代IDE都提供了强大的代码查询功能,可以帮助开发者快速定位代码。

以下是一些常见的代码查询技巧:•全局搜索:IDE提供了全局搜索功能,可用于搜索整个代码库中的特定代码片段或标识符。

通常,你只需按下快捷键(如Ctrl + Shift + F)并输入要查询的内容,IDE将会帮助你找到相关的代码。

•局部搜索:除了全局搜索外,IDE还提供了局部搜索功能,可用于在当前文件或当前打开的文件中查询代码。

这对于查找特定代码片段的使用位置非常有用。

•导航到定义:许多IDE允许你跳转到特定代码的定义位置。

例如,当你点击某个函数或方法时,IDE会自动导航到该函数或方法的定义处。

这对于查看代码实现的细节非常有用。

2.2 使用命令行工具进行代码查询除了IDE的内置代码查询功能外,还有一些强大的命令行工具可用于代码查询。

以下是一些常见的命令行工具:•grep:grep是一个常用的命令行工具,用于在文件中搜索指定的字符串。

你可以使用grep来快速查找代码库中的特定代码片段或标识符。

•ack:ack是一个更高级的文件搜索工具,专门用于代码查询。

它支持正则表达式,并提供了许多有用的选项和过滤器,使得查找代码变得更加灵活和高效。

•ag:ag(the silver searcher)是另一个非常快速和强大的文本搜索工具,专为代码查询而设计。

它支持多线程并行搜索,适用于大型代码库。

代码走查规范

代码走查规范

维远泰克代码走查规范文件编号:起草部门:测试组审核人:签发人:批准日期:版本标识:目录1引言...................................................................................................................................... 错误!未定义书签。

1.1目的 .................................................................................................................................... 错误!未定义书签。

1.2说明 .................................................................................................................................... 错误!未定义书签。

2代码走查 (4)2.1检查点 (4)2.2走查流程 (4)2.2.1走查流程图 ......................................................................................................... 错误!未定义书签。

2.2.2流程概述............................................................................................................. 错误!未定义书签。

2.2.3具体流程............................................................................................................. 错误!未定义书签。

实训二 代码走查及程序插桩

实训二 代码走查及程序插桩

实训二代码走查及程序插桩实验目的:理解代码走查的含义理解程序插桩的含义掌握通过代码走查进行静态测试的方法掌握通过程序插桩进行白盒测试的方法实验环境:WindowsXP+Office2003+ch student实验内容:一、有关概念代码走查:由程序设计人员和测试人员组成审查小组,通过逻辑运行程序来检查软件的错误。

程序插桩:通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。

二、实验步骤:1. 以下程序的功能为:输入一个字符串,判短期中字母个数、数字个数及空格个数,并输出结果。

要求:1)设计一个测试用例,要求输入的测试用例不少于5个字符,不少于两种类型,写出预期结果。

2)对程序进行代码走查,写出每次循环执行的情况。

3)最后给出结论。

#include <stdio.h>#include <string.h>#define ARR_SIZE 80main(){char str[ARR_SIZE];int len, i;int letter=0,digit=0,space=0,other=0;printf("请输入一个字符串:");gets(str);len = strlen(str);for (i=0; i<len; i++){if(str[i]>=‘a’&& str[i]<=‘z’) {++letter;}else if(str[i]>‘0’&& str[i]<‘9’){++digit;}else if (str[i]==' ' ){++space;}else++other;}printf("英文字符数:%d\n", letter);printf("数字字符数:%d\n", digit);printf("空格数:%d\n", space);printf("其他字符数:%d\n", other);}1)测试用例输入字符串:古iqg7373idhf@%#%预期结果:字母:47数字 : 4 其它:42)走查过程i=0 letter = 1 ,digit = 0 ,space=0,other = 0 i=1 letter =1, digit = 1,space=0,other=0i=2 letter =2,digit = 1,space = 0,other=0i=3 letter = 3,digit =1,space = 0,other=0i=4 letter=4 ,digit= 1,space=0,other=0i=5 letter =4,digit= 1,space=0,other=1i=6 letter = 4,digit = 1,space=0,other=2i=7 letter =4,digit =1,space =1,other=2i=8 letter =4,digit =2,space =1,other=2i=9 letter =4,digit =2,space =1,other=3i=10 letter=4,digit=2,space=1,other=4i=11 letter=4,digit=2,space=1,other=5退出循环最后输出:letter=4,digit=2,space=1,other=53)结论:未通过2. 以下程序的功能为:求n以内的奇数之和及偶数和。

代码检查工具

代码检查工具

四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
PMD的安装
两种安装途径: 手工安装:
从/上查询Eclipse的PMD插件,下载并 放置到%ECLIPSE_HOME%\plugins目录中
在线安装:
Help菜单Software UpdateFind And Install 选择Search for New Features New Remote Site,输入一个站点名称和地址 (/eclipse),按提示安装
在线安装:
Help菜单Software UpdateFind And Install 选择Search for New Features New Remote Site,输入一个站点名称和地址 (/eclipse),按提示安装
FindBugs与CheckStyle和PMD不同,侧重于检测潜在程序错误 和风险 FindBugs采用“错误模式(Bug Pattern)”匹配的方式进行扫 描
从功能上与CheckStyle比较,PMD更多的集中在预先的代码缺 陷检测上,而且PMD更加突出了具体开发框架的检测,如 Jakarta-Log、JUnit,同时比CheckStyle增加了对代码访问 安全性的检查
使用PMD
为项目激活PMD检查:
Project[项目]Properties[属性]PMD[属性项]Enable PMD选中
使用CheckStyle
从首选项中导入 胜利软件编码规范 检查模板
使用CheckStyle
项目开启 CheckStyle 检查选项
使用CheckStyle
XXX类检查 提示: 问题提示 所在行 Problems视图
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查

实训二 代码走查及程序插桩-推荐下载

实训二 代码走查及程序插桩-推荐下载
二、实验步骤:
1. 以下程序的功能为:输入一个字符串,判短期中字母个数、数字个数及空格 个数,并输出结果。 要求:
1) 设计一个测试用例,要求输入的测试用例不少于5个字符,不少于 两种类型,写出预期结果。
2) 对程序进行代码走查,写出每次循环执行的情况。 3) 最后给出结论。 #include <stdio.h> #include <string.h>
i=3 letter = 3,digit =1,space = 0,other=0
i=4 letter=4 ,digit= 1,space=0,other=0
i=5 letter =4,digit= 1,space=0,other=1
i=6 letter = 4,digit = 1,space=0,other=2
#define ARR_SIZE 80
main() {
char str[ARR_SIZE]; int len, i; int letter=0,digit=0,space=0,other=0; printf("请输入一个字符串:"); gets(str);
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

代码走查标准

代码走查标准

一.目录文件组织一.目录文件组织1.1. 所有的文件名符合文件命名规范所有的文件名符合文件命名规范2.2. 文件和模块分组清晰文件和模块分组清晰二.程序结构二.程序结构3.3. 所有的模块(函数和外部接口)定义清晰,模块分解清楚4.4. 结构设计能够满足机能变更,便于重构5.5. 模块中所有的数据结构都定义为局部的,并且通过定义好的函数进行访问6.6. 为外部定义了良好的函数接口,且修改时不影响其他代码模块7.7. 代码体系构架对空间和速度都已经进行考虑三.代码组织三.代码组织8.8. 所有的代码行在80字符以内字符以内9.9. 每个程序文件都小于2000行10.10.每个函数显示不超过100行 11.11. 所有的变量声明每行只声明一个所有的变量声明每行只声明一个12.12. 所有的变量名都小于32字符字符13.13. 所有的函数名都小于64个字符个字符14.14. 每个函数之间都用空行进行分开每个函数之间都用空行进行分开15.15.所有的行每行最多只有一句代码或一个表达式 四.函数四.函数16.16. 函数注释清楚地描述函数和它的功能函数注释清楚地描述函数和它的功能17.17.函数的名字清晰的定义了它的目标以及函数所做的事情 18.18. 函数的参数遵循一个明显的顺序函数的参数遵循一个明显的顺序19.19. 函数由并列关系的语句组成函数由并列关系的语句组成20.20. 函数高内聚,只做一件事情,并做好函数高内聚,只做一件事情,并做好21.21. 所有的参数小于7个,且都被使用个,且都被使用22.22. 函数使用了最少数目的return 语句语句23.23. 函数检查了输入数据的合法性函数检查了输入数据的合法性24.24. 函数异常处理清楚函数异常处理清楚25.25. 函数设计已经考虑了将来的变化函数设计已经考虑了将来的变化五.数据类型与变量五.数据类型与变量26.26. Plugin 中尽量避免全局变量的使用中尽量避免全局变量的使用27.27.每一个变量都在接近使用它的地方才初始化 28.28.变量的命名完全、明确的描述了该变量代表什么 29.29. 同一种类型命名使用统一的前缀同一种类型命名使用统一的前缀30.30. 所有的变量都被使用所有的变量都被使用31.31. 所有的数组访问要考虑越界情况所有的数组访问要考虑越界情况32.32. 变量在使用前进行必要的null 值判断和处理值判断和处理六.条件判断六.条件判断33.33.普通的情况在if 下处理而不是else 34.34. 最常用的情况最先判断最常用的情况最先判断35.35.嵌套层次小于3层 七.循环七.循环36.36. 当有明确的多次循环操作,使用For 循环循环37.37. 当有不明确的多次循环操作,当有不明确的多次循环操作,while while 循环被使用循环被使用38.38.变量定义,数据库读写尽量在循环外进行 39.39.循环嵌套的次数小于3次 八.注释八.注释40.40. 使用统一的注释模版使用统一的注释模版41.41. 每个类,每个函数都要有注释每个类,每个函数都要有注释42.42.注释量不低于20% 43.43. 注释要随着代码改变而进行更新注释要随着代码改变而进行更新九.其他九.其他44.44. 无用的代码和注解已经删除无用的代码和注解已经删除45.45. 页面的布局要符合统一操作说明页面的布局要符合统一操作说明。

代码走查报告

代码走查报告

代码走查报告引言:在软件开发的过程中,代码走查是一种非常重要的活动。

通过代码走查,开发人员可以发现潜在的错误、代码质量问题以及潜在的安全风险。

本报告旨在对一份代码走查结果进行分析和总结,并提出相应的优化建议,以提高代码质量和开发效率。

一、代码结构和可读性:首先,通过对代码的结构进行走查,我们注意到代码的组织结构合理,模块化程度高,各个模块之间的关系清晰。

这使得代码易于阅读和理解,方便后续的维护和扩展。

然而,在代码的命名上存在一些问题,如变量和函数名缺乏描述性,不符合代码规范。

因此,建议开发人员在命名时要遵循代码规范,确保命名的准确性和描述性。

二、错误处理和异常处理:代码走查发现,代码中缺乏对错误和异常情况的处理。

这可能导致程序意外终止,影响用户体验和系统的稳定性。

建议开发人员加强对错误和异常情况的处理,例如使用try-catch语句来捕获异常并进行相应的处理,或者合理地使用断言语句来检查代码逻辑的正确性。

三、安全性问题:通过代码走查,我们发现在代码中存在一些潜在的安全风险。

例如,未对用户输入进行验证和过滤,可能导致代码受到SQL注入、跨站脚本等安全攻击。

因此,建议开发人员在接收和处理用户输入时,要进行严格的验证和过滤,确保代码的安全性。

四、性能和效率:性能和效率对于软件系统的稳定运行和用户体验至关重要。

通过代码走查,我们注意到在一些地方存在性能瓶颈和效率问题。

例如,代码中存在重复调用数据库查询的情况,没有充分利用缓存机制等。

建议开发人员在开发过程中要注意性能和效率,避免无谓的重复计算和调用,合理运用缓存和优化算法,以提高系统的响应速度和效率。

五、代码规范和一致性:代码规范和一致性对于代码的可读性和维护性至关重要。

通过代码走查,我们发现代码在规范和一致性方面存在一些问题。

例如,代码缩进不一致、括号的使用不规范等。

建议开发人员要养成良好的编码习惯,遵循代码规范,保持代码的一致性,并通过代码格式化工具来提高代码的可读性。

代码检测工具箱

代码检测工具箱

代码检测工具箱——checkstyle、findbugs、pmd-cpd目录一.目的: (3)二.取舍: (3)三.期望结果: (3)四.步骤: (3)1.准备工具 (3)2.脚本规划 (4)3.checkout (4)3.1脚本编写 (5)3.2执行 (5)3.3问题处理 (6)4. javac (7)4.1脚本 (7)4.2执行 (7)5.jar (8)5.1脚本 (8)6.checkstyle (8)6.1脚本 (9)6.2变量定义 (9)6.3环境初始化脚本 (10)6.3执行 (10)6.4自定义规则 (10)7.findbugs (13)7.1脚本 (13)7.2执行 (13)8.cpd (14)8.1脚本 (14)8.2执行 (14)9.完整脚本 (14)一.目的:最近要跟踪一个项目的代码质量,保障项目质量。

个人总是认为,质量保障这个东西要用数据说话的。

代码走查是一个方面,但要能使用工具完成部分标准化的代码走查,发现部分错误,也不失为一种不错的补充手段。

结合之前自己用过、听过的几种开源工具,整合到一起,实现一个适合目前项目的简单工具。

二.取舍:首先是工具的选择,经过多个工具的使用结合目前项目组成员的水平和状态,决定从几个方面进行检查:常规bug编码规范重复代码不想检查太多,以前没有开展过这方面的工作,领导是否支持,项目成员反响是否良好都很难说,如果大家都喜欢再完善更多的检查也不晚。

其实还差一个依赖的检测,但现在项目使用的是ssh的架构,现有依赖检查的工具中,对spring的支持都不是很好,遂放弃。

对于工具的选择,紧着自己熟悉的就选择了checkstyle、findbugs和pmd的cpd工具。

三.期望结果:使用ant脚本,一步完成所有工作,针对项目直接产生检查报告。

四.步骤:1.准备工具ant、checkstyle、findbugs、pmd下载。

还要下载cvs和eclipse,因为脚本中需要使用cvs更新代码,eclipse会让ant脚本的编辑和环境配置更加简单。

手机软件部_代码走查检查项分类清单

手机软件部_代码走查检查项分类清单

说明及举例
示例
编程规范
说明
文文
“变量初始化、变量和宏命名重复或冲突、数据类型匹配、精度丢失、部分if和case的分支 处理缺省和异常”等方面pc-lint做得很出色,因此这方面人工走查可以不必关注。 部分pcpc-lint告警 lint做得不完美的方面下面分别列出,需采用人工走查。 对多线程访问的全局变量缺少信号量保护。 缺少关闭中断保护。 开关中断的保护范围不当。 中断服务程序使用危险的操作或者中断服务程序过于复杂耗时。 多个信号量的使用关系不清晰,可能互锁。 资源没有及时释放,如定时器、信号量、网络端口等。 文件打开未保证所有情况下关闭。 未对申请资源是否成功进行判断保护。 异常处理或退出时,没有释放所有该释放的内存等资源。 除数或模是否可能为零。 在数值计算过程中是否可能出现溢出。 对函数入口的指针进行NULL检查。 对异常参数输入、异常信号输入、异常函数返回的处理和保护。 断言中判断失败的没有进行错误处理。 断言中对含复杂和可能再次出错的操作隐患。 断言在发行版本中仍然有效(断言应该只针对debug版)。 if、switch等语句有遗漏分支没有处理。 循环的起点错误,如是0还是1。 循环的终点错误,如不正确使用 > , >= , < , <= 等比较符号。 在for 循环体内修改循环变量和循环变量的边界,可能导致 循环失去控制。 循环变量类型所能取的最大值小于循环上限宏值,引发死循环; 循环上限是变量,且循环上限变量类型大于循环变量类型,有死循环隐患。
开发人员实施走查时建议按子项分类,每次最好只走查1个走查子项,多次重复扫描。 开发人员实施走查时建议按子项分类,每次最好只走查1个走查子项,多次重复扫描。 走查实现、设计层面可以不关注代码细节,走查编码、内存层面可以不关注总体逻辑。 走查实现、设计层面可以不关注代码细节,走查编码、内存层面可以不关注总体逻辑。

软件测试-软件代码走查清单模板

软件测试-软件代码走查清单模板
是[]否[]免[]
72
变量值问题如:变量的初始化或缺省值必须正确;变量不能发生上溢或下溢;变量的精度要保证足够;
是[]否[]免[]
73
逻辑判断问题如:要确保不会在程序中出现由于精度原因而导致的比较无效吗;确保表达式中的运算优先级正确;确保逻辑判断结果正确;
是[]否[]免[]
序号
总则条款
执行情况
说明
74
是[]否[]免[]
三、命名规则
20
对于全局变量的命名,必须以“g_”开头,局部变量不得以“g”开头;
是[]否[]免[]
21
变量的命名尽量有意义,如果没按意义进行命名,则必须在声明变量时加上备注解释其意义;
是[]否[]免[]
四、表达式与基本语句
22
代码行中的运算符超过两个,必须用括号清楚地确定表达式的操作顺序;
是[]否[]免[]
38
函数名字与返回值类型在语义上最好不要存在冲突;
是[]否[]免[]
39
不要函数的将正常值和错误标志混在一起返回,正常值应当用输出参数获得,而错误标志用“return”语句返回;
是[]否[]免[]
40
在函数体的“入口处”,最好用“assert”对参数的有效性进行检查;
是[]否[]免[]
是[]否[]免[]
3
所有的函数和全局变量在头文件中进行声明;
是[]否[]免[]
4
头文件和定义文件目录结构合理;
是[]否[]免[]
5
每个程序文件的头部必须包含完整的版权和版本声明;
是[]否[]免[]
6
重要头文件要使用ifndef/define/endif预处理块;
是[]否[]免[]
二、程序版式
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当检查所有文件时不需要使用-u选项
7
PC-Lint基本使用方法
PC-Lint配置文件介绍
PC-Lint使用那个配置文件是由命令行参数决定的,一般地 都使用std.lnt文件,std.lnt文件中可以包含各种配置选项, 还可以包含其他的配置文件,有点类似C的头文件,里面可 以include许多其他头文件,不过PC-Lint配置文件包含其他 配置文件不需要写include,直接写文件名就可以了。
3
PC-Lint基本使用方法
PC-Lint8.0主要由以下一些文件组成:
Lint-nt.exe Windows下的执行文件 Msg.txt 全部选项帮助说明文件 PC-Lint.pdf PC-Lint的帮助文件 Config.exe 配置程序 Std.lnt 标准配置文件 Options.lnt选项配置文件 .\Lnt子目录下的各种开发编译环境的配置文件 其他一些文件
每个配置文件里都可以包含配置选项,这些配置选项也可以 放在命令行中,一般为使用方便,命令行中不要放很多选项, 尽量都将选项放到配置文件中
8
PC-Lint基本使用方法
以下是VC下的配置文件样例
// Microtec 32-bit, -si4 -sp4, lib-w32.lnt // Standard lint options
co-msc60.lnt
//PC-Lint提供的对VC6的告警屏蔽文件
lib-w32.lnt
//PC-Lint提供的对VC6库头文件的告警屏蔽文件
options.lnt -si4 -sp4 //用户自定义的选项文件
env-vc6.lnt
//用户用来设置编辑环境的配置文件
-id:\vc6\vc98\include //include 目录 -id:\vc6\vc98\mfc\include //include 目录
PC-Lint本身提供了对各种编译器及对应库头文件的 告警屏蔽文件,如co-msc60.lnt是对vc6的,libw32.lnt是对Win32库头文件告警的屏蔽配置文件
11
PC-Lint常用选项
-i选项
这个选项主要是用来设置include路径的 如:-iD:\VC6\VC98\Include
-e#选项
5
PC-Lint基本使用方法
检查一个目录下的所有源文件可以使用以下 方法:
如:lint-nt.exe -u -id:\lint std.lnt d:\osp\vos\*.cpp 跟前面不同的是这里将sample.c变成了
d:\osp\vos\*.cpp,使用*.cpp的意思是它会检查 d:\osp\vos目录下的所有.cpp文件,但是它不能 检查子目录下的文件
4
PC-Lint基本使用方法
PC-Lint是一个命令行工具,因此使用方式是命令行 带参数方式使用。
一般的使用格式为: lint-nt.exe [Option] file1 file2 …
如:lint-nt.exe -u -id:\lint std.lnt sample.c 在这里-u 表示只对本单元进行检查 -id:\lint 是表示会在d:\lint目录下搜索文件 std.lnt 是表示要使用的配置文件 sample.c 表示要检查的源文件
-dname[=value]
这个选项主要是用来定义一个宏的 如:-dWIN32, -dalpha=0
-sp#
表示指针的尺寸大小是#字节 如:-sp4表示指针是4个字节大小
-si#
表示int的尺寸大小是字节 如:-si4表示int型是4个字节大小
6
PC-Lint基本使用方法
要检查所有包括子目录的文件可以使用以下方法: lint-nt -id:\lint std.lnt AllSource.lnt 在AllSource.lnt文件中可以放置如下: Moudule1-Dir\*.cpp Moudule2-Dir\*.cpp Moudule3-Dir\*.cpp ...
这个选项主要是用来屏蔽告警号为#的告警 如:-e818 表示不显示告警号为818的告警
-esym(#, 符号名)选项
这个选项主要是用来屏蔽告警号为#的某个符号的告警, 如-esym(39, std)
-emacro(#,宏名称)选项
这个选项主要是用来屏蔽告警号为#的某个宏的nt基本使用方法
一般来说,PC-Lint经常会有一些误报,为 了消除这些误报,不得不将程序风格改动 来规避,但有时候怎么改写程序都有告警, 比如说你定义了两个宏,前面那个宏里有 一半大括号{, 后面那个宏里有另一半大括 号}, 这时候一定会有告警,你不得不使用一 些PC-Lint选项来屏蔽这些告警。
一般情况下,我们都将自己要写的选项放 在Options.lnt文件中
10
PC-Lint基本使用方法
另外还有关于编辑环境的问题,如果把PC-Lint集成 到某个编辑环境中,那么他输入的格式必须和对应 环境吻合才能保证在鼠标点击(或双击)错误消息条 目时可以自动定位到对应源代码行,一般来说这类 配置都放置在env-xxx.lnt文件中,如VC6的时envvc6.lnt, SourceInsight的是env-si.lnt
代码走查工具—PCLint
1
目录
PC-Lint简介 PC-Lint基本使用方法 PC-Lint常用选项 PC-Lint在各种环境中的集成 PC-Lint常见告警分析及解决措施
2
PC-Lint简介
PC-Lint是Gimpel Software公司开发的一个一个C/C++静态 语法检查工具,它不是一个Free 软件。一般来说,软件在 编译连接通过后就可以使用PC-Lint做静态检查。
PC-Lint是一个命令行工具,在8.0版本里提供了300多个选 项,1000多个告警。
本篇培训材料旨在引导读者入门,学会PC-LINT的基本使用 方法,一些常见选项的使用,常见告警的分析及规避措施, 希望可以起抛砖引玉的作用,为读者深入掌握PC-Lint的使 用打下基础。
本篇材料主要是以PC-Lint8.0在Windows上的使用为基础来 做的。
相关文档
最新文档