Pregunta

Uno que conozco es Perl::Crítico

Y mi búsqueda en Google no ha arrojado resultados en múltiples intentos hasta el momento.:-(

¿Alguien tiene alguna recomendación aquí?

Se agradecería cualquier recurso para configurar Perl::Critic según nuestros estándares de codificación y ejecutarlo en el código base.

¿Fue útil?

Solución

En términos de configuración de un perfil, ¿has probado? perlcritic --profile-proto?Esto emitirá de forma estándar todas sus políticas instaladas con todas sus opciones con descripciones de ambas, incluidos sus valores predeterminados, en formato perlcriticrc.Guarde y edite para que coincida con lo que desea.Siempre que actualice Perl::Critic, es posible que desee ejecutar este comando nuevamente y hacer una diferencia con su perlcriticrc actual para poder ver cualquier cambio en las políticas existentes y seleccionar las nuevas.

En términos de ejecutar perlcritic regularmente, configure un Prueba::Perl::Crítico prueba junto con el resto de tus pruebas.Esto es bueno para código nuevo.

Para su código existente, use Prueba::Perl::Crítico::Progresivo en cambio.T::P::C::Progressive tendrá éxito la primera vez que lo ejecute, pero guardará el recuento del número de infracciones;a partir de entonces, T::P::C::Progressive se quejará si alguno de los conteos aumenta.Una cosa a tener en cuenta es cuando revierte los cambios en su sistema de control de fuente.(Estás usando uno, ¿no?) Digamos que reviso un cambio y ejecuto pruebas y mis cambios reducen la cantidad de violaciones de P::C.Más tarde, resulta que mi cambio fue incorrecto, así que vuelvo al código anterior.La prueba T::P::C::Progressive fallará debido a los recuentos reducidos.Lo más fácil de hacer en este punto es simplemente eliminar el archivo histórico (ubicación predeterminada t/.perlcritic-history) y ejecutarlo nuevamente.Debería reproducir tus viejos conteos y puedes escribir cosas nuevas para bajarlos nuevamente.

Perl::Critic tiene muchas políticas incluidas, pero hay un montón de distribuciones complementarias de políticas.Mira esto Tarea::Perl::Crítico y Tarea::Perl::Crítico::IncluyendoDependenciasOpcionales.

No es necesario que un solo perlcriticrc maneje 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 del autor para P::C en 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 recorre todo el código de P::C, una segunda prueba que aplica reglas adicionales solo a las políticas y una tercera que critica las pruebas de P::C.

Personalmente, creo que todo el mundo debería postularse con un nivel de severidad "brutal", pero eliminar las políticas con las que no esté de acuerdo.Perl::Critic no es totalmente autosuficiente;Incluso los desarrolladores de P::C no están de acuerdo con todo lo que dice Conway.Mire los archivos perlcriticrc utilizados en Perl::Critic y busque en el código Perl::Critic instancias de "## no critic";Cuento 143 en la actualidad.

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

Otros consejos

Hay perversión 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 encarecidamente el de Damian Conway. Mejores prácticas de Perl.No estoy de acuerdo al 100% con lo que sugiere, pero la mayoría de las veces acierta.

La publicación de arriba mencionando Desarrollo::Prof probablemente realmente significa Desarrollo::Cubierta (para obtener la cobertura del código de un conjunto de pruebas).

Una buena combinación es perlcritic con EPIC para Eclipse: presione CTRL-SHIFT-C (o su acceso directo configurado preferido) y su código estará marcado con indicadores de advertencia siempre que perlcritic haya encontrado algo de qué 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 nuestro .perlcriticrc en control de versiones para que todos obtengan los mismos estándares.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top