PMD free download for Mac


25 May 2020

Cross-language static code analyzer.


PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, Apex and Visualforce, PLSQL, Apache Velocity, XML, XSL.

Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, Groovy, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Scala, Objective C, Matlab, Python, Go, Swift and Apex and Visualforce.

What's new in PMD

Version 6.24.0: What's new in PMD 6.24.0May 25, 2020
New and noteworthy:
  • CPD now supports XML as well:
  • Thanks to Fernando Cosso CPD can now find duplicates in XML files as well
  • This is useful to find duplicated sections in XML files
Updated PMD Designer:
  • This PMD release ships a new version of the pmd-designer
  • For the changes, see PMD Designer Changelog
New Rules:
  • The new Java Rule LiteralsFirstInComparisons (java-bestpractices) find String literals, that are used in comparisons and are not positioned first. Using the String literal as the receiver of e.g. equals helps to avoid NullPointerExceptions
  • This rule is replacing the two old rules PositionLiteralsFirstInComparisons and PositionLiteralsFirstInCaseInsensitiveComparisons and extends the check for the methods compareTo, compareToIgnoreCase and contentEquals in addition to equals and equalsIgnoreCase
  • Note: This rule also replaces the two mentioned rules in Java's quickstart ruleset
Deprecated Rules:
  • The two Java rules PositionLiteralsFirstInComparisons and PositionLiteralsFirstInCaseInsensitiveComparisons have been deprecated in favor of the new rule LiteralsFirstInComparisons
Fixed Issues:


  • Unused Local Variable fails on blocks


  • Support reproducible builds
  • Update maven-enforcer-plugin to require Java 118


  • Support for interpolated verbatim strings


  • JavaCharStream throws an Error on invalid escape


  • Deprecate rules PositionLiteralsFirstIn(CaseInsensitive)Comparisons in favor of LiteralsFirstInComparisons
  • JUnitTestsShouldIncludeAssert: Add support for Hamcrest MatcherAssert.assertThat
  • AvoidPrintStackTrace can't detect the case e.getCause().printStackTrace()


  • MethodNamingConventions - Add support for JUnit 5 method naming


  • JUnitSpelling false-positive for JUnit5/4 tests


  • Swift 5 (up to 5.2) support for CPD
API Changes:

Deprecated APIs:

  • BaseLanguageModule#addVersion(String, LanguageVersionHandler, boolean)
  • Some members of TokenMgrError, in particular, a new constructor is available
  • that should be preferred to the old ones
  • AntlrTokenManager.ANTLRSyntaxError

Experimental APIs:

  • Note: Experimental APIs are identified with the annotation Experimental, see its javadoc for details
  • The experimental methods in BaseLanguageModule have been replaced by a definitive API
External Contributions:
  • Update maven-compiler-plugin to 3.8.1 - Artem Krosheninnikov
  • Operator Wrap check - Harsh Kukreja
  • Additional info in SqlStatement, FormalParameter and FetchStatement - Grzegorz Sudolski
  • Fix "Making Rulesets" doc sample code indentation - Artur Dryomov
  • Adding XML to CPD supported languages - Fernando Cosso
  • Upgrade hamcrest, mockito and JUnit - Artem Krosheninnikov
  • fix false positive unused variable if only a method is called - Gwilym Kuiper
  • Swift 4.2-5.2 support - kenji21
  • MethodNamingConventions - Add support for JUnit 5 method naming - Bruno Ritz
  • New rule: LiteralsFirstInComparisons - John-Teng
  • False positive with Hamcrest's assertThat - andreoss
  • Fix JUnitSpellingRule false positive - Artem Krosheninnikov
  • Deprecate redundant String Comparison rules - John-Teng
  • Support for interpolated verbatim strings - Maikel Steneker

Join over 500,000 subscribers.

Subscribe for our newsletter with best Mac offers from MacUpdate.

How would you rate PMD app?

0 Reviews of PMD