Pergunta

Um que eu conheço é Perl::Crítico

E minha pesquisa no Google não resultou em nenhum resultado em várias tentativas até agora.:-(

Alguém tem alguma recomendação aqui?

Quaisquer recursos para configurar Perl::Critic de acordo com nossos padrões de codificação e executá-lo na base de código serão apreciados.

Foi útil?

Solução

Em termos de configuração de um perfil, você já tentou perlcritic --profile-proto?Isso emitirá stdout para todas as suas políticas instaladas com todas as suas opções com descrições de ambas, incluindo seus valores padrão, no formato perlcriticrc.Salve e edite para corresponder ao que você deseja.Sempre que você atualizar Perl::Critic, você pode querer executar este comando novamente e fazer uma comparação com seu perlcriticrc atual para que você possa ver quaisquer alterações nas políticas existentes e escolher quaisquer novas.

Em termos de execução regular do perlcritic, configure um Teste::Perl::Critic teste junto com o resto de seus testes.Isso é bom para novo código.

Para o seu código existente, use Teste::Perl::Critic::Progressive em vez de.T::P::C::Progressive terá sucesso na primeira vez que você executá-lo, mas salvará a contagem do número de violações;depois disso, T::P::C::Progressive reclamará se alguma das contagens subir.Uma coisa a observar é quando você reverte alterações em seu sistema de controle de origem.(Você está usando um, não está?) Digamos que eu faça check-in de uma alteração e execute testes e minhas alterações reduzam o número de violações P::C.Mais tarde, descobri que minha alteração estava incorreta, então voltei ao código antigo.O teste T::P::C::Progressive falhará devido às contagens reduzidas.A coisa mais fácil a fazer neste ponto é simplesmente excluir o arquivo de histórico (local padrão t/.perlcritic-history) e executar novamente.Ele deve reproduzir suas contagens antigas e você pode escrever coisas novas para reduzi-las novamente.

Perl::Critic tem muitas políticas que vêm com ele, mas há um monte de distribuições complementares de políticas.Dê uma olhada em Tarefa::Perl::Critic e Task::Perl::Critic::IncludingOptionalDependencies.

Você não precisa ter um único perlcriticrc para lidar com todo o seu código.Crie arquivos perlcriticrc separados para cada conjunto de arquivos que você deseja testar e, em seguida, um teste separado que aponte para cada um.Por exemplo, dê uma olhada nos testes do autor para o próprio P::C em http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/.Quando os testes de autor são executados, há um teste que percorre todo o código de P::C, um segundo teste que aplica regras adicionais apenas nas políticas e um terceiro que critica os testes de P::C.

Pessoalmente, acho que todos deveriam agir no nível de severidade “brutal”, mas eliminar as políticas com as quais não concordam.Perl::Critic não é totalmente autocompatível;mesmo os desenvolvedores do P::C não concordam com tudo o que Conway diz.Veja os arquivos perlcriticrc usados ​​no próprio Perl::Critic e procure no código Perl::Critic por instâncias de "## no critic";Conto 143 atualmente.

(Sim, sou um dos desenvolvedores do Perl::Critic.)

Outras dicas

perltidy para a maioria dos padrões estilísticos.perlcritic pode ser facilmente configurado usando um arquivo .perlcritic.Eu pessoalmente uso no nível um, mas desativei algumas políticas.

Além de 'frameworks automatizados', recomendo fortemente o de Damian Conway Melhores Práticas Perl.Não concordo 100% com o que ele sugere, mas na maioria das vezes ele acerta.

A postagem acima mencionando Desenvolvedor::Prof provavelmente realmente significa Desenvolvimento::Capa (para obter a cobertura de código de um conjunto de testes).

Uma boa combinação é perlcritic com EPIC para Eclipse - pressione CTRL-SHIFT-C (ou seu atalho configurado preferido) e seu código será marcado com indicadores de aviso sempre que o perlcritic encontrar algo do que reclamar.Muito melhor do que lembrar de executá-lo antes do check-in.E como é normal no perlcritic, ele pegará seu .perlcriticrc para que você possa personalizar as regras.Mantemos nosso .perlcriticrc no controle de versão para que todos tenham os mesmos padrões.

Além das melhores práticas cosméticas, sempre acho útil executar Devel::Prof em meu conjunto de testes de unidade para verificar a cobertura do teste.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top