rubocopとの戦いっ!
2021年2月19日
戦いというか、警告にしたがって修正をしていきます。(随時追記予定)
Layout/TrailingWhitespace
これ割とそのままですが、行の一番最後にスペースが入ってるので消したら通ります。
Layout/ExtraSpacing
こっちは間にスペースが入ってるからですね。
validates :user, length: { maximum: 32 }
を
validates :user, length: { maximum: 32 }
に修正
Layout/SpaceAroundOperators
演算子の前後にスペースがたくさん入ってた
if 1 > a
を
if 1 > a
に修正
Layout/SpaceBeforeComma
カンマの前のスペースが余計です
hoge = { foo: 'f' , bar: 'b' }
を
hoge = { foo: 'f', bar: 'b' }
Layout/EmptyLinesAroundClassBody
classのend前の改行が余計です
class Hoge def foo p 'bar' end end
を
class Hoge def foo p 'bar' end end
Layout/EmptyLinesAroundBlockBody
blockのendの前の開業が余計です
class Hoge def foo p 'hoge' end end
を
class Hoge def foo p 'hoge' end end
Layout/EmptyLineAfterGuardClause
途中でリターンした行の下に改行が必要
def hoge return if foo.blank? 'hoge' end
を
def hoge return if foo.blank? 'hoge' end
Layout/LeadingCommentSpace
コメントの#の直後にスペースを追加します
#hoge
を
# hoge
Layout/MultilineMethodCallIndentation
メソッドチェーンを複数行で書いた時のインデント
aaaa.bbbb .cccc
を
aaaa.bbbb .cccc
に変更
Layout/LineLength
1行が長すぎる
Layout/MultilineOperationIndentation
複数行で演算子を使ったコードのインデント
hoge = hoge + foo
を
hoge = hoge + foo
Style/SymbolArray
これも割とそのままですかね
hoge = [:foo, :bar, :baz]
上記を
hoge = %i[foo bar baz]
に書き換え
Style/IfUnlessModifier
後ろに書いたif/unlessが長いようです
return true if aaaaa == bbbbb || ccccc != ddddd
を
return true if aaaaa == bbbbb return true if ccccc != ddddd
Style/StringLiterals
ただのテキストをダブルクオートで囲っている
hoge = "foo"
を
hoge = 'foo'
Style/MultilineTernaryOperator
三項演算子が複数行になっている
hoge != foo ? 'a' : 'b'
とりあえずifで書き換え
if hoge != foo 'a' else 'b' end
Metrics/AbcSize
メソッド内のコードが複雑なようです。分岐を減らします
いい感じのサンプルが思いつきませんが、分岐は別のメソッドでやるとか?
def checker(a = nil, b = nil) if a.present? return 'a' if a == 'a' else return 'b' if b == 'b' end end
を
def checker(a = nil, b = nil) return a.present? ? word_checker(a, 'a') : word_checker(b, 'b') end private def word_checker(data, word) return word if data == word end
Metrics/CyclomaticComplexity
複雑すぎるってやつですね
Lint/UnusedMethodArgument
未使用の引数
def hoge(a, b) return 'a' if a.blank? end
を
def hoge(a) return 'a' if a.blank? end
Lint/UselessMethodDefinition
そのメソッドは本当に必要なんですか?って感じですね
def hoge super end
不要であれば消すんですが、これ必要だったのでdisableにします。
(戦いに負けた感)
def hoge # rubocop:disable Lint/UselessMethodDefinition super end
Performance/Count
selectとcountを一緒に使うのがダメっぽい?
hoge.select {|h| h == 1 }.count
を
foo = hoge.select {|h| h == 1 } foo.count
Rails/FindEach
eachではなくfind_eachにします
hoge.each do |h| puts h end
を
hoge.find_each do |h| puts h end
Rails/TimeZone
timezoneなしがダメっぽい
Time.now
を
Time.zone.now
に変更