34

rubocopは、Ruby のコード スタイル チェッカーです。rubocop に似たツールである Cane は、Rake と統合できます。rubocop はRuby Style Guideに基づいてチェックを行い、より多くの問題を発見するように見えるので、私は Cane よりも rubocop を好みます。スタイル チェックのプロセスを自動化するために、rubocop を Rake と統合して、コードの品質が不足している場合にビルドが失敗するようにしたいと考えています。

Gem は、Rake を介したパッケージへのテストの追加を既にサポートしています。スタイル チェックがテストと一緒に実行されるように、スタイル チェックでも同じことをしたいと思います。これどうやってするの?

Rakefile から始めるのに役立つ場合は、次のとおりです。

# -*- 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
4

6 に答える 6

77

現在のバージョンの0.10.0rubocop には、使用できるカスタム rake タスクが含まれています。以下をあなたのRakefile

require 'rubocop/rake_task'

RuboCop::RakeTask.new

必ず大文字の 'R' と 'C' を使用してください。そうしないと、NameError が発生します。

于 2013-11-25T20:53:48.813 に答える
33

強くお勧めします、

require 'rubocop/rake_task'

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

これは rubocop 独自の rake タスクを使用し、必要に応じてオプションを渡すことができます。

于 2016-11-11T17:17:49.283 に答える
3

RSpec テストに Guard を使用している場合、https://github.com/yujinakayama/guard-rubocopが役立つことがわかるでしょう。これにより、ファイルを保存するとすぐに、Ruboco がテスト結果とともに即座にフィードバックを返すことができます。

于 2013-05-04T21:42:14.210 に答える
-3

好みのオプションを使用して、Rake 経由でシェルアウトできます。

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

次に、出力を含めるようにデフォルト タスクを変更することをお勧めします。秘訣は、タスクをクリアしてから、必要なものを元に戻すことです。|| trueRubocop からのエラーによって次のタスクの実行が妨げられないように、終了する必要があることに注意してください。並列テストも使用する、私がしていることは次のとおりです。

task(:default).clear.enhance ['parallel:parallel_prepare', 'parallel:spec',
                              'parallel:features', 'lint:rubocop',
                              'lint:rails_best_practices']
于 2014-09-09T04:48:56.317 に答える
-13

rubocop プログラムにシェルアウトすることをお勧めします。それは最も簡単な解決策です。これをRakefileに追加するだけです:

task test: :rubocop

task :rubocop do
  sh 'rubocop'
end
于 2013-02-24T21:52:37.840 に答える