资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
常用常用JAVAJAVA代码质量静态检查工具代码质量静态检查工具 目录目录 n n 软件开发经历反省软件开发经历反省 n n 我们代码中常见几类问题我们代码中常见几类问题 n n Quality Metrics Tools Quality Metrics Tools CheckStyleCheckStyle PMDPMD FindBugsFindBugs 我们代码中常见几类问题我们代码中常见几类问题 使用了不规范的变量和方法名使用了不规范的变量和方法名 EsbResultModelEsbResultModel validRule(HashMapvalidRule(HashMap orderInfoorderInfo, , ArrayListArrayList orderItemsorderItems, String Role); , String Role); String roleString role要小写要小写 类、类、public public 方法和常量方法和常量javadocjavadoc的缺失的缺失 javadocjavadoc中的声明跟实际的方法不一致,例如方法实际只有中的声明跟实际的方法不一致,例如方法实际只有1 1个参个参 数,而数,而javadocjavadoc里里paramparam定义了多个(估计是方法签名的时候没定义了多个(估计是方法签名的时候没 有同步的修改有同步的修改javadocjavadoc) 我们代码中常见几类问题我们代码中常见几类问题 错误的使用错误的使用/* */ /* */ 和和/* */* */ 很多很多publicpublic方法和常量使用了方法和常量使用了/* */* */来注释,导致注释内容不能被写来注释,导致注释内容不能被写 入入javadocjavadoc。而另一方面是错误使用。而另一方面是错误使用/* */* */导致错误的内容被写入导致错误的内容被写入 javadocjavadoc 存在未被使用的方法和变量存在未被使用的方法和变量 这些不被使用方法和变量名会增加日后这些不被使用方法和变量名会增加日后bugbug修改、代码维护的成本修改、代码维护的成本 方法超长方法超长 一个方法超过一个方法超过150150行,是不是太长太复杂了行,是不是太长太复杂了。 我们代码中常见几类问题我们代码中常见几类问题 代码中有不少代码中有不少magic-numbermagic-number和和magic-magic- stringstring 刘谦的魔术不好看,所以如果你维护的代码跟刘谦的一样,估计你也会刘谦的魔术不好看,所以如果你维护的代码跟刘谦的一样,估计你也会 抓狂的!抓狂的! String s = String s = “ “00000000” ” + + Integer.toString(chInteger.toString(ch, 16); 0000, 16); 0000是什么,是什么,1616是啥东东是啥东东 ,就算是作者,就算是作者3 3个礼拜也不记得当初写这段代码的用意了。个礼拜也不记得当初写这段代码的用意了。 ImportImport了一些不需要的类了一些不需要的类 提交代码以前请务必提交代码以前请务必Organize ImportsOrganize Imports。 我们代码中常见几类问题我们代码中常见几类问题 有些代码的写法不容易理解有些代码的写法不容易理解 不一致的代码风格不一致的代码风格 例如,例如,String String oneitemsoneitems vsvs String String oneitemsoneitems 前者是前者是C/C+C/C+的编码的编码 风格;咱们写的是风格;咱们写的是javajava,就统一用,就统一用String String oneitemsoneitems吧。吧。 NONO EXCUTABLEEXCUTABLE Why using Why using Quality Metrics Tools Quality Metrics Tools 一个软件的生命周期中,一个软件的生命周期中,80%80%的花费在于的花费在于 维护维护 几乎没有任何一个软件,在其整个生命周几乎没有任何一个软件,在其整个生命周 期中,均由最初的开发人员来维护期中,均由最初的开发人员来维护 编码规范可以改善软件的可读性,可以让编码规范可以改善软件的可读性,可以让 程序员尽快而彻底地理解新的代码程序员尽快而彻底地理解新的代码 CheckStyleCheckStyle CheckStyleCheckStyle用来检查代码格式、规范、风格用来检查代码格式、规范、风格 检查并强制执行统一的代码风格检查并强制执行统一的代码风格 检查检查JavadocJavadoc 检查类、变量、方法的命名检查类、变量、方法的命名 检查类和方法的大小检查类和方法的大小 检查编码错误,例如检查编码错误,例如magic numbermagic number CheckstyleCheckstyle- -安装安装 EclipseEclipse插件地址插件地址 http:/eclipse-http:/eclipse- CheckstyleCheckstyle- -启用启用 CheckstyleCheckstyle配置规范配置规范 CheckstyleCheckstyle使用效果使用效果 黄色的区域就是黄色的区域就是checkstylecheckstyle检查出有问题的检查出有问题的 地方(红色表示错误,黄色表示警告)。地方(红色表示错误,黄色表示警告)。 CheckstyleCheckstyle- -注意事项注意事项 修改修改Eclipse Java Code Style FormatterEclipse Java Code Style Formatter配置配置 ,由于,由于EclipseEclipse默认设置换行后的缩进符号默认设置换行后的缩进符号 为为tab tab ,而,而JavaJava规范不允许代码中有规范不允许代码中有tabtab, 因为因为tabtab在不同的操作系统下的长度占位不在不同的操作系统下的长度占位不 同,有的是同,有的是4 4个空格,有的是个空格,有的是8 8个空格,因个空格,因 此我们要修改这个配置为空格。此我们要修改这个配置为空格。 CheckstyleCheckstyle- -注意事项注意事项 PMDPMD PMDPMD提供了一些开发过程中的最佳实践。提供了一些开发过程中的最佳实践。 Possible bugs - empty try/catch/finally/switch Possible bugs - empty try/catch/finally/switch statements statements Dead code - unused local variables, parameters Dead code - unused local variables, parameters and private methods and private methods Suboptimal code - wasteful String/Suboptimal code - wasteful String/StringBufferStringBuffer usage usage Overcomplicated expressions - unnecessary if Overcomplicated expressions - unnecessary if statements, for loops that could be while loops statements, for loops that could be while loops Duplicate code - copied/pasted code means Duplicate code - copied/pasted code means copied/pasted bugs copied/pasted bugs PMD-Exception PMD-Exception 规则规则 AvoidCatchingThrowableAvoidCatchingThrowable SignatureDeclareThrowsExceptionSignatureDeclareThrowsException ExceptionAsFlowControlExceptionAsFlowControl AvoidThrowingRawExceptionTypesAvoidThrowingRawExceptionTypes AvoidThrowingNullPointerExceptionAvoidThrowingNullPointerException AvoidRethrowingExceptionAvoidRethrowingException DoNotExtendJavaLangErrorDoNotExtendJavaLangError DoNotThrowExceptionInFinallyDoNotThrowExceptionInFinally AvoidThrowingNewInstanceOfSameExceptionAvoidThrowingNewInstanceOfSameException http:/ PMDPMD PMDPMD中的很多规则会比较有争议,或者跟大中的很多规则会比较有争议,或者跟大 家现有的技术框架、代码结构有冲突。家现有的技术框架、代码结构有冲突。 大家可以通过自定义的这些规则的级别(大家可以通过自定义的这些规则的级别( ErrorError,WarningWarning)来把握对这些规则的使用)来把握对这些规则的使用 程度。程度。 FindBugsFindBugs FindBugsFindBugs是一个专门分析是一个专门分析JAVAJAVA代码问题的静代码问题的静 态代码扫描工具,它是由一位马里兰大学的态代码扫描工具,它是由一位马里兰大学的 博士写的;博士写的; FindBugsFindBugs可以发现的问题包括:多线程竞争可以发现的问题包括:多线程竞争 问题,性能问题,安全问题,代码规范问题,性能问题,安全问题,代码规范. . 官方网站是:官方网站是: http:/ ; FindBugsFindBugs 当前版本为:当前版本为:1.3.9 ; 1.3.9 ; FindBugsFindBugs能做什么能做什么 FindbugsFindbugs 是一个静态分析工具,它检查类或是一个静态分析工具,它检查类或 者者 JAR JAR 文件,将字节码与一组缺陷模式进行文件,将字节码与一组缺陷模式进行 对比以发现可能的问题。利用这个工具,就对比以发现可能的问题。利用这个工具,就 可以在不实际运行程序的情况对软件进行分可以在不实际运行程序的情况对软件进行分 析。它可以帮助改进代码的质量。析。它可以帮助改进代码的质量。 FindbugsFindbug
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号