PMD は、拡張可能な多言語静的コード アナライザーです。未使用の変数、空の catch ブロック、不要なオブジェクトの作成など、一般的なプログラミングの欠陥を検出します。主にJava と Apexに関係していますが、他の 16 の言語もサポートしています。 400 以上の組み込みルールが付属しています。カスタム ルールを使用して拡張できます。 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 ルールはありません。
さらに、コピー&ペースト検出機能であるCPDも含まれています。 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。
最新のバイナリ zip をリリースからダウンロードし、どこかに解凍します。
bin/pmd check
またはbinpmd.bat check
を実行します。
「はじめに」も参照してください
デモ:
これは、PMD が openjdk を分析する方法を示しています。
Maven と Gradle だけでなく、さまざまな IDE 用のプラグインもあります。 「ツール/統合」を参照してください。
プルリクエストは大歓迎です。大きな変更の場合は、まず問題を開いて、変更したい内容について話し合ってください。
PMD の最新のソースは GitHub にあります。フォークしてください!
ルール デザイナーは pmd/pmd-designer で開発されています。開発者向けドキュメントについては、README を参照してください。
財政的に貢献して、コミュニティの維持にご協力ください。貢献する
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します!
完全なリストについてはクレジットを参照してください。
BSD スタイル