1. そもそも RuboCop とは何か
RuboCop は Ruby / Rails 向けの 静的解析ツール 。
コードを「実行せずに」読み取り、ルール違反を検出する。
目的は次の3つに集約される。
- コード品質の担保
- 可読性・一貫性の維持
- チーム開発での摩擦低減
RuboCop は「動くかどうか」ではなく、
「どう書かれているか」 を問題にする。
2. RuboCop は何をチェックしているのか
RuboCop のチェック対象は大きく分けて3種類ある。
- Style(書き方・見た目)
- Layout(改行・インデント・空白)
- Lint(バグになりやすい構文)
「改行がない」で怒られるのは、
このうち Layout / Style Cop によるもの。
3. 「改行がない」は本当にエラーなのか?
結論から言うと、
Rubyとしては正しいが、チームルールとしてはNG
という状態。
つまり、
- Rubyインタプリタ → 問題なし
- RuboCop → 問題あり
- CI → RuboCopが失敗したので落ちる
という流れ。
4. 改行で怒られる代表例
よくあるのは以下。
- 最終行に改行がない
- メソッド定義が詰まっている
- ブロック開始・終了の位置が揃っていない
例:最終行改行なし
# ファイルの最後は改行で終わらなければならない
Layout/EndOfLine
5. なぜ改行までルール化するのか
RuboCopが改行を要求する理由は次の通り。
- diff が見やすくなる
- マージコンフリクトが減る
- レビュー時の認知負荷が下がる
- 機械的に揃えられる
人間の感覚に委ねると、
「人によって書き方が違う」問題が必ず起きる。
6. なぜ「最終行の改行」が重要なのか
これは UNIX 由来の仕様。
- テキストファイルは「行の集合」
- 行は「改行で終わる」ものとして扱われる
- 最後に改行がないと「壊れた行」扱い
Git や diff ツール、CI ツールとの相性問題を避けるため、
RuboCop はここを強制する。
7. 改行エラーの直し方(実務)
基本は以下のどれか。
- エディタで保存し直す
- 自動整形を使う
- RuboCop の auto-correct を使う
# 自動修正
rubocop -A
8. まとめ
- RuboCop は動作ではなく「書き方」を見る
- 改行ルールは人間のためではなく、機械とチームのため
- CI を落とすのは、レビューコスト削減のため
- RuboCop は思想ではなく設定ファイル
- ルールに納得できなければ、変更してよい
「しょうもないエラー」に見えるが、チーム開発においては重要。