PMD代码分析工具使用报告
静态代码扫描工具PMD分析XML的核心源码解读(从core主入口到子语言解析)
静态代码扫描⼯具PMD分析XML的核⼼源码解读(从core主
⼊⼝到⼦语⾔解析)
本⽂基于6.1版本的PMD.如果你是⼯作中⽤到这个⼯具,请结合你的源码看.因为源码分析实际上DEBUG也能知道,但PMD涉及的类⾮常多,⼗遍debug 也不能掌握⼤部分吧.
0. ⼤纲
a) Core篇
b) XML篇
c) 后续
1.Core篇
PMD⽀持对XML⽂件的扫描,本⾝对xml的规则⽀持⾮常少,⽽且还分为xml,POM,wsdl等部分.看起来有四个ruleSets(规则集)实际上,没有⼏个规则(笑).本⽂主要对xml的解析进⾏源码跟踪解读,core篇涉及部分为参数配置的封装,对应parser(解析器)的⽣成,xpathRule的讲解.可能有部分漏,请谅解,本⽂⼤致做类的说明和⽅法调⽤,不写最详细的callgraph,因为我认为⼏个功能⼊⼝找对,便把握了核⼼.
⾸先PMD的解析⼊⼝是Core包下的net.sourceforge.pmd.PMD,⼊⼝⽅法是main,核⼼分析⽅法是doPMD⽅法.(下次会简单讲解下PMD的执⾏参数)
1public static int doPMD(PMDConfiguration configuration) {
2
3//使⽤⼯⼚⽅法来加载ruleSet 规则集.会将配置configuration对象⾥的ruleSet属性转换成对应的ruleSet..ruleSet是rule规则类的集合
4 RuleSetFactory ruleSetFactory = RulesetsFactoryUtils.getRulesetFactory(configuration, new ResourceLoader());
PMD使用说明
PMD使用说明
目录
静态分析工具PMD使用说明 (1)
目录 (2)
1.编写目的 (3)
2.PMD简介 (4)
3.PMD的安装和运行 (5)
3.1安装并从命令行运行PMD (5)
3.2在Eclipse中安装PMD插件运行方式 (7)
3.3 使用Ant进行调用 (9)
4.关于PMD规则 (10)
5.编写自定义的PMD规则 (15)
6.结束语 (17)
7.参考资料 (18)
1.目的
质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
在软件开发的过程中,以下几种情形随处可见:
1) 软件维护时间长,而且维护人员的积极性不高:
做过软件维护的开发人员,尤其是在接手不是自己开发产品的源码的时候,即使有良好的文档说明,仍然会对代码中冗长、没有注释的段落“叹为观止”。理解尚且如此困难,何况要修改或者增加新的功能。因此,很多开发人员不愿意进行软件维护的工作。
2)新的开发人员融入团队的时间比较长:
除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。
如何使用代码分析工具来查找代码性能问题
如何使用代码分析工具来查找代码性能问题代码性能问题是指代码在执行过程中出现的慢速运行、高占用资源、频繁出现错误等不良现象。为了找出并解决这些问题,可以使用
代码分析工具来帮助定位和优化。
代码分析工具是指一类用于分析源代码并生成与代码相关的统计
数据和分析报告的工具。这些工具可以帮助开发人员识别代码中的潜
在问题,比如低效的算法、内存泄漏、线程不安全等,从而提供相应
的优化建议。
下面介绍一些常用的代码分析工具以及它们的使用方法:
1.静态代码分析工具:
静态代码分析工具可以在不运行代码的情况下对源代码进行分析。它们通常会检查代码的语法、结构、逻辑等方面,并给出相应的警告
或错误信息。
(1) PMD:
PMD是一款Java代码静态分析工具,可以检查Java源代码中潜在的问题,例如未使用的变量、未关闭的资源等。它支持多种规则集,可以通过配置文件进行自定义。
(2) FindBugs:
FindBugs是一款基于静态分析原理的Java程序错误扫描工具。它不仅可以检测一般性错误,如null引用、空指针等,还可以检测潜在的性能问题,如循环内部的不必要计算、过度同步等。
(3) ESLint:
ESLint是一款用于JavaScript代码的静态分析工具,可以帮助开发人员识别和修复常见的编码错误和风格问题。它支持自定义规则和插件,可以根据项目需求进行配置。
2.动态代码分析工具:
动态代码分析工具可以在运行时监视代码的执行,并收集运行时数据以进行进一步的分析。它们主要用于发现性能问题、内存泄漏和并发错误等。
(1) VisualVM:
pmd规则
pmd规则
PMD规则是一种静态代码分析工具,用于在软件开发过程中帮助程序员检测
和修复潜在的代码问题。它是一种自动化的静态代码质量检查工具,可以帮助团队遵循统一的代码风格和最佳实践。
PMD规则覆盖了许多代码质量方面,包括代码复杂度、代码重复、代码安全性、代码风格等。通过在项目中集成PMD,开发团队可以在代码编写阶段就能够
找到和修复一些潜在的问题,从而提高代码质量和可维护性。
其中,代码复杂度是PMD规则中的一个重要方面。PMD通过度量代码的复杂性,包括方法的圈复杂度、类的行数、代码块的嵌套深度等指标,来帮助开发者识别出可能存在的问题。通过遵循PMD规则,团队可以减少复杂度过高的代码,提
高代码的可读性和可维护性。
另外,PMD还可以检测和修复代码中的重复。代码重复是一种常见的代码质
量问题,会导致代码冗余和维护困难。PMD可以通过比较代码片段的语法结构和
语义,来自动识别重复的代码,并提供相应的建议和修复方案。通过消除代码重复,团队可以提高代码的简洁性和可维护性。
此外,PMD还提供了一些安全性相关的规则,用于检测潜在的安全漏洞和风险。例如,PMD可以检测未经验证的输入、潜在的SQL注入、敏感信息的泄露等
安全问题。通过使用PMD规则中的安全性规则,团队可以尽早发现和修复潜在的
安全问题,从而降低系统被攻击的风险。
总结而言,PMD规则是一种有助于改善代码质量的静态代码分析工具。它通
过检测和修复代码复杂度、代码重复和安全性等问题,帮助开发团队提高代码的可读性、可维护性和安全性。通过集成PMD规则,开发团队可以在代码编写阶段就
pmd enbf语法
PMD enbf语法
什么是PMD?
PMD是一个静态代码分析工具,用于检测Java代码中的潜在问题和错误。它可以帮助开发人员在早期发现和修复代码中的问题,从而提高代码质量和可维护性。
PMD的优势
PMD具有以下几个优势:
1.自定义规则:PMD允许您根据项目的特定需求定义自己的规则。这意味着您
可以根据团队的编码标准和最佳实践来检查代码。
2.多语言支持:除了Java之外,PMD还支持其他编程语言,如C++、C#、
Python等。这使得它成为一个全能的静态代码分析工具。
3.易于集成:PMD可以与各种开发环境和构建工具集成,如Eclipse、
IntelliJ IDEA、Maven等。这使得它非常容易在项目中使用。
4.快速而准确:PMD使用了一些高效的算法和技术来提高分析速度,并且在检
测问题时非常准确。这使得开发人员能够快速找到并解决代码中的问题。
PMD enbf语法
enbf(扩展巴科斯范式)是一种用于描述语法的形式化表示方法。PMD使用enbf 语法来定义代码规则和检查器。
下面是一个简单的PMD enbf规则示例:
rule MyCustomRule {
description: "这是一个自定义规则的描述"
priority: 3
when:
MethodInvocation:
target:
FieldAccess:
field: "myField"
name: "myMethod"
}
上述代码是一个自定义规则,它指定了以下条件:
•规则名称为MyCustomRule
•规则描述为这是一个自定义规则的描述
•优先级为3
pmd 审计工具用法
pmd 审计工具用法
一、概述
PMD 是一款流行的静态代码分析工具,用于检测常见的编程错误,如未使用的变量、空的catch块、不必要的对象创建等。它支持多种编程语言,包括Java、C、C++、JavaScript等。本文档将详细介绍 PMD 审计工具的使用方法。
二、安装与配置
1. 下载 PMD 工具:访问 PMD 官方网站,下载适合您开发环境的版本。
2. 安装 PMD 工具:根据下载的安装包进行安装。
3. 配置 PMD 工具:根据您的开发环境,设置适当的文件和目录路径,以便 PMD 能够自动扫描代码。
三、使用步骤
1. 创建 PMD 规则文件:PMD 规则文件用于指定需要检查的代码模式。您可以根据具体需求创建自定义规则文件。
2. 导入规则文件:在 PMD 工具中导入自定义规则文件,以便于使用。
3. 指定要分析的代码目录或文件:在 PMD 工具中选择要分析的代码目录或文件。
4. 运行 PMD 工具:执行 PMD 工具,等待分析结果输出。
5. 查看分析结果:PMD 会输出代码中的潜在问题及其位置,以便于修复。
四、常见用法
1. 使用 PMD 分析 Java 代码:运行 PMD 工具,指定要分析的Java 代码目录或文件,即可得到分析结果。
2. 使用自定义规则:创建自定义规则文件,并导入 PMD 工具中,即可针对特定代码模式进行详细检查。
3. 多语言支持:PMD 支持多种编程语言,可以根据需要选择相应的语言版本进行分析。
4. 结果输出:PMD 支持多种结果输出方式,如文本、HTML、XML 等,可以根据需要选择合适的方式。
静态代码测试报告模板
静态代码测试报告模板
测试报告:
一、测试概述:
在本次测试中,我们对静态代码进行了全面的测试,以确保其功能的正确性和稳定性。本次测试主要包括以下方面:
1. 代码静态分析:通过使用静态代码分析工具对代码进行分析,以查找潜在的问题和错误。
2. 代码编译:使用适当的编译器对代码进行编译,并验证编译结果是否正确。
3. 代码规范检查:检查代码是否符合规范和最佳实践,以确保代码的可读性和可维护性。
二、测试环境:
本次测试所使用的环境和工具如下:
- 操作系统:Windows 10
- 编译器:gcc 9.3.0
- 静态代码分析工具:SonarQube 8.4
- 代码规范检查工具:PMD 6.33
三、测试结果:
经过全面的测试,我们得出以下测试结果:
1. 代码静态分析:
使用SonarQube对代码进行了静态分析,结果显示未发现任何潜在的问题或错误。所有的代码均符合最佳实践和规范要求。
2. 代码编译:
使用gcc编译器对代码进行编译,编译过程中没有出现任何错误或警告。编译结果显示所有文件均已成功编译。
3. 代码规范检查:
使用PMD工具对代码进行规范检查,结果显示代码符合规范要求,没有发现任何问题或违规行为。
四、问题和改进:
在本次测试中,未发现任何问题或错误。目前的静态代码质量良好,符合规范和最佳实践。如果未来需要进一步改进代码质量,则可以考虑以下方面:
1. 引入更多的静态代码分析工具,以提高对代码潜在问题的识别能力。
2. 定期进行代码审查,以发现代码中的潜在问题和改进建议。
3. 加强对代码规范的监督和培训,以确保团队成员的代码质量意识和技能水平的提升。
修改PMD总结
PMD报错原因修改总结
1.Avoid unnecessary Comparisons in Boolean exception.(Boolean类型重复判断)
错误例子: if(null! = a && a.size>0)
正确if(null! = a && false == a.IsEmpay())
2. Avoid Using implementation types like (ArrayList HashMap/ LinkedHashMap) ,use the interface instand.(用数组的接口类型)
错误例子:ArrayList<String> arraylist=new ArrayList<String>();
正确List<String> list=new ArrayList<String>();
错误例子: private static HashMap map=new HashMap();
正确private static Map map=new HashMap();
错误例子: private static LinkedHashMap map=new LinkedHashMap();
正确private static Map map=new LinkedHashMap();
3. Method names should not start with capital letters(方法名不能以大写开头)。
错误例子: public class Start()
pmd标准
pmd标准
PMD标准是一种静态代码分析工具,它被广泛用于软件开发中,旨在发现代码中潜在的问题和错误,从而提高代码质量和可维护性。PMD标准采用规则集合的方式,通过对代码进行静态扫描和分析,提供针对代码风格、错误和潜在漏洞的建议。
首先,PMD标准帮助开发人员遵循一致的代码规范和风格。它可以检查代码中的缩进、命名规范、代码长度等方面的问题,确保代码的可读性和可理解性。通过遵循统一的代码规范,团队成员可以更好地理解和维护彼此的代码,从而提高开发效率和代码质量。
其次,PMD标准还能够发现代码中潜在的错误和问题。它可以检测常见的错误模式,如空指针引用、未使用的变量、重复的代码等。通过及时发现并修复这些问题,可以减少软件的漏洞和故障,提高软件的稳定性和可靠性。
此外,PMD标准还提供了一些特定领域的规则和检查。例如,对于Java开发人员来说,PMD标准可以检查代码中的优化问题,如无用的循环、未使用的方法或变量等。通过优化代码,可以提升程序的性能和效率。
综上所述,PMD标准是一种强大的静态代码分析工具,可以帮助开发人员发现代码中的问题和潜在错误,改善代码质量和可维护性。通过遵循PMD标准,团队成员可以共同遵守统一的代码规范,减少错误并提高开发效率。对于开发人员来说,使用PMD标准是提高代码质量的重要步骤之一。
maven pmd 自定义规则
maven pmd 自定义规则
如何使用Maven PMD来自定义规则。
在软件开发过程中,代码质量一直是一个非常重要的问题。为了保证代码质量,我们需要确保代码遵循一定的规范和最佳实践。PMD是一个静态代码分析工具,可以帮助我们发现代码中的潜在问题和不良实践。在本文中,我们将重点介绍如何使用Maven PMD来自定义规则,以提高代码质量。
一、了解Maven PMD
Maven PMD是PMD静态代码分析工具的一个插件,它可以集成到Maven构建过程中,帮助我们在编译阶段自动进行代码分析。通过Maven PMD,我们可以使用一系列预定义的规则来检查代码,以提高代码质量和可维护性。同时,Maven PMD还提供了自定义规则的功能,使我们能够根据项目的特定需求定义自己的代码规范。
二、配置Maven PMD插件
首先,我们需要在项目的pom.xml文件中配置Maven PMD插件。在<build>标签中加入如下配置:
xml
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.14.0</version>
<executions>
<execution>
<id>pmd</id>
pmd静态源码分析工具简介及配置
pmd静态源码分析⼯具简介及配置
在正式进⼊测试之前,进⾏⼀定的静态代码分析及code review对代码质量及系统提⾼是有帮助的,以上为数据证明
Pmd 它是⼀个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:
– 可能的bug——空的try/catch/finally/switch块。
– ⽆⽤代码(Dead code):⽆⽤的本地变量,⽅法参数和私有⽅法。
– 空的if/while语句。
– 过度复杂的表达式——不必要的if语句,本来可以⽤while循环但是却⽤了for循环。
– 可优化的代码:浪费性能的String/StringBuffer的使⽤。
下载pmd ,配置CLASSPATH等内容
requirement
1.6 or higher
or the free
将压缩包解压在C盘
cmd 后然后输⼊以下内容:
-dir 指定⽬录, -f 指定⽣成的结果的格式 -R 使⽤何种规则进⾏检测
rulesets/java/*.xml 具体地址在pmd-bin-5.4.2\bin
规则如下:
PMD 包含 16 个规则集,涵盖了 Java 的各种常见问题,其中⼀些规则要⽐其他规则更有争议:
基本(rulesets/basic.xml)—— 规则的⼀个基本合集,可能⼤多数开发⼈员都不认同它:catch块不该为空,⽆论何时重写equals(),都要重写hashCode(),等等。
命名(rulesets/naming.xml)—— 对标准 Java 命令规范的测试:变量名称不应太短;⽅法名称不应过长;类名称应当以⼩写字母开头;⽅法和字段名应当以⼩写字母开头,等等。
用PMD自动执行Java代码静态分析
用PMD自动执行Java代码静态分析
一、基础知识
PMD是一种分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,例如没有用到的变量、多余的变量创建操作、空的catch块,等等。此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket对象的操作。
最初,PMD是为了支持Cougaar项目而开发的。Cougaar是美国国防高级研究计划局(Defense Advanced Research Projects Agency,DARPA)的一个项目。DARPA开放了PMD 的源代码,所以PMD被发布到了SourceForge网站上。不久前,PMD的下载次数就超过了14000次,页面浏览次数超过了130000次。更重要的是,在源代码开放作者的努力下,越来越多的PMD规则和IDE插件被开发出来,然后加入到了PMD的核心项目之中。
你可以从PMD的网站下载PMD的二进制版本,或下载带源代码的版本,下载得到的都是ZIP文件。假设你下载了二进制版本,先把它解压缩到任意一个目录。接下来怎么做,就要看你准备怎么用它——最简单的,如果要在一个Java源代码目录中运行PMD,只需直接在命令行上运行下面的命令:
C:\data\pmd\pmd>java -jar lib\pmd-1.02.jar c:\j2sdk1.4.1_01\src\java\util
静态分析工具pmd使用说明(StaticanalysistoolsusePMD)
静态分析工具pmd使用说明(Static analysis tools use PMD)Static analysis tools use PMD
Catalog
Static analysis tools using PMD 1.
2 directory.
1. the purpose of the preparation of 3.
2. introduction to PMD 4.
The installation and operation of 3. PMD 4.
3.1 install and run PMD. from the command line 4
3.2 in the Eclipse install PMD plug-in operation mode 6.
3.3 using Ant to call 8.
4. on the PMD 10 rules.
5. user-defined PMD rule 15.
6. conclusion 18.
7. reference 18.
1. the purpose of the preparation
Quality is the key factor to measure the success of a software. But for the commercial software system, especially the enterprise application software system, in addition to software quality, document quality, code quality is also very important. Software development to the encoding stage, the biggest risk lies in how to ensure the readability and consistency of the code, which makes the software maintenance cost is not high.
如何使用代码分析工具来查找代码漏洞
如何使用代码分析工具来查找代码漏洞
代码分析工具是一种用于静态代码分析的软件工具,可以帮助开
发人员检测和诊断潜在的代码漏洞和其他质量问题。它们能够通过检
查代码的结构、语法和规范来发现常见的编程错误,并提供建议和指
导来改善代码的可维护性和安全性。在本文中,我们将探讨如何使用
代码分析工具来查找代码漏洞。
1.选择适合的代码分析工具
首先,我们需要选择适合我们项目和编程语言的代码分析工具。
目前市面上有很多优秀的代码分析工具,如SonarQube、FindBugs、PMD等,可以满足不同需求的开发团队。我们需要了解各种工具的功能和特点,并根据自己的项目需求来选择最符合要求的工具。
2.配置代码分析工具
一旦选择了适合的代码分析工具,我们需要配置工具以适应我们
的项目。这通常涉及指定要分析的源代码文件和设置分析器的规则集。不同的工具有不同的配置方式,我们需要根据文档和指南来进行配置。
3.运行代码分析工具
配置完成后,我们可以运行代码分析工具来执行静态代码分析。通常,可以在开发环境中集成代码分析工具,以便在开发过程中自动进行代码检查。另外,我们还可以定期运行代码分析工具来检查代码库中的全部代码。
4.解读和分析结果
代码分析工具会生成一个详细的报告,其中包含了代码中发现的漏洞和问题列表。我们需要仔细阅读和分析这些结果,并按照严重性和优先级进行排序。一些常见的代码漏洞包括缓冲区溢出、空指针引用、未初始化变量和安全漏洞等。我们需要根据报告提供的信息来理解这些问题,并进一步分析它们的原因和可能的解决方案。
5.修复代码漏洞
静态分析报告
静态分析报告
1. 简介
本文档是对静态分析结果的报告,通过对代码的静态分析,我们可以发现潜在的代码质量问题、安全漏洞和性能瓶颈等。
2. 分析工具
在本次静态分析中,我们使用了以下几种常见的静态分析工具:
•ESLint:用于JavaScript代码的静态分析和代码风格检查。
•PMD:用于Java代码的静态分析,可以检测出代码中的潜在问题和不良习惯。
•Bandit:用于Python代码的静态分析,主要用于检测安全问题。
•SonarQube:一个综合性的代码质量管理平台,提供了强大的静态代码分析功能。
3. 分析结果
3.1 ESLint 分析结果
我们使用ESLint对JavaScript代码进行了静态分析,发现了以下几个问题:•在某些函数中存在未使用的变量,建议删除这些未使用的变量以减少代码冗余。
•某些地方使用了eval函数,这可能导致安全漏洞,建议避免使用eval函数。
•在某些地方使用了未定义的变量,建议先声明再使用变量,避免造成意外的错误。
•某些函数没有添加 JSDoc 注释,建议为函数添加适当的注释,提高代码可读性。
3.2 PMD 分析结果
我们使用PMD对Java代码进行了静态分析,发现了以下几个问题:•某些类的方法中存在未使用的变量,建议删除这些未使用的变量以减少代码冗余。
•某些类的方法过长,建议将过长的方法进行拆分,提高代码的可维护性。
•某些类的方法存在过多的参数,建议合理减少方法的参数数量,提高代码的可读性。
3.3 Bandit 分析结果
我们使用Bandit对Python代码进行了静态分析,发现了以下几个安全问题:•在某些地方使用了不安全的pickle模块,建议使用更安全的序列化方式来避免潜在的安全漏洞。
静态分析工具:Coverity、PMD、Findbugs的功能和性能对比分析
静态分析工具:Coverity、PMD、Findbugs
的功能和性能对比分析
静态分析工具是软件开发中的重要工具之一,可以在代码开发的
早期阶段发现代码中的潜在问题和错误,提高软件的质量和稳定性。
常见的静态分析工具包括Coverity、PMD、Findbugs等。本文将对这
三种工具的功能和性能进行分析比较。
一、Coverity
Coverity是一款由美国Coverity公司开发的静态代码分析工具,可以对C、C++、Java等多种编程语言的代码进行静态分析。它采用了
静态分析、组合分析、运行时分析等多种技术,可以对代码中的缺陷、漏洞、内存泄漏、死锁等问题进行检测和修复。Coverity还提供了基
于Web的分析工作流,可以方便地进行合并、跟踪和修复问题。
优点:
1.准确性高:Coverity使用了多种静态分析技术和组合分析技术,能够较为准确地检测到各种代码问题和缺陷。
2.速度快:Coverity的分析速度比较快,可以在短时间内完成对大量代码的分析和检测。
3.易于使用:Coverity提供了基于Web界面的分析工作流,方便用户进行问题跟踪和修复。
缺点:
1.价格较高:Coverity是一款商业软件,需要用户购买授权才能使用,价格比较高。
2.仅适用于部分编程语言:Coverity只能对C、C++、Java等几种编程语言的代码进行分析,不能支持其他编程语言。
二、PMD
PMD是一种Java代码的静态分析工具,可以检测Java代码中的常见问题和错误,如未使用变量、空循环、异常捕获不当等。PMD使用了静态分析技术和规则引擎,可以帮助开发人员提高代码质量和可维护性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PMD
Eclipse-pmd插件下载:
网上给出的url都无法使用,可以去http://sourceforge.jp/projects/sfnet_pmd/releases/ 手动下载插件,解压后复制到eclipse的plugin和features目录下。重启eclipse后,windows —>preferences 下看到PMD选项则说明安装成功。
PMD使用:
1.检查代码
1)右键项目,PMD—>Check Code With PMD
2)在PMD视图下,可以看到检查结果。每个代码文件的违反规则的地方都被列出,右上角的五色圆形按钮,可以按照违规等级过滤列出的信息。从左到右依次为error high, error, warning high, warning, information。
3)在package explorer和代码文件中都会有标记
2.生成检查报告
1)检查后,右键项目,PMD—>Generate Reports。在项目目录下会生成reports文件夹,存
放检查报告。
3.清除违规标记
1)右键项目,PMD—>Clear PMD Violations
4.编辑检查规则
1)Window—>Preferences,左侧选择PMD—>Rules Configuration。
在Rules下已显示出PMD自带的检查规则。点击右侧Add rule 按钮,进入规则制定界面,如下所示。
检查规则在XPath项配置。
2)Window—>preferences—>PMD,点击Rule Designer,可以设计自己的规则。
输入Source Code和XPath Query,点击Go,可以查看PMD根据源代码生成的抽象语法数(AST)和匹配结果。
PS:想要熟练配置自己的规则,需要对XPath和PMD工作原理有一定的了解。可参考PMD 使用说明.doc中相关内容。
CheckStyle
Eclipse-CheckStyle插件下载:
/projects/eclipse-cs/files/ 手动下载插件,解压后复制到eclipse的plugin和features目录下。重启eclipse后,windows—>preferences 下看到checkstyle选项则说明安装成功。
Checkstyle使用:
1.代码检查
1)右键项目,checkstyle—>check code with checkstyle.
违规处高亮显示。
违规信息和其他warning、error信息一起显示在Markers标签下。
2)激活checkstyle,自动检查代码。右键项目,checkstyle—>activate checkstyle。在写代码时,可以实时提示违反规则的代码。
2.定制规则
1)Window—>Preferences,在左侧选择checkstyle。
已有的两个规则不能改变,点击New... 自定义规则。新建后,在如下界面编辑各项规则。
FindBugs
Eclipse-FindBugs插件下载:
http://sourceforge.jp/projects/sfnet_findbugs/releases/
FindBugs使用:
使用方法与前两个很相似。
比较
检查规则:
三者都提供了很多检查规则,且可以生成检查报告。并且利用这些报告,能够提取里面涉及的规则,在其他地方使用。
PMD的自定义规则更加灵活,可使用XPath定义各种规则。
checkstyle是在原来较为严格的规则基础上做定制和修改,无法定义新规则。
findbugs只能在原来的基础上做定制,无法修改规则,findbugs若要定义新规则,需要引入jar包。
检查对象:
PMD对.java原代码进行检查,将源代码解析成抽象语法树(AST),检查源代码中潜在的问题。主要包括:空try/catch/finally/switch语句块,未使用的局部变量、参数和private 方法,空if/while语句,过于复杂的表达式,如不必要的if语句等,复杂类。
CheckStyle对源代码进行检查。主要包括: Javadoc注释,命名规范,多余没用的Imports,Size度量,如过长的方法,缺少必要的空格Whitespace,重复代码。
FindBugs检查.class文件,基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug。主要检查bytecode中的bug patterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==而不是equals)等。
使用目的:
PMD:使代码更简洁明了,方法、变量命名更加规范,增强可读性。
CheckStyle:规范代码的格式,统一代码风格。
FindBugs:找出代码中存在的明显的可能导致bug的缺陷。
以下是分析示例,对同一段代码使用3种工具进行检查,体现各自的侧重点。
PMD
CheckStyle
提示有:import中有“.*”,缺少Javadoc Comment,一些符号前后缺少空格,一些常量是magic number,语句后有多余空格,一行的代码长度超长,空的块等。
FindBugs
提示有:s.replace(“bc”,”cb”) 的返回值被忽略,存在明显的无限循环。