

Rubycritic ist ein Juwel, das sich um statische Analyse -Juwelen wie Reek, Flay und Flog wickelt, um einen Qualitätsbericht über Ihren Ruby -Code bereitzustellen.
Dieses Juwel bietet Funktionen wie:
Ein Überblick über Ihr Projekt: 
Ein Index der Projektdateien mit ihrer jeweiligen Anzahl von Gerüchen: 
Ein Index der erkannten Gerüche: 
Bei der Analyse von Code wie folgt:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endEs macht im Grunde so etwas:

In so etwas:

Es verwendet Ihr Quell -Steuerungssystem (nur Git, Mercurial und Perforce werden derzeit unterstützt), um Ihre derzeit nicht verbindlichen Änderungen mit Ihrem letzten Commit zu vergleichen.
Warnung : Wenn Ihr Code nicht so ist, wie Sie es erwarten, nach dem Ausführen von Rubycritic zu sein, überprüfen Sie bitte Ihren Quell -Steuerungssystem.
Schauen Sie sich die /docs an, wenn Sie mehr über unsere Kernmetriken erfahren möchten.
Rubycritic kann mit dem folgenden Befehl installiert werden:
$ gem install rubycriticWenn Sie Rubycritic lieber mit Bundler installieren möchten, fügen Sie diese Zeile der GemFile Ihrer Anwendung hinzu:
gem "rubycritic" , require : falseUnd dann ausführen:
$ bundle Ausführen rubycritic ohne Argumente wird alle Ruby -Dateien im aktuellen Verzeichnis analysieren:
$ rubycritic Alternativ können Sie rubycritic eine Liste von Dateien und Verzeichnissen übergeben. Die Analyse wird in die bereitgestellten Dateien und Verzeichnisse gescopt:
$ rubycritic app lib/foo.rbFür eine vollständige Liste der Befehlszeilenoptionen wird ausgeführt:
$ rubycritic --help| Befehlsflagge | Beschreibung |
|---|---|
-v / --version | Zeigt die aktuelle Version an und beendet sich |
-p / --path | Setzen Sie den Pfad, wo der Bericht gespeichert wird (TMP/Rubycritic standardmäßig) |
--coverage-path | Setzen Sie den Pfad, wo Simplycov gespeichert wird (./Coverage standardmäßig) |
-f / --format | Bericht riecht in den angegebenen Formaten 1 |
--custom-format path:classname | Laden und instanziieren Sie benutzerdefinierte Formatter (en) 2 |
-s / --minimum-score | Setzen Sie eine Mindestpunktzahl (Float: Ex: 96.28), Standard: 0 |
-m / --mode-ci | Verwenden Sie den CI -Modus 3 |
-b / --branch | Stellen Sie die Zweigstelle ein, um zu vergleichen |
-t / --maximum-decrease | Schwellenwert für den Bewertungsunterschied zwischen zwei Zweigen 4 |
--deduplicate-symlinks | Ent-DUPLICE SYMLINKS Basierend auf ihrem endgültigen Ziel |
--suppress-ratings | Schreibenbewertungen unterdrücken |
--no-browser | Eröffnen Sie keinen HTML -Bericht mit Browser |
html (Standard; wird in einem Browser geöffnet)jsonconsolelint-b-b , Standard: 0 Sie können auch eine Konfigurationsdatei verwenden. Erstellen Sie einfach einen .rubycritic.yml auf Ihrem Projektwurzelweg.
Hier sind ein Beispiel:
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 verwendet Reek Standardkonfigurationslastmechanismus. Dies bedeutet, dass Sie diese Konfiguration respektieren können, wenn Sie über eine vorhandene Reek -Konfigurationsdatei verfügen, diese in Ihr RubyCritic einfügen.flay : Wir verwenden die Standardkonfiguration von flay .flog : Wir verwenden die Standardkonfiguration von flog mit ein paar kleineren Verbesserungen:all : Kräfte, flog zu allen Klassen und Methoden ausfassen, um Bewertungen zu melden. Ohne diese Option gibt flog nur einen bestimmten Schwellenwert.continue : macht es so, dass flog nicht abbricht, wenn eine Ruby -Datei nicht analysiert werden kann.methods : Konfigurieren Sie flog , um Code außerhalb von Methoden zu überspringen. Es verhindert, dass flog über die "Methoden" private und protected . Es verhindert auch, dass flog über Rails -Methoden wie before_action und has_many berichtet.Wenn Sie Wachmann mögen, mögen Sie vielleicht Wachrubycritic. Es analysiert automatisch Ihre Ruby -Dateien, sobald sie geändert werden.
Für die kontinuierliche Integration können Sie Jenkins CI einen Spin geben. Damit können Sie leicht Ihr eigenes Code-Klima (arm-Mann) erstellen!
Sie können Rubycritic als Rake -Befehl in seiner einfachsten Form wie folgt verwenden:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newEine ausgefeiltere Rake -Aufgabe, die alle verfügbaren Konfigurationsoptionen nutzen würde, könnte wie folgt aussehen:
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 wird versuchen, den generierten Bericht standardmäßig mit einem Browser zu öffnen. Wenn Sie dies nicht möchten, können Sie dieses Verhalten verhindern, indem Sie die Optionen entsprechend festlegen:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endWenn Sie mehrere Rake-Aufgaben erstellen möchten (z. B. für die lokale und für CI-spezifische Konfiguration), können Sie dies tun! Wenn Sie sich dafür entscheiden, sollten Sie für jede Aufgabe eine klarere Beschreibung angeben:
# 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 Siehe Formatter
Rubycritic unterstützt Ruby -Versionen:
| Ruby -Version | Neueste Rubycritic -Version |
|---|---|
| 2.4 | v4.7.0 |
| 2.5 | v4.7.0 |
| 2.6 | v4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | letzte |
| 3.1 | letzte |
| 3.2 | letzte |
| 3.3 | letzte |
Rubycritic muss keine zweite Wahl für andere Dienste für Codequalitätsanalysen bleiben. Gemeinsam können wir es verbessern und weiter auf den großartigen Code -metrischen Tools aufbauen, die im Ruby -Ökosystem verfügbar sind.
Das Problem von Better_errors wurde wohl erst nach Erhalten einer (ziemlich fantastischen) Pull -Anfrage, die das Seitendesign änderte.
In ähnlicher Weise werden Anfragen, die das Erscheinungsbild des Edelsteins verbessern, die Berechnung von Bewertungen oder die Behebung bestehender Probleme verbessern, am meisten willkommen sein. Nur ein Thema zu kommentieren und einen Einblick in die Funktionsweise von etwas zu geben, wird geschätzt. Kein Beitrag ist zu klein.
Siehe Rubycritics beitragende Richtlinien zur Vorgehensweise.
Der erste Autor RubyCritics war Guilherme Simões.
Das aktuelle Kernteam besteht aus:

Rubycritic wird von Whitesmith gepflegt und finanziert. Twittern Sie Ihre Fragen oder Vorschläge an @WhiteSmithco.