私はそうは思わないでしょうが、私は PMD の専門家ではありません (私には独自の偏見があります。経歴を確認してください)。
問題は次のとおりです。
- 私の言語の構文をすぐに定義できますか (おそらく、あなたがどれほど優れているか、言語がどれほど乱雑であるか、および PMD が提供する解析機構の強さに依存します)
- PMD によって提供される「セマンティック チェック」が機能するように、私の言語のセマンティクスを定義できますか。構文は構文のセマンティックについて文字通り何も伝えないため、これを行う必要があります。PMD ツールの「セマンティック チェック」は、Java の正確な詳細にかなり組み込まれていると思います。言語が Java に完全に一致していれば、これはゼロ作業です。しかし、そうではありません。そうでなければ、あなたは質問をしていないでしょう。また、言語のセマンティクスの違いは、たとえ些細なものであっても、コードの解釈に不連続な変化をもたらします。「深刻な」セマンティクスを実行する前に、コード内の識別子をそれらのシンボルの宣言 (および「セマンティック」タイプ) にマッピングするシンボル テーブルを作成する必要がある可能性があります。私が使用するツール インフラストラクチャに基づいて、
- 最後に、言語に固有の特別な PMD チェックをコーディングする必要がある可能性があります。それにも時間とエネルギーが必要です。
私は一般的なコンパイラ タイプの機械 (パーサー、フロー アナライザー、スタイル/エラー チェッカー) を構築しており、私たちの機械に対して WRT で常にこの質問に相当するものを尋ねられます。私たちは多くの機械を利用できるようにし、新しい言語を簡単に統合できるように努め、15 年以上にわたってこれを「便利で高速」にするために取り組んできました。それはまだ便利ではなく、数週間で私たちのツールでこれを行う方法はありません. PMDの方が優れているとは思えません。