PMD代码分析工具使用报告
掌握并使用代码复杂度分析工具的基本原理
掌握并使用代码复杂度分析工具的基本原理代码复杂度分析工具是一种用来评估计算机程序代码复杂度的工具。
它可以帮助开发人员发现代码中的潜在问题,提高代码的可读性和可维护性。
本文将深入探讨代码复杂度分析工具的基本原理,并介绍常见的代码复杂度分析工具。
一、代码复杂度分析的基本原理在程序设计中,代码的复杂度是指代码的难度和复杂程度。
代码的复杂度可以从不同的角度进行评估,包括结构、逻辑和规模等。
代码复杂度分析工具主要通过静态分析的方式对代码进行评估,从而帮助开发人员发现潜在的问题。
1.静态分析静态分析是指在不执行程序的情况下对程序代码进行分析。
代码复杂度分析工具通过分析代码的结构和逻辑来评估代码的复杂度。
静态分析可以帮助开发人员发现代码中的潜在问题,例如逻辑错误、死代码和性能问题等。
2.代码度量代码复杂度分析工具通过代码度量来评估代码的复杂度。
代码度量是指对代码进行量化分析,通过测量代码的各种指标来评估代码的复杂度。
常见的代码度量指标包括代码行数、圈复杂度、嵌套深度和代码耦合度等。
3.圈复杂度圈复杂度是衡量代码复杂度的一个重要指标。
它是指在程序的控制流图中,一个程序的节点数和边数的比值。
圈复杂度可以帮助开发人员评估代码的复杂程度,从而发现潜在的问题。
通常来说,圈复杂度越高,代码的复杂度就越高。
二、常见的代码复杂度分析工具代码复杂度分析工具有很多种,常见的代码复杂度分析工具包括Lint、PMD、Checkstyle和SonarQube等。
这些工具可以帮助开发人员对代码进行静态分析,发现潜在的问题,并提供建议和修复方案。
1. LintLint是一个用于检测编程中的错误的工具。
它可以对C、C++、Java等语言的代码进行静态分析,发现潜在的问题。
Lint可以检测代码中的语法错误、逻辑错误和性能问题等,并给出建议和修复方案。
Lint可以帮助开发人员提高代码的质量和可靠性。
2. PMDPMD是一个用于检测Java代码中潜在问题的工具。
使用PMD检查代码Bug
使用PMD检查代码BugPMD是一种开源分析Java代码错误的工具,他分析Java源代码并找出源代码潜在的Bug,例如发现不需要使用的变量、空的catch块和不需要创建的对象等。
它还包含一个CPD工具可以探测一块代码中相同的部分;PMD是通过规则的方式来进行检查的代码项。
PMD包含16个规则集,涵盖了Java 的各种常见问题。
●基本(rulesets/basic.xml)——规则的一个基本集合:catch不该为空,无论何时重写equals(),都要重写hashCodeI()等。
●命名(rulesets/naming.xml)——对标准的java命名规范的测试:变量名称不应太短;方法名不应过长;类名称应当以小写字母开头;方法和字段名应该以小写字母开头等。
●未使用的代码(rulesets/unusedcode.xml)——查找未使用的私有字段和本地变量、执行到的语句、从未调用的私有方法等。
●设计(rulesets/design.xml):检查各种设计良好的原则,例如switch语句应当有default块,应当避免深度嵌套的if块,不应当给参数重新赋值,不应该对double 值进行相等比较。
●导入语句(rulesets/imports.xml):检查import语句的问题,比如一个类被导入两次或者导入lang包中的类。
●JUnit测试(ruleset/junit.xml):查找测试用例和测试方法的特定问题,例如方法名称的正确拼写,以及suite()方法是不是static和public;●字符串(rulesets/string.xml):找出处理字符串时遇到的常见问题,例如重复的字符串标量,调用String构造函数,对String变量调用toString()方法。
●括号(rulesets/braces.xml):检查for、if、while和else语句是否使用了括号。
●代码尺寸(rulesets/codesize.xml):测试过长的方法、有太多方法的类,以及重构方面的类似问题。
pmd规则
pmd规则PMD规则是一种静态代码分析工具,用于在软件开发过程中帮助程序员检测和修复潜在的代码问题。
它是一种自动化的静态代码质量检查工具,可以帮助团队遵循统一的代码风格和最佳实践。
PMD规则覆盖了许多代码质量方面,包括代码复杂度、代码重复、代码安全性、代码风格等。
通过在项目中集成PMD,开发团队可以在代码编写阶段就能够找到和修复一些潜在的问题,从而提高代码质量和可维护性。
其中,代码复杂度是PMD规则中的一个重要方面。
PMD通过度量代码的复杂性,包括方法的圈复杂度、类的行数、代码块的嵌套深度等指标,来帮助开发者识别出可能存在的问题。
通过遵循PMD规则,团队可以减少复杂度过高的代码,提高代码的可读性和可维护性。
另外,PMD还可以检测和修复代码中的重复。
代码重复是一种常见的代码质量问题,会导致代码冗余和维护困难。
PMD可以通过比较代码片段的语法结构和语义,来自动识别重复的代码,并提供相应的建议和修复方案。
通过消除代码重复,团队可以提高代码的简洁性和可维护性。
此外,PMD还提供了一些安全性相关的规则,用于检测潜在的安全漏洞和风险。
例如,PMD可以检测未经验证的输入、潜在的SQL注入、敏感信息的泄露等安全问题。
通过使用PMD规则中的安全性规则,团队可以尽早发现和修复潜在的安全问题,从而降低系统被攻击的风险。
总结而言,PMD规则是一种有助于改善代码质量的静态代码分析工具。
它通过检测和修复代码复杂度、代码重复和安全性等问题,帮助开发团队提高代码的可读性、可维护性和安全性。
通过集成PMD规则,开发团队可以在代码编写阶段就发现和解决一些潜在的代码问题,提升代码质量和开发效率。
如何使用代码分析工具来查找代码性能问题
如何使用代码分析工具来查找代码性能问题代码性能问题是指代码在执行过程中出现的慢速运行、高占用资源、频繁出现错误等不良现象。
为了找出并解决这些问题,可以使用代码分析工具来帮助定位和优化。
代码分析工具是指一类用于分析源代码并生成与代码相关的统计数据和分析报告的工具。
这些工具可以帮助开发人员识别代码中的潜在问题,比如低效的算法、内存泄漏、线程不安全等,从而提供相应的优化建议。
下面介绍一些常用的代码分析工具以及它们的使用方法:1.静态代码分析工具:静态代码分析工具可以在不运行代码的情况下对源代码进行分析。
它们通常会检查代码的语法、结构、逻辑等方面,并给出相应的警告或错误信息。
(1) PMD:PMD是一款Java代码静态分析工具,可以检查Java源代码中潜在的问题,例如未使用的变量、未关闭的资源等。
它支持多种规则集,可以通过配置文件进行自定义。
(2) FindBugs:FindBugs是一款基于静态分析原理的Java程序错误扫描工具。
它不仅可以检测一般性错误,如null引用、空指针等,还可以检测潜在的性能问题,如循环内部的不必要计算、过度同步等。
(3) ESLint:ESLint是一款用于JavaScript代码的静态分析工具,可以帮助开发人员识别和修复常见的编码错误和风格问题。
它支持自定义规则和插件,可以根据项目需求进行配置。
2.动态代码分析工具:动态代码分析工具可以在运行时监视代码的执行,并收集运行时数据以进行进一步的分析。
它们主要用于发现性能问题、内存泄漏和并发错误等。
(1) VisualVM:VisualVM是一款用于Java应用程序的性能分析工具,可以监视Java程序的CPU、内存和线程使用情况。
它提供了强大的分析和诊断功能,可以帮助开发人员确定性能瓶颈和内存泄漏等问题。
(2) Apache JMeter:Apache JMeter是一个Java程序,用于测试性能和负载的工具。
它可以模拟大量用户同时访问一个网站或应用程序,并测量系统的性能指标。
静态分析工具PMD使用说明文档V1.6
静态分析工具PMD使用说明中科软科技股份有限公司2008年12月目录目录 (2)1 前言 (3)1.1编写目的 (3)1.2修订历史 (3)2 PMD简介 (4)3PMD的安装与运行 (4)3.1安装并从命令行运行PMD (4)3.2 Eclipse中PMD插件的安装及使用 (5)3.3 使用Ant进行PMD调用 (8)4 关于PMD规则 (9)4.1 PMD缺省规则 (9)4.2 PMD推荐规则 (10)4.3 PMD规则自定义 (10)4.4 注意事项 (11)5PMD规则编写 (11)5.1前提条件 (11)5.2 PMD实现原理 (12)5.3 PMD实现过程 (12)5.4 JAVA代码编写规则 (12)5.5 XPath语言编写规则 (12)6XPATH基础 (14)6.1 XPATH作用 (14)6.2 XPATH数据类型 (14)6.3 XML文档结构 (15)6.4 XPATH中节点匹配 (15)7 参考资料 (17)8附件......................................................................................................... 错误!未定义书签。
附一中科软推荐规则集............................................................... 错误!未定义书签。
附二PMD规则集详细说明.......................................................... 错误!未定义书签。
1前言1.1编写目的质量是衡量一个软件是否成功的关键要素。
而对于商业软件系统,尤其是企业应用软件系统来说,除了软件运行质量、文档质量以外,代码的质量也是非常重要的。
软件开发进行到编码阶段的时候,最大的风险就在于如何保证代码的易读性和一致性,从而使得软件的维护的代价不会很高。
PMD代码分析工具使用报告
PMDEclipse-pmd插件下载:网上给出的url都无法使用,可以去http://sourceforge.jp/projects/sfnet_pmd/releases/ 手动下载插件,解压后复制到eclipse的plugin和features目录下。
重启eclipse后,windows —>preferences 下看到PMD选项则说明安装成功。
PMD使用:1.检查代码1)右键项目,PMD—>Check Code With PMD2)在PMD视图下,可以看到检查结果。
每个代码文件的违反规则的地方都被列出,右上角的五色圆形按钮,可以按照违规等级过滤列出的信息。
从左到右依次为error high, error, warning high, warning, information。
3)在package explorer和代码文件中都会有标记2.生成检查报告1)检查后,右键项目,PMD—>Generate Reports。
在项目目录下会生成reports文件夹,存放检查报告。
3.清除违规标记1)右键项目,PMD—>Clear PMD Violations4.编辑检查规则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中相关内容。
CheckStyleEclipse-CheckStyle插件下载:/projects/eclipse-cs/files/ 手动下载插件,解压后复制到eclipse的plugin和features目录下。
pmd代码分析工具使用报告
PMD代码分析工具使用报告1. 引言在软件开发过程中,我们经常会遇到代码质量问题,例如潜在的性能问题、代码重复、安全漏洞等。
为了提高代码质量,我们可以借助一些工具来进行代码分析和检查。
本文将介绍使用PMD代码分析工具对项目进行静态代码分析的使用方法和结果报告。
2. PMD简介PMD是一个开源的静态代码分析工具,它可以自动检测出代码中的一些常见问题,并提供相应的修复建议。
PMD支持多种编程语言,包括Java、C/C++、Python等。
它可以帮助开发人员在早期发现并修复代码质量问题,提高软件质量和可维护性。
3. 安装和配置安装PMD非常简单,在命令行运行以下命令即可:$ npm install -g pmd安装完成后,我们需要对PMD进行一些配置。
首先,创建一个.pmdrc文件,用于配置PMD的规则和选项。
示例配置如下:{"rules":{"unused-variable":true,"long-method":true,"naming-convention":true}}在这个示例配置中,我们启用了三个规则:unused-variable(未使用的变量)、long-method(过长的方法)和naming-convention(命名规范)。
你可以根据项目的实际需求自定义规则。
4. 使用方法在项目根目录下运行以下命令,即可对项目进行静态代码分析:$ pmd analyzePMD会遍历项目中的所有源代码文件,并根据配置的规则进行代码分析。
分析完成后,PMD会生成一个详细的报告,报告中包含了代码中存在的问题和相应的修复建议。
5. 分析结果报告下面是PMD在分析一个示例Java项目后生成的报告示例:PMD Analysis Report===================- 文件:src/com/example/MyClass.java- 问题1:未使用的变量`unusedVar`。
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 等,可以根据需要选择合适的方式。
5. 分析报告生成:PMD 提供报告生成功能,可以将分析结果以HTML 或 PDF 等格式输出,便于查看和分享。
五、常见问题及解决方法1. PMD 工具无法运行:确保安装了正确的 PMD 版本,并正确配置了代码路径等信息。
检查 PMD 日志文件,查找错误信息进行解决。
2. 分析结果不准确:确保代码目录或文件选择正确,并检查自定义规则文件的有效性。
软件研发中的代码质量检测工具
软件研发中的代码质量检测工具在软件研发过程中,代码质量是影响软件稳定性、可维护性和可扩展性的重要因素之一。
为了保障软件的质量,开发人员需要借助代码质量检测工具进行自动化检测和分析。
本文将介绍几种常见的代码质量检测工具,并分析它们的特点和优势。
一、静态代码分析工具静态代码分析工具通过对源代码进行静态分析,检测代码中存在的潜在问题和错误,提供代码质量评估和改进建议。
下面介绍几种常用的静态代码分析工具。
1. SonarQubeSonarQube是一个开源的、支持多种编程语言的静态代码分析工具。
它能够检查代码的复杂度、规范性、重复性等多个方面,并提供详细的代码质量报告。
SonarQube还支持集成到持续集成工具中,能够在每次构建时自动进行代码质量检测。
2. CheckstyleCheckstyle是一个基于Java语言的静态代码分析工具。
它主要用于检查Java代码的编码规范性,比如命名规范、代码布局规范等。
Checkstyle提供了丰富的配置选项,可以根据团队的具体需求进行定制化配置。
3. PMDPMD是另一个针对Java代码的静态代码分析工具。
它能够检测代码中的一些常见问题,比如空代码块、未使用的变量等,并给出相应的修复建议。
PMD还支持自定义规则和扩展插件,可以满足不同项目的代码质量检测需求。
二、动态代码分析工具除了静态代码分析工具外,动态代码分析工具也是软件研发中常用的代码质量检测工具之一。
动态代码分析工具通过运行时执行代码,检测代码的运行状况和性能问题。
下面介绍几种常见的动态代码分析工具。
1. JUnitJUnit是一个用于Java程序的单元测试框架,可以帮助开发人员编写和执行测试用例。
通过编写各种测试用例,可以检测代码的运行状况和功能正确性。
JUnit还支持测试覆盖率分析,可以检测测试用例对代码的覆盖程度。
2. ValgrindValgrind是一个开源的C/C++程序的动态分析工具集合。
其中最常用的是Memcheck工具,可以检测内存泄漏、内存访问越界等内存相关问题。
pmd标准
pmd标准
PMD标准是一种静态代码分析工具,它被广泛用于软件开发中,旨在发现代码中潜在的问题和错误,从而提高代码质量和可维护性。
PMD标准采用规则集合的方式,通过对代码进行静态扫描和分析,提供针对代码风格、错误和潜在漏洞的建议。
首先,PMD标准帮助开发人员遵循一致的代码规范和风格。
它可以检查代码中的缩进、命名规范、代码长度等方面的问题,确保代码的可读性和可理解性。
通过遵循统一的代码规范,团队成员可以更好地理解和维护彼此的代码,从而提高开发效率和代码质量。
其次,PMD标准还能够发现代码中潜在的错误和问题。
它可以检测常见的错误模式,如空指针引用、未使用的变量、重复的代码等。
通过及时发现并修复这些问题,可以减少软件的漏洞和故障,提高软件的稳定性和可靠性。
此外,PMD标准还提供了一些特定领域的规则和检查。
例如,对于Java开发人员来说,PMD标准可以检查代码中的优化问题,如无用的循环、未使用的方法或变量等。
通过优化代码,可以提升程序的性能和效率。
综上所述,PMD标准是一种强大的静态代码分析工具,可以帮助开发人员发现代码中的问题和潜在错误,改善代码质量和可维护性。
通过遵循PMD标准,团队成员可以共同遵守统一的代码规范,减少错误并提高开发效率。
对于开发人员来说,使用PMD标准是提高代码质量的重要步骤之一。
pmd 审计工具用法 -回复
pmd 审计工具用法-回复关于PMD审计工具的用法PMD是一个静态代码分析工具,用于检测和发现Java项目中的代码错误、不规范的写法、潜在的性能问题和安全隐患等。
它通过扫描Java源代码,对代码进行语法分析和规则检测,并生成相应的报告,帮助开发人员提高代码质量和效率。
本文将详细介绍PMD审计工具的用法与技巧。
一、安装和配置PMD1. 下载PMD:首先,从PMD的官方网站(2. 解压PMD压缩包:将下载的压缩包解压到本地的一个目录中,例如C:\pmd。
3. 配置PMD:进入解压后的PMD目录,在该目录下找到pmd.bat (Windows)或pmd.sh(Linux/macOS)文件,运行该文件即可启动PMD控制台界面。
二、使用PMD进行代码审计1. 选择需要审计的项目:在PMD控制台界面中,按照提示选择需要进行代码审计的Java项目,可以是一个项目文件夹或单个Java文件。
2. 配置审计规则集:PMD提供了多个预定义的审计规则集,例如basic、design、rulesets/java/braces等。
根据项目的实际需要,选择适合的规则集。
3. 运行审计:在PMD控制台界面中,点击"Run"按钮开始代码审计。
PMD 会对选定的Java项目进行静态代码分析,并生成审计报告。
4. 分析审计报告:审计完成后,PMD会生成一个详细的审计报告,其中包含了检测到的问题列表、问题所在的代码位置以及问题的描述信息。
开发人员可以根据报告中的信息,逐个修复代码中的问题。
三、优化PMD的使用1. 配置自定义规则:除了PMD提供的预定义规则集外,还可以根据项目的特殊需求,配置自定义的审计规则。
可以在PMD的配置文件(pmd.xml)中添加或编辑规则。
2. 集成到集成开发环境(IDE):PMD提供了插件形式的集成开发环境支持,例如Eclipse、IntelliJ IDEA等。
将PMD集成到IDE中,可以在开发过程中实时检测代码质量,并给出相应的建议和警告。
pmd静态源码分析工具简介及配置
pmd静态源码分析⼯具简介及配置在正式进⼊测试之前,进⾏⼀定的静态代码分析及code review对代码质量及系统提⾼是有帮助的,以上为数据证明Pmd 它是⼀个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可能的bug——空的try/catch/finally/switch块。
– ⽆⽤代码(Dead code):⽆⽤的本地变量,⽅法参数和私有⽅法。
– 空的if/while语句。
– 过度复杂的表达式——不必要的if语句,本来可以⽤while循环但是却⽤了for循环。
– 可优化的代码:浪费性能的String/StringBuffer的使⽤。
下载pmd ,配置CLASSPATH等内容requirement1.6 or higheror 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 命令规范的测试:变量名称不应太短;⽅法名称不应过长;类名称应当以⼩写字母开头;⽅法和字段名应当以⼩写字母开头,等等。
未使⽤的代码(rulesets/unusedcode.xml)—— 查找从未使⽤的私有字段和本地变量、执⾏不到的语句、从未调⽤的私有⽅法,等等。
设计(rulesets/design.xml)—— 检查各种设计良好的原则,例如:switch语句应当有default块,应当避免深度嵌套的if块,不应当给参数重新赋值,不应该对 double 值进⾏相等⽐较。
4种代码扫描工具分析
简介本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。
引言在Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。
Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成本。
目前市场上的Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。
静态代码分析工具简介什么是静态代码分析静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。
在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。
统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。
但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。
静态代码分析工具的优势1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
用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\utiltext rulesets/unusedcode.xml输出结果类如:c:\j2sdk1.4.1_01\src\java\util\AbstractMap.java 650Avoid unused local variables such as 'v'c:\j2sdk1.4.1_01\src\java\util\Date.java 438Avoid unused local variables such as 'millis'除了直接在命令行上运行PMD之外,还可以通过Ant、Maven或者各种集成开发环境(IDE)运行PMD,例如jEdit、Netbeans、Eclipse、Emacs、IDEAJ和JBuilder等。
静态分析工具pmd使用说明(StaticanalysistoolsusePMD)
静态分析工具pmd使用说明(Static analysis tools use PMD)Static analysis tools use PMDCatalogStatic 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 43.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 preparationQuality 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.In the process of software development, the following circumstances can be seen everywhere:1) software maintenance time is long, and the maintenance staff's enthusiasm is not high:As developers of software maintenance, especially when taking over not to develop their own products source, even if there is good documentation of the code will still be lengthy, no comment "paragraph as the acme of perfection". Understanding is so difficult, not to mention to modify or add new functions. Therefore, many developers are not willing to work in software maintenance.2) new developers to integrate into the team a long time:In addition to no good mechanism of training, documentation and other effective, each person with a set of encoding style, but also easily lead to new members for understanding existing code is not enough, even the deviation.Improve the quality of the code, in addition to improve thelogic control and understanding of business processes, the code itself also has room for improvement, for example, some potential problems can be early to avoid. Similar to the encoding specification on the content, if the personnel to carry out self inspection by encoding, then it requires a lot of work, if the checker can use the code to check it, it will greatly improve the efficiency of encoding.The project team is now working to check code is basically through artificial way, it is difficult to implement, check the effect is not very obvious. PMD is a tool that can be used directly to its own rules (of course, you can also use your own rules) of the Java source program analysis to identify process problems, can greatly reduce the code inspection work is tedious, for the project team to maintain and develop the future work to play a guiding role.This paper mainly introduces how to use PMD code automatic inspection tool, in order to avoid some of the potential problems and find out the logic of the code error.2. introduction to PMDPMD is an open source Java code analysis tool error. Unlike other analysis tools, PMD learned through the static analysis of code error. That is to say, the report in running the Java program under the condition of error.PMD can be used directly with many rules, these rules can find out many problems using the Java source program, for example:potential bug: the try/catch/finally/switch statement emptyUnused Code: unused local variables, parameters, private methods etc.optional Code: String/StringBuffer abuseComplex expressions: must not? If statement, you can use the while to complete the cycle for cyclerepeat code: copy / paste code means copy / paste bugsThe body of the loop? Create a new object: try not to for or while cycle in instantiating a new object@: Connect, Result, resource off after Statement such as the use of closed off to ensureIn addition, users can also define their own rules, check whether the Java code with certain encoding specification. For example, you can write a PMD to find all the rules, create Thread and Socket object operation.3. working principlePMD is the core of the JavaCC parser generator. PMD combined with JavaCC and EBNF (extended Backus Naur form, Extended Backus-Naur Formal) grammar, plus JJTree, Java source code is parsed into an abstract syntax tree (AST Abstract, Syntax Tree). Obviously, this sentence is not so good, and the following instructions.Fundamentally, Java source code only some ordinary text. However, in order to let the parser recognize these ordinary text is Java code is legitimate, they must meet the requirements of a specific structure. This structure can be represented by a syntactic meta language called EBNF, commonly referred to as the "grammar" (Grammar). According to the requirements of JavaCC generated parser grammar, the parser can be used in the Java programming language program analysis.But in the actual operation of the PMD even after a conversion of JJTree. JJTree is a JavaCC plug-in, AST expansion through the JavaCC generated parser. AST is a Java symbol stream on the semantic layer. With JJTree, the syntax analysis result is no longer "System, out,.,.,. Symbol sequences like println, but a by a tree structure. For example, here is a simple Java code and corresponding AST.Java source code:Public class {FooPublic void (bar) {System.out.println ("Hello world");}}The corresponding abstract syntax treeCompilationUnit TypeDeclaration ClassDeclaration UnmodifiedClassDeclaration ClassBody ClassBodyDeclaration MethodDeclaration ResultType MethodDeclarator FormalParametersBlockBlockStatementStatement StatementEXPression PrimaryExpressionPrimaryPrefixNamePrimarySuffixArgumentsArgumentListExpressionPrimaryExpressionPrimaryPrefixLiteralThe installation and operation of 4. PMDFour1 install and run PMD from the command lineYou can download the PMD from the PMD website of the binary version, or download the source code version, download the ZIP file is. If you download the binary version first, unzip it to any directory. What to do next, you will see how to use it: the most simple, if you want to run PMD on a Java source code directory, just run the following commands on the command line:E:\SoftWare\pmd-bin-4.2.1\pmd-4.2.1\bin>java-jar..\lib\pmd-4.2.1.jar D:\ebsserVice\ebsservice\src text rulesets/unusedcode.xmlThe output results such as:D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMPolicyInput.java:51 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMPolicyShow.java:25 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMQueryPolicyByPoliCyNo.java:32 Avoid unused local variables such as'visaStatus'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\SMQueryPolicyByPoliCyNo.java:44 Avoid unused local variables such as'temp'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\erisk\ESMPolicyInpuT.java:28 Avoid unused private fields such as'logger'.D:\ebsservice\ebsservice\src\com\sinosoft\service\policy\eb s\jrisk\JSMPolicyInpuT.java:22 Avoid unused private fields such as'logger'.Some can be loaded as optional parameters must be in front of or behind the:-debug: print debug log information-targetjdk: specifies the target source code version 1.3, 1.4, 1.5, 1.6 or 1.7;The default is 1.5-cpus: specifies the number of threads created-encoding: specifies the PMD check code encoding method-excludemarker: PMD need to be ignored for the specified tag, the default is NOPMD-shortnames: showed a shortened file name in the reportThe path -linkprefix: HTML source file, just to show HTML-lineprefix: custom anchor for the source file in the line, just for the HTML display-minimumpriority: rules of precedence constraints, lowerpriority rules will not be used-nojava: does not check the java file, the default is to check the java file-jsp: check the JSP/JSF file, the default is not checked-reportfile: will report the output to a file, the default is printed on the consoleThe output of the -benchmark: a reference list, the default output to the consoleThe default XSLT -xslt: coverageSpecify the source file using the -auxclasspath: class pathFor example, in the windows system, examples are as follows:C:\> Java -jar pmd-4.2.1.jar c:\my\source\code text unusedcode, imports -targetjdK 1.5 -debugC:\> Java -jar pmd-4.2.1.jar c:\my\source\code XML basic, design -encoding UTF-8C:\> Java -jar pmd-4.2.1.jar c:\my\source\code HTML typeresolution -auxclasspathCommons-collections.jar; derby.jar4.2 in the Eclipse install PMD plug-in operation modePMD can be integrated as a plug-in to many popular IDE, many plugins are included in the PMD jar file, the jar file contains a set of rules. So although the use of rulesets/unusedcode.xml as a parameter reference rule set some of the plugins, but actually is the use of getResourceAsStream (PMD) method from jar file loading.Because Eclipse is a popular open source Java/J2EE IDE development, so this paper mainly introduces how to use the PMD tool in Eclipse code check.Install the Eclipse IDE plugin based on 4.2.1The process of installing the Eclipse PMD plugin is as follows:Start Eclipse?Select the Help-->Software Updates-->Find and Install?Select Next, New? Remote siteEnter PMD? In the Name box, URL box, /eclipse inputAfter the dialog box has been? Click next or accept the agreement, complete the Eclipse PMD plugin installedCan download the zip file to execute the process, then, justuse New locale site instead of New remote site, and use the downloaded zip file.Can use Windows-->Preferences to configure PMD.By right clicking on an item, then select the PMD-->Check node with PMD, you can use the PMD tool to check code. If you want to repeat the code detection, then right-click an item, select the PMD-->Find suspect cut and paste. The inspection results will be placed in the reports directory, the file name is cpd-report.txt.Can help the system to use the Eclipse plugin to view the PMD document.After installing the update, if there is an exception, such as "ng.RuntimeException: Could not find that class XXXX", then try to remove the workspace inthe.Metadata/plugins/net.sourceforge.pmd.eclipse directory of the ruleset.xml file.The use of PMD 4.2.21, start Eclipse IDE, open the project, PMD select "Windows", "Preferences", which Rules Configuration project can configure PMD to check rules, custom check rules can also be here by way of Import into PMD2, configured to check, click the right mouse button in the JavaSource project, select the "PMD" - "Check Code With PMD", PMD will check your JavaSource through the rules and theinformation displayed in the PMD view on their own3, sampleImport java.util.*;Public class {TestPublic static void main (String[] args) {Try{If (true) {}System.out.println ("Hello World!");Catch (Exception E) {}}}}The above code will check out: PMD catch block if judgment no content, no content, block code System.out.println warning descriptionCall 4.3 AntThe following is the main Ant configuration information<path id= "pmd.path" ><fileset dir= "${lib.dir}/pmd-3.8" ><include name= "**/*.jar" / ></fileset></path><taskdef name= "PMD" classname="net.sourceforge.pmd.ant.PMDTask" classpathref= "pmd.path" / ><taskdef name= "cpd" classname="net.sourceforge.pmd.cpd.CPDTask" classpathref= "pmd.path" / ><target name= "PMD" ><pmd shortFilenames= "true" ><ruleset>rulesets/favorites.xml</ruleset><formatter type= "HTML" toFile= "d:\foo.html" toConsole= "false" / ><fileset dir= "${src.dir}" ><include name= "**/*.java" / ></fileset></pmd></target><target name= "cpd" ><cpd minimumTokenCount= "100" outputFile= "d:/cpd.txt" ><fileset dir= "${src.dir}" ><include name= "**/*.java" / ></fileset></cpd></target>Use the Ant command to run build.xml PMD, you will be in accordance with the set rules automatically executes code check.About 5. PMD rulesSelect the appropriate rulesRun all the centralized rules will conflict very much, many of these conflicts is not important. In the conflict so much foryou care about part of the result is not at all what efficiency.So we need from the set of rules that must change the place to start is a better choice, for example, just run the unusedcode check, and then modify the unused local variables and member variables. Then run the basic check, modify all empty statements, statements such as if etc..Finally, you can perform design related or controversial set of rules, or a custom set of rules.With the introduction of rules: (PMD plugin (Chinese).Xls code analysis rules)PMD comes with a lot of set of rules and classification into different ruleset files, such asBasic contains everyone must comply with the code of best practices, such as EmptyCatchBlockAbout Braces conditional rules, such as IfStmtsMustUseBracesCode Size about the size of code rules, such as the length, the length of the parameter, the number of attributesCloning of Clone implementation of the rules, such as whether there is super.clone ()Controversial some of the controversial rules, such as the UnnecessaryConstructor constructor is unnecessaryThe Coupling object connection rulesDesign can check the design problems, such as SwitchStmtsShouldHaveDefaultNeed to follow the rules of the Finalizers using finalizers, such as FinalizeOnlyCallsSuperFinalizeImport Statements and import related rules, such as DuplicateImports importOnly J2EE class.getClassLoader (rule UseProperClassLoader) may not be correct, with(Thread.currentThread) (.GetContextClassLoader) to replaceJavabeans and JavaBean regulate the relevant rules, BeanMembersShouldSerialize attribute must beThe lack of serialization and serialization of a ID MissingSerialVersionUIDJUnit Tests and JUnit test, such as JUnitSpelling spell checkLogging (Java) some wrong usage check Logger, such as MoreThanOneLogger more than LoggerLogging (Jakarta) some rules using Jakarta Logger, UseCorrectExceptionLoggingAbnormal handling and ProperLogger is the correct definitionof LoggerMigrating JDK version of the transplant rules, such as ReplaceVectorWithList List instead of VectorNaming and naming rules, the name is too short or too long, the naming conventions etc.。
提升代码质量的静态分析工具比较与选型(二)
提升代码质量是每个软件开发者的目标之一,而静态分析工具是帮助开发者检测和改善代码质量的有效工具。
在选择合适的静态分析工具时,需要考虑诸多因素,包括功能、易用性、准确性等。
本文将对几种常见的静态分析工具进行比较与选型。
静态分析工具是一种通过分析源代码而非程序的实际运行来找出代码中的潜在问题的工具。
它对代码进行扫描,发现可能存在的编程错误、潜在的性能问题、安全漏洞等,从而帮助开发者及时发现并修复这些问题,提高代码的质量和可维护性。
目前市面上有许多静态分析工具可供选择,比如Coverity、SonarQube、PMD等。
这些工具在功能上有所差异,可根据项目需求做出选择。
下面将对几种主流的静态分析工具进行比较。
Coverity是一款功能强大且广泛应用的静态分析工具。
它可检测出各类代码缺陷,如内存泄漏、空指针引用等。
Coverity的准确性很高,能够提供准确的代码问题报告,帮助开发者迅速定位和修复问题。
除此之外,Coverity还可集成到持续集成环境中,实现自动化的代码检查和错误提示。
然而,Coverity的缺点也是显而易见的,它的学习曲线比较陡峭,使用起来可能需要花费一定的时间和精力。
SonarQube是另一款常见的静态分析工具,它不仅可以进行代码质量检测,还可以对代码进行复杂度分析、重复代码检测等。
SonarQube具有友好的用户界面和丰富的插件生态系统,在易用性上相对较好。
它还提供了实时代码分析和即时反馈的功能,帮助开发者在编写代码的过程中及时发现问题并进行修复。
然而,SonarQube在准确性上不如Coverity,有时会产生一些误报,需要开发者进行进一步的验证和排除。
PMD是一款轻量级的静态代码分析工具,主要用于检测代码中的常见问题,如潜在的错误、不规范的编程风格等。
PMD有良好的可配置性,可以根据项目的具体需求进行定制。
它的优点是简单易用,上手难度较低,并且运行速度比较快。
然而,PMD的检测范围相对较窄,无法检测出一些更复杂的问题,比如内存泄漏等。
分析四种代码扫描工具
简介本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。
引言在Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。
Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成本。
目前市场上的Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有4 种主流Java 静态代码分析工具(Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中。
静态代码分析工具简介什么是静态代码分析静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。
在软件开发过程中,静态代码分析往往先于动态测试之前进行,同时也可以作为制定动态测试用例的参考。
统计证明,在整个软件开发生命周期中,30% 至70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。
但是,由于静态代码分析往往要求大量的时间消耗和相关知识的积累,因此对于软件开发团队来说,使用静态代码分析工具自动化执行代码检查和分析,能够极大地提高软件可靠性并节省软件开发和测试成本。
静态代码分析工具的优势1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷。
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)新的开发人员融入团队的时间比较长:除了没有良好的培训、文档等有效的机制以外,每个人一套的编码风格,也容易造成新成员对于已有代码的理解不够,甚至出现偏差。
提高代码的质量,除了要提高逻辑上的控制以及业务流程的理解外,代码本身也存在提高的空间,例如一些潜在的问题可以很早的就避免。
类似于编码规范上的内容,如果全靠编码人员进行自行检查,那么无疑需要很大的工作量,如果可以使用代码的静态检查工具进行检查的话,那么将大大的提高编码的效率。
项目组目前代码检查的工作基本上都是通过人工的方式,实行起来比较困难,检查的效果也不是很明显。
PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。
PMD使用整理
PMD使用流程1.首先将要使用的窗体导入到Myeclipse页面:集体操作Window—>show view—>other—>PMD—>Violations OutLine,violations Overview 。
2.PMD检查方式:对一个项目进行检查,对项目的下级文件进行检查,对展开的类进行检查。
3.集体检查方法:右键点击将要检查的文件选择PMD选项,选择Check Code With PMD选项进行代码检查。
错误信息显示在violation Overview框体中,如下图所示。
注:Element:检查的文件#Violation/LOC(line of code缩写)为:警告个数/源代码行数x1000。
#Violations/Method:警告个数除以方法个数(类中每个方法中的平均错误)#Project :所在项目右键点击框体的任意位置显示4个选项按钮对应的功能为1)F ilter Resource:是否展示下列工程2)F ilter Priorities : 想要展示的警告等级(5个等级,红色为最严重的警告)3)P resentation Type:展示的结构4)c lear PMD violations :清除Violations Outline内的信息4.双击“Element“列下面的错误元素,显示警告所在的类文件。
错误的详细信息将在Violations Overview框体中显示。
右键点击框体中显示的警告信息时,有四个功能选项。
1)Show details:显示错误的详细信息,如下图所示。
2)Mark as reviews : 标记警告信息。
3)Remove Violation(s) :清除错误信息。
4)clear violations reviews:清除之前标记。
5.Generate Abstract Syntax tree:生成抽象语法树点击生成XX.ast的XML文件。
编程语言静态分析与代码审查实验报告
编程语言静态分析与代码审查实验报告一、实验目的本实验的主要目的是了解静态分析与代码审查在软件开发过程中的重要性,掌握静态代码分析工具的使用方法,学会进行代码审查并改进代码质量。
二、实验设备与工具在本次实验中,我们使用了以下设备和工具进行实验:1. 计算机:配置Windows 10操作系统的台式电脑。
2. 静态代码分析工具:使用了Coverity和PMD两款静态代码分析工具。
3. 编程语言:实验中使用Java语言编写代码进行实验。
4. 文本编辑器:使用IntelliJ IDEA作为编程环境。
三、实验步骤1. 下载、安装和配置静态代码分析工具Coverity和PMD。
2. 编写一个简单的Java程序,包括一些常见的代码质量问题,如空指针引用、不规范的命名、未使用的变量等。
3. 使用Coverity对编写的Java程序进行静态分析,并记录下分析结果。
4. 使用PMD对编写的Java程序进行代码审查,发现和修复潜在的代码质量问题。
5. 根据Coverity和PMD的分析结果,改进代码质量并重新进行静态分析和代码审查。
四、实验结果分析1. 静态代码分析工具Coverity的分析结果显示,在编写的Java程序中发现了三处潜在的空指针引用问题,两处不规范的命名问题,以及一个未使用的变量问题。
通过Coverity提供的建议,及时修复了这些问题,提高了代码的健壮性和可维护性。
2. PMD工具进行代码审查后,发现了编写的Java程序中存在的代码块过长、未使用的变量、不规范的命名等问题,及时优化和重构了这些代码,使得代码更加清晰易懂。
3. 通过本次实验,我们深刻理解了静态分析与代码审查的重要性,这些工具能够帮助我们发现并改进代码中的潜在问题,提升软件质量和开发效率。
五、实验总结在本次实验中,我们学会了如何使用静态代码分析工具进行代码审查,并在此基础上改进代码质量。
通过实践,我们深刻认识到静态分析与代码审查在软件开发过程中的不可或缺性,这有助于我们编写更加健壮、可维护的代码。
- 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”) 的返回值被忽略,存在明显的无限循环。