| 初回リリース | 2002年11月4日 |
|---|---|
| 安定リリース | 7.6.0 [1]
/ 2024年9月27日 |
| リポジトリ |
|
| 書かれた | ジャワ |
| オペレーティング·システム | Windows、Linux、macOS |
| タイプ | 静的プログラム解析ツール |
| ライセンス | BSDライセンス、 Apacheライセンス2.0、 GNU Lesser General Public License [2] |
| Webサイト | 翻訳元: |
PMD は、アプリケーション コード内で見つかった問題をレポートするオープン ソースの静的ソース コード アナライザーです。PMD には組み込みのルール セットが含まれており、カスタム ルールを記述する機能をサポートしています。PMD は、整形式のソース ファイルのみを処理できるため、コンパイル エラーをレポートしません。むしろ、PMD は、非効率的なコードや不適切なプログラミング習慣を検出するように設計されています。これらが蓄積されると、プログラムのパフォーマンスと保守性が低下する可能性があります。Java 、JavaScript 、 ApexおよびVisualforce、PLSQL、Apache Velocity、XML、XSL で記述されたファイルを分析できます。
PMDは公式には何かの略称ではありませんが、[3]プログラミング・ミス・ディテクターやプロジェクト・ミーツ・デッドラインなど、いくつかのレトロな頭字語が提案されています。[4]
特徴
PMD は、次のようなソース コードの欠陥や潜在的な欠陥を検出できます。
- バグ- 空の try/catch/finally/switch ブロック。
- デッド コード- 使用されていないローカル変数、パラメーター、プライベート メソッド。
- 空の if/while ステートメント。
- 複雑すぎる式- 不要な if 文、while ループにできる for ループ。
- 最適ではないコード- 無駄な String/StringBuffer の使用。
- 循環的複雑度の測定値が高いクラス。
- 重複したコード- コピー/貼り付けされたコードはコピー/貼り付けされたバグを意味する可能性があり、保守性が低下します。
ライセンス
PMDはBSD風ライセンスの下でリリースされていますが、一部はApache License 2.0とLGPLの下でリリースされています。[2]
コピー/貼り付け検出 (CPD)
コピー/貼り付け検出器( CPD ) は、 Rabin-Karp 文字列検索アルゴリズムを使用して重複コードを検索するPMD のアドオンです。PMD とは異なり、CPD は Java、 JavaServer Pages (JSP)、C、C++、Fortran、PHP、C#コード など、より幅広い言語で動作します。
プラグイン
PMDには、JDeveloper、Eclipse、jEdit、JBuilder、OmnicoreのCodeGuide、NetBeans / Sun Studio、IntelliJ IDEA、TextPad、Maven、Ant、Gradle、Gel、JCreator、Hudson、Jenkins、SonarQube、Visual Studio Code、Emacs用のプラグインがあります。[5] CLIバージョン もあります。
参照
参考文献
- ^ 「リリース PMD 7.6.0 (2024 年 9 月 27 日)」。2024 年9 月 27 日閲覧。
- ^ ab "ライセンス". GitHub . 2015年1月18日. 2015年8月13日閲覧。
- ^ 「PMDとはどういう意味ですか?」pmd-code.org . 2023年3月31日閲覧。
- ^ 「迷惑なバグを駆除するパート 4: 終わりが近づいています」。freesoftwaremagazine.com。
- ^ 「ツール/統合」。pmd-code.org 。 2023年3月31日閲覧。
さらに読む
- Rutar、Almazan、Foster (2004)、「Java のバグ検出ツールの比較」。ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering、IEEE、doi:10.1109/ISSRE.2004.1
外部リンク
- 公式サイト
- GitHubの PMD
- SourceForgeの PMD
- SourceForge.netのCPD。
- 書籍: 「PMD Applied」主任開発者 Tom Copeland 著 ([1])。
- Maven の PMD と CPD
