メソッドが非推奨としてマークされたら、これらのメソッドを非推奨でない回避策に置き換えるツールはありますか?
4 に答える
これを自動的に実行したい場合-いいえ。
このツールはプログラマーと呼ばれます。
その理由は、ツールが非推奨、「非推奨」、プログラム、およびターゲットプログラミング言語の両方を深く理解する必要があるためです。
たとえば、java.util.Date.setMonth
は廃止され、。が優先されますCalendar.set(Calendar.MONTH, int month)
。
これは、同期を考慮してオブジェクトのインスタンス化、メソッド呼び出しを置き換える必要があるため、適用するのは簡単な変更ではありません。実際に自動的に行うのは悪夢です。
自動化されたツールは、まったく同じタスクを実行するために使用する新しい優先メソッドまたはクラスがある場合にのみ合理的に処理できます。欠陥のある設計(Javaで日付を処理するものを考えてください)または「より良い」方法がサポートされるようになった(AWTからSwingまたはSWTを考えてください)ためにメソッドが非推奨になった場合は、自動化することを非常に多く考える必要があります。
要するに、そのようなツールはありません。将来的にもそうなるとは思えません。
通常、独自のツールを実装するには、正規表現、ANTLR、JavaCCなどを使用する必要があります。
さらに、一部のIDEは、これを容易にするための比較的高レベルのツールを提供します。IntelliJ IDEAでは、これらは「構造検索と置換」および「移行」リファクタリングです。
現時点では、これがどのように機能するかわかりません。通常、クライアントコードの変更については、少なくともある程度の検討が必要です。非推奨のメソッドには、「代わりにメソッドXを使用し、最後のパラメーターとしてnullを渡す」などのコメントが含まれるのが理想的ですが、これを完全に自動化できるのは最も単純な場合のみです。多くの場合、「nullエントリを処理する必要がある場合は、Xを使用します。それ以外の場合は、Yを使用します。」のようなものがあります。
(さらに、最も単純な場合でも、機械可読形式で変換を表す現在の方法はありません。基本的に、私が知る限り、適切なプロトコルは定義されていません。)
いいアイデアですが、便利な方法で実装すると、削除するよりも複雑になると思います。さらに、これを完全に自動的に実行するツールには非常に注意が必要です。とにかく、すべての変更をプレビューしたいと思います。その時点では、通常、最初から手動で行うよりも多くの時間を節約することはできません。