2008-09-10 8 views
37

Una cosa que realmente extraño de Java es el soporte de herramientas. FindBugs, Checkstyle y PMD fueron una sagrada trinidad de métricas de calidad de código y comprobación automática de errores.Herramienta de calidad de código automático para Ruby?

¿Hay algo que verifique si hay errores simples o violaciones de estilo al código de Ruby? Puntos de bonificación si puedo adaptarlo para frameworks como Rails para que se respeten los modismos de Rails.

+0

Lo que está describiendo es un [linter] (http://en.wikipedia.org/wiki/Lint_ (software)). – meagar

+1

Nunca escuché ese término antes, y el enlace al que hizo referencia usa "herramientas similares a pelusas" y nunca menciona la palabra "linter". La mayoría de las veces los escucho descritos como "herramientas de análisis estático". –

+0

"Linter" y "linting" son términos bastante [comunes y autoexplicativos] (https://www.google.ca/search?q=ruby+linter&aq=f&oq=ruby+linter&aqs=chrome.0.57j62j64.2072&sourceid= chrome & ie = UTF-8 # hl = es & sclient = psy-ab & q = código + linter & oq = código + linter & gs_l = serp.3..0j0i30j0i5i30j0i7i5i30.8171.8712.0.8837.5.5.0.0.0.0.109.455.3j2.5.0 ... 0.0 .. .1c.1.7.psy-ab.YB_cRC0Tyy4 & pbx = 1 & bav = on.2, or.r_cp.r_qf. & Bvm = bv.44158598, d.aWM & fp = 458327f821c3aced & biw = 1154 & bih = 1050). – meagar

Respuesta

17

Recientemente he empezado a buscar algo así para Ruby. Lo que he encontrado hasta ahora corro:

Estos pueden ser puntos de partida. Lamentablemente, aún no he usado ninguno de los tres para ofrecer una buena opinión.

3

Dust Parece que puede ayudarlo a encontrar el código inútil e inútil, que parece que se adapta a lo que está buscando.

No conozco ninguna otra herramienta similar.
Este problema es mucho más difícil de abordar en ruby ​​que en java; notará que todas las herramientas java se autodenominan como "análisis estático" del código.
El análisis estático de código Ruby a menudo no es posible, porque no hay nada estático que se puede analizar (métodos a menudo se crean en tiempo de ejecución, etc.)

En cualquier caso, algunas de estas cosas son innecesarias en ruby porque el lenguaje los construye. Por ejemplo, no necesita un estándar de codificación para exigir que sus clases sean todas NamedLikeThis porque el código no funcionará si no lo están.

P.S. I tiene para agregar la exención de responsabilidad estándar que ese tipo de herramientas a menudo puede ser una pista falsa. Puede pasar todo el día haciendo que su código se adhiera a lo que la herramienta cree que debería ser y termine con más errores de los que comenzó.
En mi humilde opinión, la mejor solución es escribir su código con fluidez para que pueda leerlo más fácilmente. Ninguna cantidad de análisis estático va a ser tan buena como un código de lectura humana que indique claramente lo que debe hacer. Ser capaz de hacer esto es donde el rubí está a años luz de muchos otros idiomas. Personalmente, recomendaría que apunte sus esfuerzos a aprender a escribir con más fluidez y a educar a su equipo sobre estas cosas, que pasar tiempo en análisis estático.

+0

Escribir con fluidez y educar al equipo es ciertamente un objetivo; sin embargo, cuando los modismos cambian (por ejemplo ENV ['RAILS_ENV'] == 'desarrollo' a Rails.env.development?) entonces este tipo de herramientas pueden ser muy útiles para evitar que los malos hábitos comiencen. –

7

Saikuro y Flog pueden ser buenos para tener una idea básica de la complejidad del código. También puede usar una herramienta como rcov para ver su cobertura de prueba.
Existe un complemento para proyectos Rails que combina todas esas métricas en una única tarea de rake. Se llama metric_fu.

1

No vi estas preguntas cuando se me preguntó, pero una publicación de blog que hice también podría ayudar. En él cubro un montón de herramientas de Ruby y cubro específicamente 4 herramientas de calidad de código ...

  1. Roodi
  2. polvo
  3. Flog
  4. Saikuro

También podría ser vale la pena mirar Toallín y Flay

http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/

Ahora hemos combinado una gran cantidad de herramientas en un solo la herramienta de monitoreo de calidad y métricas del código Ruby llamada Caliper. Esto podría ajustarse bien a sus necesidades. Realiza un seguimiento de diversas métricas de calidad durante la vida de un proyecto.

Caliper - improve your Ruby code

3

Otra herramienta agradable, aunque en las primeras etapas según el autor es olor:

http://reek.rubyforge.org/

olor actualmente incluye controles muy ingenuos para el siguiente código huele:

  • Método largo
  • clase grande
  • Característica Envidia
  • Nombre poco comunicativa
  • larga lista de parámetros
  • función de utilidad
  • anidadas Iteradores
  • control Pareja
  • Duplicación
  • elemento de la lista

Personalmente creo que todavía tiene demasiados postulados falsos Pero me limité a mirar el resultado de algunos de mis códigos, lo que me ayudó a repensar algunas decisiones sobre el estilo y la arquitectura del código.

0

También hay excellent. No lo he intentado todavía, pero también parece prometedor.

6

proyectos que he encontrado y probado recientemente:

2

Code Climate es una herramienta que integra SaaS a través de git y automáticamente "grados" de su código. Le notifica a través de varios canales si hay una caída repentina en la calidad. Buena interfaz de usuario también.

5

Es posible que desee probar RuboCop. Es un comprobador de estilo de código de Ruby basado en el Ruby Style Guide. Se mantiene bastante activo y se basa en las herramientas estándar de Ruby (como la biblioteca ripper). Funciona bien con Ruby 1.9 y 2.0 y tiene una gran integración de Emacs. ¡Espero que lo encuentres útil!

Cuestiones relacionadas