We stand with Ukraine to help keep people safe. Join us
PMD free download for Mac


Version 6.45.0

Cross-language static code analyzer.

PMD overview

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, Salesforce.com 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 Salesforce.com Apex and Visualforce.

What’s new in version 6.45.0

Updated on May 02 2022

  • This version of PMD ships a new language module to support analyzing of HTML. Support for HTML is experimental and might change without notice. The language implementation is not complete yet and the AST doesn't look well for text nodes and comment nodes and might be changed in the future. You can write your own rules, but we don't guarantee that the rules work with the next (minor) version of PMD without adjustments.
  • Please give us feedback about how practical this new language is in discussions. Please report missing features or bugs as new issues.
  • The HTML rule AvoidInlineStyles finds elements which use a style attribute.
  • In order to help maintaining a webpage it is considered good practice to separate content and styles. Instead of inline styles one should use CSS files and classes.
  • The HTML rule UnnecessaryTypeAttribute finds "link" and "script" elements which still have a "type" attribute. This is not necessary anymore since modern browser automatically use CSS and JavaScript.
  • The HTML rule UseAltAttributeForImages finds "img" elements without an "alt" attribute. An alternate text should always be provided in order to help screen readers.
  • The Java rule UnusedPrivateField has a new property ignoredFieldNames.
  • The default ignores serialization-specific fields (eg serialVersionUID).
  • The property can be used to ignore more fields based on their name.
  • Note that the rule used to ignore fields named IDENT, but doesn't anymore (add this value to the property to restore the old behaviour).
  • #3792: [core] Allow to filter violations in Report
  • #3881: [core] SARIF renderer depends on platform default encoding
  • #3882: [core] Fix AssertionError about exhaustive switch
  • #3884: [core] XML report via ant task contains XML header twice
  • #3896: [core] Fix ast-dump CLI when reading from stdin
  • #2505: [doc] Improve side bar to show release date
  • #3068: [java] Some tests should not depend on real rules
  • #3889: [java] Catch LinkageError in UselessOverridingMethodRule
  • #3910: [java] UnusedPrivateField - Allow the ignored fieldnames to be configurable
  • #1185: [java] ArrayIsStoredDirectly false positive with field access
  • #1474: [java] ArrayIsStoredDirectly false positive with method call
  • #3879 [java] ArrayIsStoredDirectly reports duplicated violation
  • #3929: [java] ArrayIsStoredDirectly should report the assignment rather than formal parameter
  • #3603: [java] SimplifiedTernary: no violation for 'condition ? true : false' case
  • #3867: [java] UseArraysAsList with method call
  • #3687: [plsql] Parsing exception EXECUTE IMMEDIATE l_sql BULK COLLECT INTO statement
  • #3706: [plsql] Parsing exception CURSOR statement with parenthesis groupings
  • Report#filterViolations creates a new report with some violations removed with a given predicate based filter.
  • Report#union can combine two reports into a single new Report.
  • net.sourceforge.pmd.util.Predicate will be replaced in PMD7 with the standard Predicate interface from java8.
  • The module pmd-html is entirely experimental right now. Anything in the package net.sourceforge.pmd.lang.html should be used cautiously.
  • #3883: [doc] Improve side bar by Adding Release Date - @jasonqiu98
  • #3910: [java] UnusedPrivateField - Allow the ignored fieldnames to be configurable - @laoseth
  • #3928: [plsql] Fix plsql parsing error in parenthesis groups - @LiGaOg
  • #3935: [plsql] Fix parser exception in EXECUTE IMMEDIATE BULK COLLECT #3687 - @Scrsloota
  • #3938: [java] Modify SimplifiedTernary to meet the missing case #3603 - @VoidxHoshi
  • #3943: chore: Set permissions for GitHub actions - @naveensrinivasan





43.2 MB

Developer’s website




App requirements

  • Intel 64
  • Mac OS X 10.6.8 or later
  • Java JRE 1.7 or later
Try our new feature and write a detailed review about PMD. All reviews will be posted soon.
Write your thoughts in our old-fashioned comment
MacUpdate Comment Policy. We strongly recommend leaving comments, however comments with abusive words, bullying, personal attacks of any type will be moderated.
(0 Reviews of )
There are no reviews yet
Help the community
There are no reviews yet, be the first to leave one
FreeAbsolutely Free
How would you rate PMD?
Similar apps
Network protocol analyzer.
Is this app is similar to Wireshark? Vote to improve the quality of this list.
Vote results
Total score
Visual Studio Code
Cross-platform code editor and debugger for web apps.
Is this app is similar to Visual Studio Code? Vote to improve the quality of this list.
Vote results
Total score
HTTP analyzer.
Is this app is similar to Captor? Vote to improve the quality of this list.
Vote results
Total score
A1 Website Analyzer
Website analysis and auditing.
Is this app is similar to A1 Website Analyzer? Vote to improve the quality of this list.
Vote results
Total score