2

妥当な時間内に、新しい言語を完全にサポートするようにPMDをカスタマイズできますか。技術的にはほとんど何でもできることを知っていますが、これが妥当な時間でできるかどうか疑問に思っていますか?例<2週間

このページでは、CPDパーサーの作成方法について説明していますhttp://pmd.sourceforge.net/cpd-parser-howto.html

しかし、これはコピー/貼り付けの検出のためだけですか?CPDパーサーを作成することで、Rileセットに関してPMDを完全にサポートできますか?

4

1 に答える 1

3

私はそうは思わないでしょうが、私は PMD の専門家ではありません (私には独自の偏見があります。経歴を確認してください)。

問題は次のとおりです。

  • 私の言語の構文をすぐに定義できますか (おそらく、あなたがどれほど優れているか、言語がどれほど乱雑であるか、および PMD が提供する解析機構の強さに依存します)
  • PMD によって提供される「セマンティック チェック」が機能するように、私の言語のセマンティクスを定義できますか。構文は構文のセマンティックについて文字通り何も伝えないため、これを行う必要があります。PMD ツールの「セマンティック チェック」は、Java の正確な詳細にかなり組み込まれていると思います。言語が Java に完全に一致していれば、これはゼロ作業です。しかし、そうではありません。そうでなければ、あなたは質問をしていないでしょう。また、言語のセマンティクスの違いは、たとえ些細なものであっても、コードの解釈に不連続な変化をもたらします。「深刻な」セマンティクスを実行する前に、コード内の識別子をそれらのシンボルの宣言 (および「セマンティック」タイプ) にマッピングするシンボル テーブルを作成する必要がある可能性があります。私が使用するツール インフラストラクチャに基づいて、
  • 最後に、言語に固有の特別な PMD チェックをコーディングする必要がある可能性があります。それにも時間とエネルギーが必要です。

私は一般的なコンパイラ タイプの機械 (パーサー、フロー アナライザー、スタイル/エラー チェッカー) を構築しており、私たちの機械に対して WRT で常にこの質問に相当するものを尋ねられます。私たちは多くの機械を利用できるようにし、新しい言語を簡単に統合できるように努め、15 年以上にわたってこれを「便利で高速」にするために取り組んできました。それはまだ便利ではなく、数週間で私たちのツールでこれを行う方法はありません. PMDの方が優れているとは思えません。

于 2010-05-21T19:08:24.337 に答える