PMDは、JavaやApexを主な対象としつつも、16の異なるプログラミング言語をサポートする拡張可能な多言語静的コードアナライザーです。このツールは、未使用の変数、空のキャッチブロック、不必要なオブジェクトの作成など、一般的なプログラミングの欠陥を検出するために設計されています。PMDは、JavaCCとAntlrを使用してソースファイルを抽象構文木(AST)に解析し、それに対してルールを実行して違反を見つけます。ルールはJavaで書くことも、XPathクエリを使用して定義することもできます。
現在、PMDはJava、JavaScript、Salesforce.com ApexおよびVisualforce、Kotlin、Swift、Modelica、PLSQL、Apache Velocity、JSP、WSDL、Maven POM、HTML、XML、XSLをサポートしています。Scalaもサポートされていますが、現在のところScala用のルールは利用できません。さらに、PMDにはコピー&ペースト検出器(CPD)も含まれており、Coco、C/C++、C#、Dart、Fortran、Gherkin、Go、Groovy、HTML、Java、JavaScript、JSP、Julia、Kotlin、Lua、Matlab、Modelica、Objective-C、Perl、PHP、PLSQL、Python、Ruby、Salesforce.com ApexおよびVisualforce、Scala、Swift、T-SQL、Typescript、Apache Velocity、WSDL、XML、XSLにおける重複コードを検出します。
PMDは、400以上の組み込みルールを提供しており、カスタムルールで拡張することも可能です。これにより、開発者はコードの品質を向上させ、潜在的なバグを早期に発見することができます。PMDは、Eclipse、NetBeans、IntelliJ IDEAなどの主要なIDE向けのプラグインも提供しており、開発プロセスにシームレスに統合することができます。
PMDの最新バージョンは7.6.0で、2024年9月27日にリリースされました。このバージョンには、新機能やバグ修正が含まれており、より効率的なコード分析が可能になっています。PMDは、BSDスタイルのライセンスの下で提供されており、GitHubでソースコードを確認し、貢献することもできます。