Just do IT

思うは招く

Rubocopで指摘されたエラーを解決

自分が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

参照