Home > Windows > Developer Tools > PMD 6.9.0
PMD is a static source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It's mainly concerned with Java and Apex, but supports six other languages.
PMD features many built-in checks (in PMD lingo, rules), which are documented for each language in our Rule references. Also support an extensive API to write your own rules, which you can do either in Java or as a self-contained XPath query.
PMD is most useful when integrated into your build process. It can then be used as a quality gate, to enforce a coding standard for your codebase. Among other things, PMD can be run:
CPD, the copy-paste detector, is also distributed with PMD. You can also use it in a variety of ways
: PMD 6.9.0
: 42.2 MB
: Open Source
: Win7 32-bit / Win7 64-bit / Win8 32-bit / Win8 64-bit / Vista 32-bit / Vista 64-bit
CPD is now better at detecting duplicates, as comments are recognized as such and ignored.
The new PLSQL rule CodeFormat (plsql-codestyle) verifies that PLSQL code is properly formatted. It checks e.g. for correct indentation in select statements and verifies that each parameter is defined on a separate line.
[core] Exclude specific files from command line
[core] Could not find or load main class when using symlinked run.sh
[core] LanguageRegistry uses default class loader when invoking ServiceLocator
[doc] How to configure “-cache "
[doc] Broken link to adding new cpd language documentation
[apex] ClassCastException caused by Javadoc
[java] PMD crashes with java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/xml/ws/Service
- [java] GuardLogStatement: “There is log block not surrounded by if” doesn’t sound right
- [java] UnusedImports false positive for static import with package-private method usage
- [java] Update CommentDefaultAccessModifierRule to extend AbstractIgnoredAnnotationRule
- [java] JUnitTestsShouldIncludeAssert false positive
- [java] UnusedImports false positive with static ondemand import with method call
- [java] UnnecessaryFullyQualifiedName doesn’t flag same package FQCNs
- [java] UnnecessaryModifier wrong message public->static
- [java] Processing error (ClassCastException) if a TYPE_USE annotation is used on a base class in the “extends” clause
- [jsp] JspTokenManager has a problem about jsp scriptlet
- [doc] Provide some explanation for WHY duplicate code is bad, like mutations
- PMD has a new CLI option -ignorelist. With that, you can provide a file containing a comma-delimit list of files, that should be excluded during analysis. The ignorelist is applied after the files have been selected via -dir or -filelist, which means, if the file is in both lists, then it will be ignored. Note: there is no corresponding option for the Ant task, since the feature is already available via Ant’s FileSet include/exclude filters.
- [core] [cpd] Generalize ANTLR tokens preparing support for ANTLR token filter
- [doc] Update cpd.md with information about risks
- [java] Static Modifier on Internal Interface pmd #1356
- [doc] Updated outdated note in the building documentation.
- [java] Simplify check for ‘Test’ annotation in JUnitTestsShouldIncludeAssertRule.
- [java] Add missing null check AbstractJavaAnnotatableNode
- [all] Upgrading Apache Commons IO from 2.4 to 2.6
- [all] Upgrading Apache Commons Lang 3 from 3.7 to 3.8.1
- [all] Replacing deprecated IO methods with ones that specify a charset
- [java] Improved message for GuardLogStatement rule
- [go] [cpd] Add CPD support for Antlr based grammar on Golang
- [all] Upgrading SLF4J from 1.7.12 to 1.7.25
- [java] Fix Issue 1343: Update CommentDefaultAccessModifierRule
- [all] Replacing IOUtils.closeQuietly(foo) with try-with-resources statements
- [jsp] Fix issue 1402: JspTokenManager has a problem about jsp scriptlet
- [core] Add ignore file path functionality
- [doc] Fix broken link.
Screenshots are not available