[英]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.