最近Rubocopを使いはじめたので、使い方とか警告の意味とかをメモφ(..)
Rubocopとは
RubocopはOSSで開発されているソースコードの静的解析を行うgemです。
RubyStyleGuidにソースコードが準拠しているかチェックすることが出来ます。
Githubリポジトリ:https://github.com/bbatsov/rubocop
実際の開発現場でも使われているので、普段の勉強から使っていき綺麗なコードを書く習慣を身に着けたい…!
Rubocopの使い方
インストール
$ gem install rubocop
使い方
ファイルの検証
$ rubocop hoge.rb
rubocopの警告のON / OFFを独自に設定する
rubocopの警告を独自にON / OFFを設定するためには、.rubocop.yml
をプロジェクトのroot
ディレクトリに配置します。
下記のような形で、.rubocop.yml
に記載することで独自にON / OFFを切り替えることが出来ます。
# クラスにコメントを残さない Documentation: Enabled: false # falseにすることでcheckを無効化
警告欄
文字 | 意味 |
---|---|
. | Clean(問題なし) |
C | Convention(慣習違反) |
W | Warning |
E | Error |
F | Fatal |
Inspecting 1 file C Offenses: hoge.rb:28:1: C: Missing top-level class documentation comment. class Hoge ^^^^^ 1 file inspected, 1 offenses detected
警告メッセージMemo
Extra empty line detected at class body end.
クラス本体の最後で余分な空行が検出されました。
class Hoge def fuga return piyo end # 不正な改行 end
Final newline missing.
最終改行がありません。
class Hoge def fuga return piyo end end # ファイルの末尾に改行なし
1 trailing blank lines detected.
1つの末尾空白行が検出されました。
class Hoge def fuga return piyo end end # 空白行 # 空白行 : NG
Space missing after comma.
コンマの後にスペースがありません。
# カンマのあとにスペースが入っていない Hoge.new(a,b,c) # NG Hoge.new(a, b, c) # OK
Trailing whitespace detected.
末尾の空白が検出されました。
class hoge def fuga puts piyo end # 行の末尾に空白文字 end
Missing top-level class documentation comment.
トップレベルのクラスのドキュメントコメントがありません。
# クラスの1行上にコメントを書く class hoge def fuga puts piyo end end
Use only ascii symbols in comments.
コメントにはASCII記号のみを使用してください。
# piyoを出力 : NG # output piyo : OK puts piyo
Space inside { missing. / Space inside } missing.
内側にスペースがありません。
# {}の内側には半角スペースを入れる。 { hoge: "hoge", fuga: "fuga" }
Line is too long. [84/80]
ラインが長すぎます。 [84/80]
# 1行の文字数は80文字まで # NG puts HogeHoge.new(hogehoge: 52, fugafuga: 11, piyopiyo: piyo.new("hiyoco", "niwatori")).hogefugapiyo_method # OK hoge = HogeHoge.new( hogehoge: 52, fugafuga: 11, piyopiyo: piyo.new("hiyoco", "niwatori") ) puts hoge.hogefugapiyo_method
Closing method call brace must be on the line after the last argument when opening brace is on a separate line from the first argument.
中括弧を最初の引数とは別の行に置いているときに、最後の引数の後の行には、メソッド呼び出し中括弧を閉じる必要があります。
# 1行の文字数は80文字まで # NG Hoge.new( hoge: "hoge", fuga: "fuga") # OK:閉じ括弧の位置は開始の位置と合わせる。 Hoge.new( hoge: "hoge", fuga: "fuga" )
Inconsistent indentation detected.
矛盾したインデントが検出されました。
# 適切にインデントを入れる # NG private def hoge end # OK:private配下はインデントは不要 private def hoge end
Use %i
or %I
for an array of symbols.
シンボルの配列には
%i
または%I
を使います。
# シンボルの配列には%記法を使う # NG before_action :set_page, only: [:show, :edit, :update, :destroy] # OK before_action :set_page, only: %i[show edit update destroy]
おわりに
また新しいメモや警告があれば追記していきます!φ(..)