Ответ 1
Я бы порекомендовал обстреливать программу rubocop. Это самое простое решение. Просто добавьте это в свой Rakefile:
task test: :rubocop
task :rubocop do
sh 'rubocop'
end
rubocop - это проверка стиля кода для Ruby. Аналогичный инструмент для rubocop, Cane, может быть интегрирован с Rake. Я предпочитаю rubocop для Cane, так как rubocop делает проверки на основе Ruby Style Guide и кажется, что spot больше проблем. Чтобы автоматизировать процесс проверки стиля, я хотел бы интегрировать 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
Я бы порекомендовал обстреливать программу rubocop. Это самое простое решение. Просто добавьте это в свой Rakefile:
task test: :rubocop
task :rubocop do
sh 'rubocop'
end
Начиная с версии 0.10.0
rubocop содержит пользовательскую задачу rake, которую вы можете использовать. Просто поставьте следующее в Rakefile
require 'rubocop/rake_task'
RuboCop::RakeTask.new
Обязательно используйте верхний регистр "R" и "C", или вы получите NameError.
Я очень рекомендую,
require 'rubocop/rake_task'
RuboCop::RakeTask.new(:rubocop) do |t|
t.options = ['--display-cop-names']
end
Это использует рубокопные собственные рейк-задачи и позволяет вам передавать параметры, если хотите.
Вы, вероятно, найдете https://github.com/yujinakayama/guard-rubocop полезным, если используете Guard для своих тестов RSpec. Это позволяет Rubocop дать вам мгновенную обратную связь, как только вы сохраните файл вместе с результатами своих тестов.
Вы можете выложить оболочку через 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']