2013-02-21 33 views
19

rubocop là trình kiểm tra kiểu mã cho Ruby. Một công cụ tương tự như rubocop, Cane, có thể là integrated with Rake. Tôi thích rubocop to Cane vì rubocop kiểm tra dựa trên số Ruby Style Guide và có vẻ như spot more problems. Để tự động hoá quy trình kiểm tra kiểu dáng, tôi muốn tích hợp rubocop với Rake để việc xây dựng thất bại nếu chất lượng mã bị thiếu.Làm thế nào để tích hợp rubocop với Rake?

Đá quý đã hỗ trợ adding tests cho các gói qua Rake. Tôi muốn làm tương tự với kiểm tra kiểu để kiểm tra kiểu được chạy cùng với các kiểm tra. Tôi có thể làm cái này như thế nào?

Nếu nó giúp để bắt đầu với một Rakefile đây là một:

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

Trả lời

0

Tôi muốn giới thiệu bắn phá ra cho chương trình rubocop. Đó là giải pháp đơn giản nhất. Chỉ cần thêm số này vào Rakefile của bạn:

task test: :rubocop 

task :rubocop do 
    sh 'rubocop' 
end 
+3

Giải pháp dưới đây có lẽ tốt hơn - sử dụng 'RuboCop :: RakeTask' –

2

Có thể bạn sẽ tìm thấy https://github.com/yujinakayama/guard-rubocop hữu ích nếu bạn sử dụng Bảo vệ cho các kiểm tra RSpec của mình. Nó cho phép Rubocop cung cấp cho bạn phản hồi ngay lập tức ngay khi bạn lưu tệp, cùng với kết quả kiểm tra của bạn.

54

Kể từ phiên bản 0.10.0 rubocop chứa tác vụ cào tùy chỉnh mà bạn có thể sử dụng. Chỉ cần đặt sau trong bạn Rakefile

require 'rubocop/rake_task' 

RuboCop::RakeTask.new 

Hãy chắc chắn để sử dụng trên trường 'R' và 'C' hoặc bạn sẽ nhận được một NameError.

-2

Bạn có thể bao ra qua Rake với các tùy chọn mà bạn thích:

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

sau đó tôi khuyên bạn nên thay đổi nhiệm vụ mặc định để bao gồm các đầu ra. Bí quyết là để xóa nhiệm vụ và sau đó thêm lại những gì bạn muốn. Lưu ý rằng cần phải kết thúc bằng || true để một lỗi từ Rubocop sẽ không ngăn tác vụ tiếp theo chạy. Dưới đây là những gì tôi làm, mà còn sử dụng các bài kiểm tra song song:

task(:default).clear.enhance ['parallel:parallel_prepare', 'parallel:spec', 
           'parallel:features', 'lint:rubocop', 
           'lint:rails_best_practices'] 
16

tôi khuyên bạn nên,

require 'rubocop/rake_task' 

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

này sử dụng nhiệm vụ cào riêng của rubocop và cho phép bạn để vượt qua tùy chọn nếu bạn muốn.

Các vấn đề liên quan