代码检查工具
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
PMD的安装
两种安装途径: 手工安装:
从http://pmd.sourceforge.net/上查询Eclipse的PMD插件,下载并 放置到%ECLIPSE_HOME%\plugins目录中
在线安装:
Help菜单Software UpdateFind And Install 选择Search for New Features New Remote Site,输入一个站点名称和地址 (http://pmd.sourceforge.net/eclipse),按提示安装
这样每次修改代码,都会自动FindBugs
在List列表中,选择本项目使用FindBugs的哪些检查类型
规则分类名称 Correctness(正确性) BadPractice(不良实践) Performance(性能) Dodgy(不可靠) Multithreaded correctness(多线程正 确性) 说明 不正确的代码:死循环、空指针访问、参数未初始化 违反常规开发规则:未关闭资源、异常抛出不截获 代码可能的性能问题,重复对象过多、字符串循环+ 未使用的变量、奇怪和未检查的类型转换等 多线程调用、同步问题
在线安装:
Help菜单Software UpdateFind And Install 选择Search for New Features New Remote Site,输入一个站点名称和地址 (http://findbugs.cs.umd.edu/eclipse),按提示安装
FindBugs与CheckStyle和PMD不同,侧重于检测潜在程序错误 和风险 FindBugs采用“错误模式(Bug Pattern)”匹配的方式进行扫 描
静态逻辑Bug检查
FindBugs:一个静态分析工具,它检查类或者 JAR 文件, 将字节码与一组缺陷模式进行对比以发现可能的问题
FindBugs发现的问题,大部分都是在Runtime过程中,会造成程序异 常、错误的 FindBugs可以联系class所在包的上下文,对代码进行穿透检查,对 隐藏的比较深层次的逻辑错误、资源操作问题等进行报警 当然,FindBugs可以被集成到Eclipse开发环境中,也可以集成到 Maven中,生成报告
wk.baidu.com
使用CheckStyle
从首选项中导入 胜利软件编码规范 检查模板
使用CheckStyle
项目开启 CheckStyle 检查选项
使用CheckStyle
XXX类检查 提示: 问题提示 所在行 Problems视图
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查
三.一、CheckStyle 三.二、PMD
在线安装:
Help菜单Software UpdateFind And Install 选择Search for New Features New Remote Site,输入一个站点名称和地址(http://eclipsecs.sourceforge.net/update),按提示安装
客户端检查是代码提交到SVN前的关键过程, 建议采用“阻塞检查”方式,即关键问题修改完毕前不能提交SVN
代码检查的目的
持续集成服务
审核 修改 认可 本地 代码检查 单元测试 结果 OK!!Upload 自动 检查 结果
SVN
抽取、检查、执行
开发人员
设计人员
评价!!!!
复测!! 生成报告
静态代码检查工具的应用在开发客户端也在持续集成服务端
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查 四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
一个实例的分析报告
这个实例是胜利软件工作流管理系统V3.0引擎部分 这个实例是开发阶段中代码检查的一个快照 这个实例是从持续集成服务器中生成出来的 这个实例包含CheckStyle、PMD、FindBugs、JDepend 这个实例不仅仅对项目经理有意义,还有谁会获益?
选定使用哪些检查规则
在List列表中,选择本项目使用PMD的哪些规则
规则集名称 Basic规则 括号规则 Size规则集 Clone规则 Finalizer规则 Jakarta日志规则 移植规则 Sun安全代码规则 耦合规则 说明 检查代码结构,如空的try catch块,错误的类型转换等 检查if else、for、while、代码块的括号 检查带代码超长,类、方法、代码块的超长 检查克隆实现的完整度,避免脏克隆 检查finalize方法是否为空或者是否明确效用finalize 检查对Common-logging框架的不正确使用 检查代码JDK多版本切换的移植性 检查Sun的代码安全建议,如应该返回数组的副本 检查不必要的导入,API返回实现类而不是接口
代码检查工具
技术研发中心 张琦 2011.6
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查 四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
代码检查的目的
一个写代码的人提交的代码,我们对它“要求”什么呢
可运行 易维护 可靠 灵活
代码的易维护性,来源于代码结构、格式、命名等的统一
PMD:静态分析Java代码错误的工具,在Runtime前对代码 进行错误评估
包含 16 个规则集,对命名、未使用的代码、设计、代码尺寸、终 结函数、耦合等进行检查,当然它也可以自定义规则集 可以对JSP页面进行检查,但是规则集较少
两者更多的关注代码格式造成的缺陷、风险和问题,同一 个报警可能出现在两者的检查交集中 • 两者都可以集成到开发客户端的Eclipse环境中,也可以与 Maven集成生成代码质量评估报告
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查
三.一、CheckStyle 三.二、PMD
四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
CheckStyle的安装
在Eclipse IDE中安装CheckStyle插件,进行开发客户端检查
两种安装途径: 手工安装:
从http://eclipse-cs.sourceforge.net/上查询Eclipse的 CheckStyle插件,下载并放置到%ECLIPSE_HOME%\plugins目录中
从功能上与CheckStyle比较,PMD更多的集中在预先的代码缺 陷检测上,而且PMD更加突出了具体开发框架的检测,如 Jakarta-Log、JUnit,同时比CheckStyle增加了对代码访问 安全性的检查
使用PMD
为项目激活PMD检查:
Project[项目]Properties[属性]PMD[属性项]Enable PMD选中
使用PMD 首选项中设置PMD规则集
使用PMD 项目属性页中设置PMD激活
使用PMD
PMD提供了有关检测重复代码的功能,如检测复制粘贴的代码, CPD(Cut-and-Paste Detector)可以完成这个功能
重复的代码是我们重构的重要目标和重要任务
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查 四、静态逻辑Bug检查
四.一、FindBugs
五、衡量设计质量
六、一个实例的分析报告
FindBugs的安装
两种安装途径: 手工安装:
从http://findbugs.sourceforge.net/downloads.html上查询 Eclipse的FindBugs插件,下载并放置到%ECLIPSE_HOME%\plugins目 录中
代码检查工具的分类
静态语法 检查
CheckStyle
静态逻辑 Bug检查
设计质量 衡量
FindBugs
JDepend
PMD
静态语法检查
CheckStyle:目前最广泛使用的代码检查工具,代码格式 检查工具,以之可以构建定制化的代码规范模板
可以自定义代码规范模板,可以让开发者规约自己的代码,也可以 作为衡量代码定态质量的标准
使用FindBugs 首选项中设置FindBugs
使用FindBugs 项目属性页中设置FindBugs激活
使用FindBugs 对选定项目启动FindBugs检查
使用FindBugs 在FindBugs透视图中查看检查结果
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查 四、静态逻辑Bug检查 五、衡量设计质量
复杂逻 辑错误
资源读 写
Null指 针
更加专注于逻辑风险、错误 例如:可能发生的无限循环 效率低下的数据结构访问 等等„„
较为健壮的工作产品
设计质量衡量
JDepend:对每个Package的依赖性进行度量
JDepend可自动度量某个设计在以下三个方面的质量
可扩展性(Extensibility) 可重用性(Reusability) 可管理性(Maintainability)
它采用以下的指标来进行评价
包中类和接口的数量(Number of Classes and Interfaces) 包的抽象度(Abstractness) 向心耦合(Afferent Couplings (Ca)) 离心耦合(Efferent Couplings (Ce)) 包的不稳定程度(Instability (I)) 抽象程度与稳定程度的平衡关系(Distance from the Main Sequence (D)) 包的循环依赖度(Package Dependency Cycles)
讲述一个类(Class)自己的故事„„ ---《实现模式》 [美]Kent Beck
代码检查的目的
在代码提交前、执行前对代码进行质量保证
代码编制 代码检查 单元测试 集成测试 系统测试
1、代码检查是“静态”过程 2、代码检查重点关注编码的规范性,也关注代码错误 3、代码检查以多种维度进行检查 4、代码检查以量化的指标报告提供评价结论 5、代码检查只是质量提升的其中一个组成部分
使用FindBugs
为项目激活PMD检查:
Project[项目]Properties[属性]FindBugs[属性项]Enable project specific settings和Run Automatically 项目设定为Building Automatically
选定使用哪些检查类型
规则集名称 JavaDoc Comments Naming Conventions Imports Size Violations WhiteSpaces Modifiers Coding Problems 说明 对代码的JavaDoc注释进行检查
激活后,编译过程每次都会包含检查过程
检查命名规范性:大小写、变量/常量/方法命名 重点对导入进行检查,导入冗余、重复、未用等 对类、方法长度进行检查:行长度、文件长度、方法长度 重点对换行和空白进行控制,如Tab长度和位置等 检查修饰符顺序、位置合理性建议 检查常见的语法错误,空语句、循环变量冲突、赋值冲突
五.一、JDepend
六、一个实例的分析报告
JDepend的安装
两种安装途径: 手工安装:
从http://andrei.gmxhome.de/jdepend4eclipse/links.html下载 JDepend4Eclipse,放置到%ECLIPSE_HOME%\plugins目录中,重新启 动Eclipse,完成安装
使用JDepend 首选项中设置JDepend
使用JDepend 选中项目中源码目录或者代码包,执行JDepend检查
使用JDepend 在JDepend透视图中查看各个设计评价指标情况,分析设计质量
一、代码检查的目的 二、代码检查工具分类 三、静态语法检查 四、静态逻辑Bug检查 五、衡量设计质量 六、一个实例的分析报告
使用CheckStyle
为项目激活CheckStyle检查:
Project[项目]Properties[属性]CheckStyle[属性项 ]CheckStyle Active for this project选中
选定使用的检查规则集:
1. Sun Java编码规范规则 2. Sun Java编码规范Eclipse版本 3. 胜利软件编码规范Eclipse版本(从2中继承定制生成)