これは Perl Advent Calendar 2022 13日目の記事です。昨日の記事は Perlで戻り値として呼び出した子サブルーチンのコンテキストは親と同じ - hogashi.* でした。
perlcriticは、Perl向けのlinterです。詳しくは以下の記事などを参照してください。
perlcriticの組み込みポリシー*1の1つに Subroutines::ProhibitBuiltinHomonyms があります。これは、Perlの組み込みサブルーチンや予約語と同じ名前のサブルーチンの定義を禁止するポリシーです。podから引用すると、以下のようなサブルーチン定義がポリシー違反だとみなされます。
sub open {} #not ok sub exit {} #not ok sub print {} #not ok sub foreach {} #not ok sub if {} #not ok
ところで、サブルーチンを使ってコントローラー定義するときは sub index
や sub delete
のような名前で定義するほうが意味が伝わりやすいこともあるかもしれません。これまでは、perlcriticの警告を抑制するためにいちいち ## no critic
コメント*2を書く必要がありました。しかし、もうちょっと設定の余地があってほしいものです。
ということで、Subroutines::ProhibitBuiltinHomonyms ポリシーが許可する識別子を設定できるようにするPRを (2年前に) 作り、つい先日取り込まれました。perlcriticの次のリリースではきっと設定項目が増えていると思います。
2023/1/6 追記: 当該の設定項目が perlcritic 1.146でリリースされました。
Subroutines::ProhibitBuiltinHomonyms now can take an "allows" parameter to specify subroutines that won't violate the policy. Thanks, UTAGAWA Kiki. (GH #14, #932) https://metacpan.org/release/PETDANCE/Perl-Critic-1.146/source/Changes#L12-14
PPI*3でPerlの構文木を触ったことがある人なら、比較的簡単にperlcriticにコントリビュートできると思います。みなさまも既存のポリシーに不満があれば、設定項目を足したり新しいポリシーを作ったりしてみてはいかがでしょうか。
明日は id:sfujiwara さんです。