2008-09-09 14 views
9

Uno que yo sepa es Perl::Critic¿Existen buenos marcos automatizados para aplicar estándares de codificación en Perl?

Y mi Google ha resultado en ningún resultado en varios intentos hasta el momento. ?. :-(

¿Alguien tiene alguna recomendación aquí

Todos los recursos para configurar Perl :: crítico según nuestros estándares de codificación y ejecutarlo en la base de código sería apreciada

+0

¿Qué quiere decir con "funcionamiento inmediato"? – svrist

+0

Con "Up and running", me refiero a configurar la crítica según mis necesidades (sé que existe Perl :: Critic :: Config, pero al ser un codificador de Perl, estoy tratando de ser muy flojo :)) y ejecutarlo mi código base Actualizaré la pregunta. – Jagmal

Respuesta

12

En cuanto a la configuración de un perfil, ¿ha intentado 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 existente, 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 Task::Perl::Critic y Task::Perl::Critic::IncludingOptionalDependencies.

No necesita tener un solo perlcriticrc manejar todo su código. Cree archivos perlcriticrc por separado 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 sí mismo 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 todo el mundo debe ejecutar al nivel de gravedad "brutal", pero anular las políticas 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.)

5

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

4

Además de 'marcos automáticos', recomiendo encarecidamente las Perl Best Practices de 0 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.

1

Una buena combinación es perlcritic con EPIC para Eclipse: pulse 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.

0

Además de las mejores prácticas de cosméticos, siempre resulta útil para ejecutar Devel :: profesor en mi banco de pruebas para comprobar la unidad cobertura de prueba.

2

La publicación mencionada anteriormente Devel::Prof probablemente realmente signifique Devel::Cover (para obtener la cobertura del código de un banco de pruebas).

Cuestiones relacionadas