9

私が知っているのは、Perl ::批評家です

そして、私のグーグルは、これまでの複数の試行で結果をもたらしませんでした. :-(

ここで何かお勧めはありますか?

コーディング標準に従って Perl::Critic を構成し、コード ベースで実行するためのリソースをいただければ幸いです。

4

7 に答える 7

12

プロファイルの設定に関して、試してみましたperlcritic --profile-protoか? これにより、インストールされているすべてのポリシーが、すべてのオプションとともに、デフォルト値を含む両方の説明とともに、perlcriticrc 形式で stdout に出力されます。保存して、必要に応じて編集します。Perl::Critic をアップグレードするときはいつでも、このコマンドを再度実行し、現在の perlcriticrc との差分を作成して、既存のポリシーへの変更を確認し、新しいポリシーを取得することができます。

perlcritic を定期的に実行するという点では、残りのテストと一緒にTest::Perl::Criticテストをセットアップします。これは新しいコードに適しています。

既存のコードには、代わりにTest::Perl::Critic::Progressiveを使用してください。T::P::C::Progressive は、最初に実行したときは成功しますが、違反の回数を節約します。その後、T::P::C::Progressive はカウントが上がると文句を言います。注意すべきことの 1 つは、ソース管理システムで変更を元に戻す場合です。(あなたはそれを使っていますよね?) 変更をチェックインしてテストを実行すると、変更によって P::C 違反の数が減るとします。後で、私の変更が悪かったことが判明したので、古いコードに戻します。T::P::C::Progressive テストは、カウントが減ったために失敗します。この時点で行う最も簡単な方法は、履歴ファイル (デフォルトの場所は t/.perlcritic-history) を削除して、再度実行することです。古いカウントを再現する必要があり、新しいものを書いてそれらを再びダウンさせることができます。

Perl::Critic には多くのポリシーが同梱されていますが、ポリシーのアドオン配布も多数あります。Task::Perl::Critic Task::Perl::Critic::InclusiveDependencies を見てください。

単一の perlcriticrc ですべてのコードを処理する必要はありません。テストするファイルのセットごとに個別の perlcriticrc ファイルを作成してから、それぞれを指す個別のテストを作成します。例として、http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/にある P::C 自体の作成者テストを見てください。作成者テストが実行されると、P::C のすべてのコードに対して実行されるテスト、ポリシーのみに追加のルールを適用する 2 番目のテスト、および P::C のテストを批判する 3 番目のテストがあります。

個人的には、誰もが「残忍な」重大度レベルで実行する必要があると思いますが、同意しないポリシーはノックアウトします. Perl::Critic は完全に自己準拠ではありません。P::C の開発者でさえ、Conway の言うことすべてに同意しているわけではありません。Perl::Critic 自体で使用されている perlcriticrc ファイルを見て、Perl::Critic コードで "## no critical" のインスタンスを検索してください。現在数えたら143匹。

(はい、私は Perl::Critic 開発者の 1 人です。)

于 2008-09-15T13:12:17.130 に答える
5

ほとんどの文体標準にはperltidがあります。perlcritic は、 .perlcritic ファイルを使用して簡単に構成できます。個人的にはレベル 1 で使用していますが、いくつかのポリシーを無効にしました。

于 2008-09-09T10:41:18.370 に答える
4

「自動化されたフレームワーク」に加えて、Damian Conway のPerl Best Practicesを強くお勧めします。彼の提案に 100% 同意するわけではありませんが、ほとんどの場合、彼は意気投合しています。

于 2008-09-10T20:40:45.657 に答える
3

上記のDevel::Profについての投稿は、おそらく実際にはDevel::Cover (テスト スイートのコード カバレッジを取得するため) を意味します。

于 2008-09-16T22:03:31.353 に答える
2

お気に入り:

素敵なツールに見えます!

于 2008-09-09T10:20:42.147 に答える
1

perlcritic と EPIC for Eclipse - hit CTRL- SHIFT- C(または好みの構成済みショートカット) を組み合わせると、perlcritic が文句を言うべきものを見つけた場合にコードが警告インジケーターでマークアップされます。チェックイン前に実行することを覚えておくよりもはるかに優れています。perlcritic では通常どおり、.perlcriticrc が取得されるので、ルールをカスタマイズできます。私たちは .perlcriticrc をバージョン管理し、誰もが同じ基準を取得できるようにしています。

于 2008-09-15T09:43:49.300 に答える
0

表面的なベスト プラクティスに加えて、ユニット テスト スイートで Devel::Prof を実行してテスト カバレッジを確認することは常に有用です。

于 2008-09-16T09:24:24.127 に答える