Ruby 如何将rubocop与Rake集成?
是Ruby的代码样式检查器。可以使用与rubocop类似的工具Cane。我更喜欢rubocop而不是Cane,因为rubocop是根据。为了自动化样式检查过程,我想将rubocop与Rake集成,以便在缺乏代码质量时构建失败 Gem已经支持通过Rake访问包。我希望对样式检查也这样做,以便样式检查与测试一起运行。我该怎么做 如果从耙铲开始有帮助,这里有一个:Ruby 如何将rubocop与Rake集成?,ruby,coding-style,rake,Ruby,Coding Style,Rake,是Ruby的代码样式检查器。可以使用与rubocop类似的工具Cane。我更喜欢rubocop而不是Cane,因为rubocop是根据。为了自动化样式检查过程,我想将rubocop与Rake集成,以便在缺乏代码质量时构建失败 Gem已经支持通过Rake访问包。我希望对样式检查也这样做,以便样式检查与测试一起运行。我该怎么做 如果从耙铲开始有帮助,这里有一个: # -*- coding: utf-8; mode: ruby -*- require 'bundler/gem_tasks' requ
# -*- 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
#-*-编码:utf-8;模式:ruby-*-
需要“bundler/gem_任务”
需要“rake/testtask”
Rake::TestTask.new do|t|
t、 libs我建议向rubocop项目投资。这是最简单的解决办法。只需将此添加到您的Rakefile:
task test: :rubocop
task :rubocop do
sh 'rubocop'
end
如果在RSpec测试中使用Guard,您可能会发现它很有用。它使Rubocop能够在您保存文件以及测试结果时立即向您提供反馈。自版本0.10.0
Rubocop包含您可以使用的自定义rake任务。只需将以下内容放入您的Rakefile
require 'rubocop/rake_task'
RuboCop::RakeTask.new
确保使用大写字母“R”和“C”,否则会出现名称错误。您可以通过Rake使用您喜欢的选项:
desc 'Run Rubocop with options'
task rubocop: :environment do
sh 'bundle exec rubocop -D --format offenses --format progress || true'
end
然后,我建议修改默认任务以包含输出。诀窍是清除任务,然后重新添加所需内容。请注意,需要以| | true
结束,这样Rubocop的错误不会阻止下一个任务的运行。下面是我所做的,它也使用并行测试:
task(:default).clear.enhance ['parallel:parallel_prepare', 'parallel:spec',
'parallel:features', 'lint:rubocop',
'lint:rails_best_practices']
我极力推荐,
require 'rubocop/rake_task'
RuboCop::RakeTask.new(:rubocop) do |t|
t.options = ['--display-cop-names']
end
这使用rubocp自己的rake任务,并允许您根据需要传递选项。我自己也需要做一些类似的事情,最后在这里查看了rubocp::RakeTask的内部源代码:
要求“rubocop”
cli=cli.new
如果冗长,则放入“Running RuboCop…”
结果=cli.run(选项)
如果result.non为零,则中止('RuboCop failed!')&&错误时失败
实际上,您可以在自己的代码库/rake任务中直接调用类似的代码
最后,我编写了一个可以调用的小包装器模块,带有一些我一直希望应用的默认标志:
模块RubocopCli
def self.run!(*args)
需要“rubocop”
cli=RuboCop::cli.new
结果=cli.run([“--显示cop名称”、“--强制排除”、“--失败级别”、“自动更正”、*参数])
如果result.non为零,则引发“rubocopli.run!Linting失败”?
结束
结束
然后,您可以使用任何任务或应用程序代码中的其他参数调用它,如:
文件到文件lint=%w[lib/whatever.rb spec/lib/whatever\u spec.rb]
鲁博科普克利,快跑!(“--自动更正”、*文件到文件)
下面的解决方案可能更好-使用RuboCop::RakeTask
可以在