

RubyCritic est un joyau qui s'enroule autour des joyaux d'analyse statique tels que Reek, Flay et Flog pour fournir un rapport de qualité de votre code Ruby.
Ce joyau fournit des fonctionnalités telles que:
Un aperçu de votre projet: 
Un index du projet dépose avec leur nombre respectif d'odeurs: 
Un indice des odeurs détectées: 
Lors de l'analyse du code comme les suivants:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endCela transforme essentiellement quelque chose comme ceci:

Dans quelque chose comme ceci:

Il utilise votre système de contrôle source (seuls Git, Mercurial et Ferforce sont actuellement pris en charge) pour comparer vos modifications actuellement non engagées avec votre dernier engagement.
AVERTISSEMENT : Si votre code n'est pas comme vous vous attendez à ce qu'il soit après avoir exécuté RubyCritic, veuillez vérifier la cachette de votre système de contrôle source.
Découvrez le /docs si vous souhaitez en savoir plus sur nos métriques de base.
RubyCritic peut être installé avec la commande suivante:
$ gem install rubycriticSi vous préférez installer RubyCritic à l'aide de Bundler, ajoutez cette ligne au gemfile de votre application:
gem "rubycritic" , require : falsePuis exécuter:
$ bundle L'exécution rubycritic sans arguments analysera tous les fichiers Ruby dans le répertoire actuel:
$ rubycritic Vous pouvez également passer rubycritic une liste de fichiers et répertoires. L'analyse sera portée aux fichiers et répertoires fournis:
$ rubycritic app lib/foo.rbPour une liste complète des options de ligne de commande exécutées:
$ rubycritic --help| Drapeau de commande | Description |
|---|---|
-v / --version | Affiche la version actuelle et sort |
-p / --path | Définir le chemin où le rapport sera enregistré (TMP / RubyCritic par défaut) |
--coverage-path | Définir le chemin où Simplecov sera enregistré (./coverage par défaut) |
-f / --format | Signaler des odeurs dans le (s) format (s) donné (s) 1 |
--custom-format path:classname | Charge et instanciation Custom Formatter (s) 2 |
-s / --minimum-score | Définissez un score minimum (Float: Ex: 96.28), par défaut: 0 |
-m / --mode-ci | Utilisez le mode CI 3 |
-b / --branch | Définissez la branche pour comparer |
-t / --maximum-decrease | Seuil pour la différence de score entre deux branches 4 |
--deduplicate-symlinks | Les liens symboliques dédaigneux en fonction de leur cible finale |
--suppress-ratings | Supprimer les cotes des lettres |
--no-browser | N'ouvrez pas le rapport HTML avec le navigateur |
html (par défaut; s'ouvrira dans un navigateur)jsonconsolelint-b-b , par défaut: 0 Vous pouvez également utiliser un fichier de configuration. Créez simplement un .rubycritic.yml sur votre chemin racine de projet.
Voici un exemple:
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 utilise le mécanisme de chargement de configuration par défaut de Reek . Cela signifie que si vous disposez d'un fichier de configuration Reek existant, vous pouvez simplement mettre cela dans votre projet Root et RubyCritic respectera cette configuration.flay : nous utilisons la configuration par défaut de flay .flog : nous utilisons la configuration par défaut de flog avec quelques ajustements plus petits:all : Forces flog pour signaler les scores sur toutes les classes et méthodes. Sans cette option, flog ne donnera des résultats qu'à un certain seuil.continue : fait en sorte que flog n'aborte pas lorsqu'un fichier Ruby ne peut pas être analysé.methods : configure flog pour sauter du code en dehors des méthodes. Il empêche flog de signaler les "méthodes" private et protected . Il empêche également flog de signaler des méthodes de rails comme before_action et has_many .Si vous aimez la garde, vous aimerez peut-être la garde-RubyCritic. Il analyse automatiquement vos fichiers Ruby lorsqu'ils sont modifiés.
Pour une intégration continue, vous pouvez faire tourner Jenkins CI. Avec lui, vous pouvez facilement créer votre propre climat de code (pauvre-homme)!
Vous pouvez utiliser RubyCritic comme commande Rake dans sa forme la plus simple comme celle-ci:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newUne tâche de Rake plus sophistiquée qui utiliserait toutes les options de configuration disponibles pourrait ressembler à ceci:
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 essaiera d'ouvrir le rapport généré avec un navigateur par défaut. Si vous ne le souhaitez pas, vous pouvez empêcher ce comportement en définissant les options en conséquence:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endSi vous souhaitez créer plusieurs tâches de râteau (par exemple, pour la configuration locale et spécifique à CI), vous pouvez le faire! Si vous décidez de le faire, vous devez fournir une description plus claire pour chaque tâche:
# 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 Voir les formateurs
RubyCritic prend en charge les versions Ruby:
| Version Ruby | Dernière version RubyCritic |
|---|---|
| 2.4 | V4.7.0 |
| 2.5 | V4.7.0 |
| 2.6 | V4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | dernier |
| 3.1 | dernier |
| 3.2 | dernier |
| 3.3 | dernier |
RubyCritic n'a pas à rester un deuxième choix aux autres services d'analyse de la qualité du code. Ensemble, nous pouvons l'améliorer et continuer à s'appuyer sur les grands outils métriques de code disponibles dans l'écosystème Ruby.
On peut dire que le gemm Better_errors n'a été que populaire qu'après avoir reçu une demande de traction (assez géniale) qui a changé la conception de sa page.
De même, les demandes de traction qui améliorent l'apparence et la sensation du GEM, qui modifieront le calcul des notes ou qui résolvent les problèmes existants seront les bienvenus. Le simple fait de commenter un problème et de donner un aperçu de la façon dont quelque chose devrait fonctionner sera apprécié. Aucune contribution n'est trop petite.
Voir les lignes directrices de RubyCritic sur la façon de procéder.
L'auteur initial RubyCritics était Guilherme Simões.
L'équipe de base actuelle se compose de:

RubyCritic est maintenu et financé par Whitesmith. Tweetez vos questions ou suggestions à @whitesmithco.