[英]Rails - Rake test and rubocop in one task
我正在嘗試設置我的 rails 項目,以便貢獻者所需的所有驗證都在一個命令中,目前我們一直在運行:
rake test
但是現在我們也想使用 rubocop 進行靜態分析:
rubocop -R -a
我希望它可以在一個簡單的 rake 任務中執行。 覆蓋'rake test'以運行rubocop然后是rails項目的標准rake測試內容會很好,因為這樣沒有人將不得不記住更改命令。 但如果我必須創建一個單獨的 rake 任務,那也可能沒問題。
我已經在底部看到了 rubocop rake 集成,但我不確定如何將它與“rake 測試”捆綁到一項任務中......有什么想法嗎?
我更喜歡將我的默認任務設置為運行 rubocop 然后是測試。 無論哪種方式,將這些任務分開而不是讓一個任務做兩件事是個好主意。
require 'rubocop/rake_task'
task :default => [:rubocop, :test]
desc 'Run tests'
task(:test) do
# run your specs here
end
desc 'Run rubocop'
task :rubocop do
RuboCop::RakeTask.new
end
你的任務:
> rake -T
rake rubocop # Run rubocop
rake test # Run tests
這是我最終得到的 .rake 文件。
desc 'Run tests and rubocop'
task :validate do
Rake::Task['rubocop'].invoke
Rake::Task['test'].invoke
end
task :rubocop do
require 'rubocop'
cli = Rubocop::CLI.new
cli.run(%w(--rails --auto-correct))
end
您可以輕松定義自己的 rake 任務,該任務首先調用 Rails 的test
rake 任務,然后是您提到的 rubocop 代碼片段。
例如,在一個 .rake 文件中,你可以有這樣的東西:
require 'rubocop/rake_task'
desc 'Run tests and rubocop'
task :my_test do
Rake::Task['test'].invoke
RuboCop::RakeTask.new
end
如果您覺得需要自定義對 Rubocop 的調用並且涉及更多代碼,您可以創建另一個自定義任務,比如 :rubocop,然后您也可以從 :my_test 調用它。
最后,創建您自己的 rake 任務並堅持使用rake test
的替代方法是修改您的 test_helper 以調用您在測試完成后需要調用的任何內容。
它似乎已經從:
Rubocop::RakeTask.new
到:
Rubo C op::RakeTask.new
看到嗎? 我知道如何使用 CamelCase!
我使用以下 .rake 文件同時運行測試和 rubocop 任務:
task default: %w[rubocop test]
RuboCop::RakeTask.new(:rubocop) do |task|
task.patterns = ['**/*.rb']
task.fail_on_error = false
task.options = ["--auto-correct-all"]
end
task :test do
ruby 'test/program_test.rb'
end
第一行允許通過調用rake
來運行這兩個任務。
命令行參數也可以添加到options
數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.