[SP-pm] Critic... too much

breno breno at rio.pm.org
Sat Feb 19 20:03:41 PST 2011


>> >>>>> "breno" == breno  <breno em rio.pm.org> writes:
>>
>>    breno> "blib"?
>>
>> >>>>> "Thiago" == Thiago  <thiagoglauco em ticursos.net> writes:
>>
>>    Thiago> blib/lib é a pasta onde o Queue::Base esta instalada na maquina
>> dele.
>>
>> Apesar de poder instalar o módulo num diretório arbitrariamente chamado
>> blib se quiser, blib ("build lib") costuma ser o diretório onde os
>> builders/installers (ExtUtils::MakeMaker, Module::Install,
>> Module::Build) usam pra fazer o build/staging do módulo antes de
>> instalar. Então é possível que a source tree e o blib do russo esteja
>> dessincronizada.
>
> No caso, o blib é o diretório de build (como assim vocês não sabiam???
> rsrsrs).

Acho que todos nós sabemos o que é o blib :)
Não posso falar pelo Eden, mas o que eu quis dizer com "blib?" foi:
"pq diabos vc está rodando critic no blib? Existem vários motivos para
não fazer isso", e acho que o comentário dele foi na mesma linha.
Estava com pressa na hora, desculpe se não fui específico o
suficiente. Agora que vc detalhou melhor o problema e as
circunstâncias associadas, ficou mais fácil :)

> Logo, o problema é que, o código que é efetivamente gerado (pelo plugin do
> Dist::Zilla) não é Perl::Critic-friendly.

É exatamente isso. Especificamente, o Dist::Zilla::Plugin::PkgVersion,
ativado via [PkgVersion].

De cara, vejo 5 alternativas:

1. Remover o [PkgVersion] do seu dist.ini e configurar $VERSION
manualmente. Mas se vc está usando o dzil, suponho que o principal
motivo seja a preguiça, e quando a gente começa a atualizar versão
manualmente, dificilmente quer voltar atrás. Você pode usar o
[VersionFromModule] para minimizar o esforço, mas recomendo ver as
outras alternativas abaixo antes de tentar essa;

2. Colocar o "header da alegria" antes da definição do pacote. Ou seja:

--------------8<--------------
use strict;
use warnings;
package Queue::Base;
...
-------------->8--------------

Testei aqui com o Queue::Base e o "dzil build" criou um Base.pm que
passava no critic --brutal (pelo menos em relação ao teste em
questão);

2.5. Usar o plugin [Prepender] com as linhas do "header da alegria",
pra não precisar fazer o passo 2 manualmente;

3. Utilizar o [OurPkgVersion] em vez do [PkgVersion]. Também resolve o
problema. http://search.cpan.org/perldoc?Dist::Zilla::Plugin::OurPkgVersion

4. Adicionar a tag mágica  ## no critic (RequireUseStrict,
RequireUseWarnings);  (não recomendo)

5. Fazer um patch para as políticas associadas:
Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict,
Perl::Critic::Policy::TestingAndDebugging::RequireUseWarnings, para
permitir blocos de compile-time (como BEGIN {} ). Já existe um pedido
pra isso no RT do Perl::Critic
(https://rt.cpan.org/Public/Bug/Display.html?id=65839) mas o autor não
parece muito inclinado a fazer isso, pelo menos não com os argumentos
fornecidos (e sem um patch já pronto). Há uma discussão maior sobre a
mesma questão em https://rt.cpan.org/Public/Bug/Display.html?id=28676
- acho que ainda não decidiram se é um bug ou uma feature :)

Espero ter ajudado!


[]s

-b


More information about the SaoPaulo-pm mailing list