自分がRubocop警察に指摘されたエラーの解決策をまとめた。
Rubocopで指摘されたエラーたち
Add an empty line after magic comments
「マジックコメントのあとは一行空白にしろや」
こんなコードを書いたときに指摘された。
# frozen_string_literal: true ← マジックコメント require 'sinatra' require 'sinatra/reloader'
これを、こうすればいい。
# frozen_string_literal: true require 'sinatra' require 'sinatra/reloader'
空の一行を入れた。
Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping
「シングルクォーテーションじゃなくてダブルクオーテーション使えや」
元のコード。
require 'sinatra'
指摘メッセージ。
app.rb:3:9: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping. require 'sinatra' ^^^^^^^^^
つまり、こうしろと。
require "sinatra"
Sinatraでルーティングを次のように書いたときも同様の指摘を受けた。
get '/memos' do ^^^^^^^^
Final newline missing
「コードの最後は改行入れろや」
元コード。
delete "/memos/:id" do Memo.new.destroy(id: params[:id]) redirect("/memos") end ←改行してない
endの後に改行を入れる。
delete "/memos/:id" do Memo.new.destroy(id: params[:id]) redirect("/memos") end # ここに改行を入れた
解決した。
Space between { and | missing
「スペースいれろや」
怒られたファイル: Gemfile
Gemfile:5:21: C: Layout/SpaceInsideBlockBraces: Space between { and | missing. git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } ^^
{|repo_name|
の{
の右にスペースを入れる。
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
解決。 いや、でもbundlerが勝手に作ったGemfileにケチつけられても・・・。まぁそもそもGemfileをRubocopにかける意味がないか。
1 trailing blank lines detected
「余計な空行あるやんけ。消せや」
怒られたファイル: Gemfile
gem "pg" # ここに余計な空行がある
空行を消して解決。
基本的な修正は自動でやってもらおう
rubocop --auto-correct
このコマンドで、上記で出てきた
Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
や
Style/FrozenStringLiteralComment: Missing magic comment
や
Layout/EmptyLineAfterMagicComment: Add an empty line after magic comments.
といった基本的な修正は自動でやってくれる。
ときにはrubocop --auto-correct
だけで修正がゼロになってしまうこともある。
55 files inspected, 200 offenses detected, 200 offenses corrected