[Rio-pm] Perl Critic + Modern::Perl

breno breno em rio.pm.org
Domingo Julho 3 10:41:16 PDT 2011


2011/7/3 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
> Tenho o seguinte arquivo:
>
> $ cat a.pl
> use Modern::Perl;
>
> say "oie";
>
> Mas se eu rodar o perl critic
>
> $ perlcritic -4 a.pl
> Code not contained in explicit package at line 1, column 1.  Violates
> encapsulation.  (Severity: 4)
> Module does not end with "1;" at line 3, column 1.  Must end with a
> recognizable true value.  (Severity: 4)

(...)

>
> Outra coisa: mesmo que eu queira criar um script standalone é
> recomendado fazer isto?

Eu ia dizer, mas vc pelo visto já descobriu:

------------
@pac_man Perl::Critic::Policy::Modules::RequireExplicitPackage doesn't
apply to files that begin with a perl shebang \o/
------------

Te confesso que achei estranho de qualquer forma. Para mim, o critic
deveria tratar como módulos os arquivos .pm, e como scripts os .pl.
Não é obrigatório, mas é convenção. Poderia até mesmo haver
verificações para arquivos de testes (.t), talvez exista e eu é que
não tenha visto. Vale lembrar que o projeto foi criado inicialmente
para conformidade com o livro Perl Best Practices, que ainda tem muito
conteúdo atual, mas não prevê montes de coisas. O livro enfatiza,
claro, que trata-se da opinião do autor e o importante é montar um
".perlcriticrc" com as suas próprias guidelines, e manter-se
consistente. Exatamente como o Tidy.

Há algumas regras complementares que eu gosto, como
Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire, e
muitos devs acabam fazendo seus próprios plugins pro Critic. Enfim,
vai do gosto de cada um :-)

[]s

-b


Mais detalhes sobre a lista de discussão Rio-pm