notebook

都内でWEB系エンジニアやってます。

rubocopのABCについて

仕事でrubocopを入れている

サクサク描いてるとABCに引っかかることが多い(現状の閾値はデフォルトの15)

さっと調べてみたところそれぞれ

  • a(assignment): 代入の回数
  • b(blanch): メソッド呼び出しの回数
  • c(condition): 分岐の回数

で下記の計算で算出しているらしい(versionは現時点で0.54)

Math.sqrt(a**2 + b**2 + c**2).round(2)

rubocop/abc_size.rb at master · bbatsov/rubocop

github.com

で警告が出れば消したくなるのが人間ってものなので頑張って警告が出ないようにしようとするわけですね

ただ今のrubocopの出力だとそれっぽいなと思うところを削ってもう一度確認してみたいな結構面倒なことをするしかなかった

ストレスが溜まってきたのでgemをのぞいたら割と簡単にそれぞれ何回マッチしてるかの数値を出すことができました

f:id:swfz:20180328021420p:plain

これでどこ削るのが一番削れるか、コード中のどの記述がどのくらい寄与しているのかっていうのがわかりやすくなったはず

まぁあんまり良さそうな修正じゃない気がするのでとりあえずforkしてブランチ切って上げるところまでして自分用に使ってみてます

そもそもあんまりABCを意識しすぎて可読性を下げるのも本末転倒なのでバランスみて閾値上げるとかチームで話し合いが必要ですね

swfz/rubocop at feature/abc-detail

github.com