9

私のプロジェクトでは、現在、レガシー コードから、適切に設計およびテストされた新しいモジュールへの段階的な移行を準備しています。すべての仲間のプログラマーが私の仕事に厳密に従っているわけではないので、古いコードが使用されている場合は警告を発したいと思います。また、古いコードを移植する方法に関する推奨事項を出力できることを強く望んでいます。

私はそれを行う2つの方法を見つけました:

  1. Attribute::Deprecated、関数には問題ありませんが、完全なモジュールが非推奨の場合はかなり面倒です。また、警告以外の追加情報はありません。

  2. Perl::Critic::Policy::Modules::ProhibitEvilModulesPerl::Criticモジュールの場合、または関数またはメソッドレベルでのより細かい非推奨のためのカスタムルールかもしれません。このメソッドは問題ありませんが、非推奨であることはコード自体からすぐにはわかりません。

これを適切かつ簡単に行うための他の提案やトリックはありますか?

4

1 に答える 1

18

メソッドと関数の場合、関数の本体を警告と優先関数の呼び出しに置き換えるだけです。

perl perllexwarnは次の例を示します:

 package MyMod::Abc;

 sub open {
     warnings::warnif("deprecated",
     "open is deprecated, use new instead");
     new(@_);
 }

 sub new {
     # ...
 }
 1;

モジュール全体を非推奨にする場合は、警告をBEGINモジュール内のブロックに入れます。

importメソッドに警告を入れることもできます(例: Win32::GUI::import ): それはすべて、何をしたいかによって異なります。

于 2009-11-09T14:08:21.280 に答える