guardを使ってrubocopも実行、コーディングチェックをこまめにチェック
コーディング規約のチェックとしてrubyではrubocopを使うと思います。
で、これをjenkinsなどのCIにかませてかませてチェックさせますが、gitにコミットする前に自分でチェックというのを自動化させたいと思いguardでテスト動かすので同じようにやってくれないかなと思っていました。
で、探すとやっぱりあるもので、guard-rubocopです。
使い方は簡単で、Gemfileにまず追加します。
group :development, :test do
gem 'rspec-rails', '3.0.0.beta1'
gem "rake_shared_context"
gem "factory_girl_rails"
gem "shoulda-matchers"
gem "database_rewinder"
gem "rubocop", require: false
gem "rubocop-checkstyle_formatter", require: false
gem "guard"
gem "guard-rspec", " ~> 0.4.2"
gem "guard-spring"
gem "guard-rubocop"
end
で次にbundle installを実行
bundle install --path vendor/bundle
続いて以下を実行してGuardfileにrubocopの設定をする。
guard init rubocop
するとGuardfileに
guard :rubocop do watch(%r{.+\.rb$}) watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) } end
が追加されています。
これで何かコードを編集すると、関連するテストが実行されてその後rubocopが実行されます。
12:29:07 - INFO - Inspecting Ruby code style: app/models/user.rb
Warning: unrecognized cop FavorSprintf found in /usr/local/project/koremita/.rubocop.yml
Inspecting 1 file
COffenses:
app/models/user.rb:38:38: C: Trailing whitespace detected.
validates :provider, presence: true
^
app/models/user.rb:39:34: C: Trailing whitespace detected.
validates :name, presence: true
^
app/models/user.rb:40:33: C: Trailing whitespace detected.
validates :uid, presence: true
^
便利だ。これで効率が上がりそうな気がする。