

Rubycritic es una gema que envuelve gemas de análisis estático como Reek, Flay y Flog para proporcionar un informe de calidad de su código Ruby.
Esta gema proporciona características como:
Una descripción general de su proyecto: 
Un índice de los archivos del proyecto con su número respectivo de olores: 
Un índice de los olores detectados: 
Al analizar el código como el siguiente:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endBásicamente vuelve algo como esto:

En algo como esto:

Utiliza su sistema de control de origen (solo GIT, Mercurial y Perforce son actualmente compatibles) para comparar sus cambios actualmente no comprometidos con su última confirmación.
ADVERTENCIA : Si su código no es como espera que sea después de ejecutar Rubycritic, verifique el alijo de su sistema de control de origen.
Consulte los /docs si desea leer más sobre nuestras métricas centrales.
Rubycritic se puede instalar con el siguiente comando:
$ gem install rubycriticSi prefiere instalar Rubycritic usando Bundler, agregue esta línea al archivo gem de su aplicación:
gem "rubycritic" , require : falseY luego ejecutar:
$ bundle Ejecutar rubycritic sin argumentos analizará todos los archivos de Ruby en el directorio actual:
$ rubycritic Alternativamente, puede aprobar rubycritic una lista de archivos y directorios. El análisis se alcanzará a los archivos y directorios proporcionados:
$ rubycritic app lib/foo.rbPara una lista completa de las opciones de línea de comandos ejecutándose:
$ rubycritic --help| Indicador de comandos | Descripción |
|---|---|
-v / --version | Muestra la versión actual y las salidas |
-p / --path | Establecer ruta donde se guardará el informe (TMP/Rubycritic de forma predeterminada) |
--coverage-path | Establezca ruta donde se guardará simplamente (./Coverage de forma predeterminada) |
-f / --format | Informe los olores en los formatos dados 1 |
--custom-format path:classname | Cargue e instanciar formatúas personalizadas 2 |
-s / --minimum-score | Establezca una puntuación mínima (flotante: Ej: 96.28), predeterminado: 0 |
-m / --mode-ci | Use el modo CI 3 |
-b / --branch | Establecer rama para comparar |
-t / --maximum-decrease | Umbral para la diferencia de puntaje entre dos ramas 4 |
--deduplicate-symlinks | Desenglicar los enlaces simbólicos basados en su objetivo final |
--suppress-ratings | Suprimir las clasificaciones de letras |
--no-browser | No abra el informe HTML con el navegador |
html (predeterminado; se abrirá en un navegador)jsonconsolelint-b-b , predeterminado: 0 También puede usar un archivo de configuración. Simplemente cree un .rubycritic.yml en la ruta de la raíz de su proyecto.
Aquí hay un ejemplo:
mode_ci :
enabled : true # default is false
branch : ' production ' # default is main
branch : ' production ' # default is main
path : ' /tmp/mycustompath ' # Set path where report will be saved (tmp/rubycritic by default)
coverage_path : ' /tmp/coverage ' # Set path where SimpleCov coverage will be saved (./coverage by default)
threshold_score : 10 # default is 0
deduplicate_symlinks : true # default is false
suppress_ratings : true # default is false
no_browser : true # default is false
formats : # Available values are: html, json, console, lint. Default value is html.
- console
minimum_score : 95 # default is 0
paths : # Files to analyse. Churn calculation is scoped to these files when using Git SCM.
- ' app/controllers/ '
- ' app/models/ 'Reek : RubyCritic utiliza el mecanismo de carga de configuración predeterminado de Reek . Esto significa que si tiene un archivo de configuración Reek existente, puede poner esto en su proyecto Root y RubyCritic respetará esta configuración.flay : usamos la configuración predeterminada de flay .flog : utilizamos la configuración predeterminada de flog con un par de ajustes más pequeños:all : FUGA flog a informar puntajes en todas las clases y métodos. Sin esta opción, flog solo dará resultados a un cierto umbral.continue : hace que flog no aborte cuando un archivo de Ruby no se puede analizar.methods : Configura flog para omitir el código fuera de los métodos. Evita que flog informe sobre los "métodos" private y protected . También evita que flog informe sobre métodos de rieles como before_action y has_many .Si te gusta el guardia, te gustaría que Guard-Rubycritic. Analiza automáticamente sus archivos Ruby a medida que se modifican.
Para la integración continua, puede darle un giro a Jenkins CI. ¡Con él, puede construir fácilmente su propio clima de código (pobre-hombre)!
Puede usar el comando Rubycritic como Rake en su forma más simple como esta:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newUna tarea de rastrillo más sofisticada que utilizaría todas las opciones de configuración disponibles podría verse así:
RubyCritic :: RakeTask . new do | task |
# Name of RubyCritic task. Defaults to :rubycritic.
task . name = 'something_special'
# Glob pattern to match source files. Defaults to FileList['.'].
task . paths = FileList [ 'vendor/**/*.rb' ]
# You can pass all the options here in that are shown by "rubycritic -h" except for
# "-p / --path" since that is set separately. Defaults to ''.
task . options = '--mode-ci --format json'
# Defaults to false
task . verbose = true
# Fail the Rake task if RubyCritic doesn't pass. Defaults to true
task . fail_on_error = true
endRubycritic intentará abrir el informe generado con un navegador de forma predeterminada. Si no desea esto, puede prevenir este comportamiento estableciendo las opciones correspondientemente:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endSi desea crear múltiples tareas de rastrillo (por ejemplo, para la configuración local y específica del CI), ¡puede hacerlo! Si decide hacer esto, debe proporcionar una descripción más clara para cada tarea:
# for local
RubyCritic :: RakeTask . new ( "local" , "Run RubyCritic (local configuration)" do | task |
# ...
end
# for CI
RubyCritic :: RakeTask . new ( "ci" , "Run RubyCritic (CI configuration)" do | task |
task . options = "--mode-ci"
# ...
end Ver Formatters
Rubycritic está soportando versiones de Ruby:
| Versión de rubí | Última versión rubycrítica |
|---|---|
| 2.4 | V4.7.0 |
| 2.5 | V4.7.0 |
| 2.6 | V4.7.0 |
| 2.7 | V4.9.x |
| 3.0 | el último |
| 3.1 | el último |
| 3.2 | el último |
| 3.3 | el último |
Rubycritic no tiene que seguir siendo una segunda opción para otros servicios de análisis de calidad de código. Juntos, podemos mejorarlo y continuar construyendo sobre las grandes herramientas de métricas de código que están disponibles en el ecosistema Ruby.
Podría decirse que la gema Better_errors solo se hizo popular después de recibir una solicitud de extracción (bastante impresionante) que cambió el diseño de su página.
Del mismo modo, las solicitudes de extracción que mejoren la apariencia de la gema, que ajustan el cálculo de las calificaciones o que solucionan los problemas existentes serán bienvenidos. Solo comentar sobre un tema y dar una idea de cómo algo debería funcionar será apreciado. Ninguna contribución es demasiado pequeña.
Vea las pautas contribuyentes de Rubycritic sobre cómo proceder.
El autor inicial RubyCritics era Guilherme Simões.
El equipo central actual consta de:

Rubycritic es mantenido y financiado por Whitesmith. Tuitea tus preguntas o sugerencias a @Whitesmithco.