2013-02-21 8 views
19

rubocop ist ein Code-Style-Checker für Ruby. Ein ähnliches Werkzeug wie Rucocop, Cane, kann integrated with Rake sein. Ich bevorzuge Rubocop zu Cane, da rubocop Kontrollen auf der Grundlage der Ruby Style Guide macht und es scheint spot more problems. Um den Prozess der Stilprüfung zu automatisieren, möchte ich rubocop mit Rake integrieren, so dass der Build fehlschlägt, wenn die Codequalität fehlt.Wie integriere ich rubocop mit Rake?

Gem unterstützt bereits adding tests Pakete über Rake. Ich möchte das Gleiche mit Style-Checks machen, so dass Style-Checks zusammen mit den Tests ausgeführt werden. Wie kann ich das machen?

Wenn es hilft mit einem Rakefile hier zu starten ist ein:

# -*- coding: utf-8; mode: ruby -*- 

require 'bundler/gem_tasks' 
require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.libs << 'test' 
    t.test_files = FileList['test/unit/test*.rb'] 
end 

desc 'Run tests' 
task default: :test 

Antwort

0

ich zum rubocop Programm Beschuss aus empfehlen würde. Es ist die einfachste Lösung. Fügen Sie einfach diese zu Ihrem Rakefile:

task test: :rubocop 

task :rubocop do 
    sh 'rubocop' 
end 
+3

Die folgende Lösung ist wahrscheinlich besser - mit 'RuboCop :: RakeTask' –

2

Sie wahrscheinlich https://github.com/yujinakayama/guard-rubocop nützlich finden werden, wenn Sie Schutz verwenden für Ihre RSpec Tests. Es ermöglicht Rubocop, Ihnen sofort Feedback zu geben, sobald Sie die Datei zusammen mit Ihren Testergebnissen speichern.

54

Ab Version 0.10.0 enthält rubocop eine benutzerdefinierte Rake-Aufgabe, die Sie verwenden können. Legen Sie einfach die folgenden in Ihrem Rakefile

require 'rubocop/rake_task' 

RuboCop::RakeTask.new 

Stellen Sie sicher, Groß- ‚R‘ verwenden und ‚C‘ oder Sie werden einen Nameerror erhalten.

-2

Sie können Sie mit den Optionen über Rake berappen bevorzugen:

desc 'Run Rubocop with options' 
    task rubocop: :environment do 
    sh 'bundle exec rubocop -D --format offenses --format progress || true' 
    end 

ich dann empfehlen die Standardaufgabe Modifizieren der Ausgabe enthalten. Der Trick besteht darin, die Aufgabe zu löschen und dann wieder hinzuzufügen, was Sie wollen. Beachten Sie, dass Sie mit || true enden müssen, damit ein Fehler von Rubocop die Ausführung der nächsten Aufgabe nicht verhindert. Hier ist, was ich tue, was auch parallel Tests verwendet:

task(:default).clear.enhance ['parallel:parallel_prepare', 'parallel:spec', 
           'parallel:features', 'lint:rubocop', 
           'lint:rails_best_practices'] 
16

ich sehr empfehlen,

require 'rubocop/rake_task' 

RuboCop::RakeTask.new(:rubocop) do |t| 
    t.options = ['--display-cop-names'] 
end 

Dies nutzt den eigenen Rake Aufgaben des rubocop und ermöglicht es Ihnen, Optionen zu übergeben, wenn Sie möchten.

Verwandte Themen