perl frameworks coding-style perl-critic

¿Existen buenos marcos automatizados para aplicar estándares de codificación en Perl?



frameworks coding-style (7)

De lo que soy consciente es Perl :: Critic

Y mi Google ha dado como resultado ningún resultado en múltiples intentos hasta el momento. :-(

¿Alguien tiene alguna recomendación aquí?

Cualquier recurso para configurar Perl :: Critic según nuestros estándares de codificación y ejecutarlo en base a códigos sería apreciado.


Hay perltidy para la mayoría de los estándares estilísticos. perlcritic se puede configurar fácilmente usando un archivo .perlcritic . Yo personalmente lo uso en el nivel uno, pero he desactivado algunas políticas.


Además de los "marcos automatizados", recomiendo las mejores prácticas de Perl de Damian Conway. No estoy de acuerdo con el 100% de lo que él sugiere, pero la mayoría de las veces es fanático.


Una buena combinación es perlcritic con EPIC para Eclipse: presione CTRL-SHIFT-C (o su atajo configurado preferido) y su código estará marcado con indicadores de advertencia donde perlcritic haya encontrado algo de lo que quejarse. Mucho mejor que recordar ejecutarlo antes de registrarse. Y como es normal con perlcritic, recogerá su .perlcriticrc para que pueda personalizar las reglas. Mantenemos nuestra .perlcriticrc en control de versiones para que todos obtengan los mismos estándares.


Además de las mejores prácticas cosméticas, siempre me parece útil ejecutar Devel :: Prof en mi paquete de pruebas unitarias para verificar la cobertura de las pruebas.


En términos de configurar un perfil, ¿has probado perlcritic --profile-proto ? Esto emitirá para extender todas sus políticas instaladas con todas sus opciones con descripciones de ambos, incluidos sus valores predeterminados, en formato perlcriticrc. Guarde y edite para que coincida con lo que desea. Cada vez que actualice Perl :: Critic, es posible que desee ejecutar este comando nuevamente y hacer una diferencia con su perlcriticrc actual para que pueda ver los cambios en las políticas existentes y recoger las nuevas.

En términos de ejecutar perlcritic regularmente, configure una prueba Test :: Perl :: Critic junto con el resto de sus pruebas. Esto es bueno para el nuevo código.

Para su código actual, use Test :: Perl :: Critic :: Progressive en su lugar. T :: P :: C :: Progressive tendrá éxito la primera vez que lo ejecute, pero guardará las cuentas en la cantidad de violaciones; a partir de entonces, T :: P :: C :: Progressive se quejará si sube el conteo. Una cosa a tener en cuenta es cuando revierte los cambios en su sistema de control de origen. (Estás usando uno, ¿no?) Digamos que verifico un cambio y realizo pruebas, y mis cambios reducen el número de violaciones P :: C. Más tarde, resulta que mi cambio fue malo, así que vuelvo al código anterior. La prueba progresiva T :: P :: C :: fallará debido a los recuentos reducidos. Lo más fácil de hacer en este punto es simplemente eliminar el archivo de historial (ubicación predeterminada t / .perlcritic-history) y ejecutar de nuevo. Debería reproducir tus antiguos conteos y puedes escribir cosas nuevas para derribarlos nuevamente.

Perl :: Critic tiene muchas políticas que lo acompañan, pero hay un montón de distribuciones adicionales de políticas. Eche un vistazo a Tarea :: Perl :: Crítica y Tarea :: Perl :: Critic :: IncludingOptionalDependencies .

No necesita tener un solo perlcriticrc manejar todo su código. Cree archivos perlcriticrc separados para cada conjunto de archivos que desee probar y luego una prueba separada que apunte a cada uno. Por ejemplo, eche un vistazo a las pruebas de autor para P :: C en http://perlcritic.tigris.org/source/browse/perlcritic/trunk/Perl-Critic/xt/author/ . Cuando se ejecutan pruebas de autor, hay una prueba que se ejecuta sobre todo el código de P :: C, una segunda prueba que aplica reglas adicionales solo en las políticas, y una tercera que critica las pruebas de P :: C.

Personalmente creo que todos deben correr al nivel de severidad "brutal", pero anulan las políticas con las que no están de acuerdo. Perl :: Critic no es totalmente autocomplaciente; incluso los desarrolladores de P :: C no están de acuerdo con todo lo que dice Conway. Mire los archivos perlcriticrc usados ​​en Perl :: Critic mismo y busque el código de Perl :: Critic para las instancias de "## no critical"; Cuento 143 en la actualidad.

(Sí, soy uno de los desarrolladores de Perl :: Critic).


La publicación anterior que menciona a Devel :: Prof probablemente significa realmente Devel :: Cover (para obtener la cobertura del código de un banco de pruebas).