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風格