[僕] Catalyst で app 生成時に perlcritic なテストを吐く

僕ト云フ事

たろマークはてなブックマーク

2007年05月26日

[catalyst][critic][perl] Catalyst で app 生成時に perlcritic なテストを吐く

Test::Perl::Criticmiyagawa さんのやり方をパクって使ってます。

んで、Catalyst で開発するときとか catalyst.pl MyApp した後にわざわざ t/99perlcritic.t なファイル作ってコピペしてたんですが、catalyst.pl MyApp したときに自動で吐くようにしてみました。ので Catalyst::Helper のパッチ。

*** Helper.pm.org       2007-05-26 19:23:49.000000000 +0900
--- Helper.pm   2007-05-26 19:32:56.000000000 +0900
***************
*** 397,402 ****
--- 397,404 ----
      $self->render_file( 'apptest',         "$t\/01app.t" );
      $self->render_file( 'podtest',         "$t\/02pod.t" );
      $self->render_file( 'podcoveragetest', "$t\/03podcoverage.t" );
+     $self->render_file( 'perlcritic', "$t\/99perlcritic.t" );
+     $self->render_file( 'perlcriticrc', "$t\/perlcriticrc" );
  }
  
  sub _mk_cgi {
***************
*** 715,720 ****
--- 717,742 ----
  plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD};
  
  all_pod_coverage_ok();
+ __perlcritic__
+ use strict;
+ use warnings;
+ use Test::More;
+ 
+ eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcriticrc") };
+ plan skip_all => "Test::Perl::Critic is not installed." if $@;
+ plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD};
+ 
+ all_critic_ok("lib");
+ __perlcriticrc__
+ # for mkdir $dir, 0777
+ [-ValuesAndExpressions::ProhibitLeadingZeros]
+ 
+ # we do eval $asset_pl a lot
+ [-BuiltinFunctions::ProhibitStringyEval]
+ 
+ # no strict 'refs'
+ [TestingAndDebugging::ProhibitNoStrict]
+ allow = refs
  __cgi__
  [% startperl %]

意外と引っかからないなぁとか思ってたけど、severity を 1 にしたら結構色々言われました。こういうの見るとなるほどなぁとも思うんだけど、RCS keywords $Id$ not found とか言われるのはうっとうしいので severity は 1 にして、perlcriticrc を編集したらいいかなぁ。(ちなみに上のパッチは default の 5)

トラックバック

このエントリーのトラックバックURL:
http://vkgtaro.jp/cgi-bin/mt/mt-tb.cgi/608

コメントを投稿