MENU
カテゴリー

RuboCopでこんなエラーが出た。Assignment Branch Condition size for search is too high.

  • URLをコピーしました!
目次

なんだこのエラーは

https://github.com/rubocop-hq/rubocop/tree/v0.28.0Assignment Branch Condition size for search is too high. [<10, 21, 5> 23.79/20] Assignment Branch Condition size for search is too high. [<10, 21, 5> 23.79/20] 

作業をしていたらこんなエラーが出た。調べてみると、ながいです、幅を取りすぎです、というようなエラーらしい。

RuboCopとは?簡単に

GitHub
GitHub - rubocop/rubocop at v0.28.0 A Ruby static code analyzer and formatter, based on the community Ruby style guide. - GitHub - rubocop/rubocop at v0.28.0

このRubCopはコードを検査してくれるものらしくて、コードが長いとか、インデントが変だとかいろんなことを教えてくれる。勝手に直してくれる(不自然なインデントを修正)ときもあれば、警告文だけだして、自分でどうにかしてくれみたいな時もある。ただ、このRuboCopからの指摘も全てが正しい訳ではないっぽい。

僕がぶつかったエラーに関して

Assignment Branch Condition size for search is too high. [<10, 21, 5> 23.79/20]

指摘を受けたソースコードは↓

  def search
   if params[:city_id]
     pagy, offices = pagy Office.where(city_id: params[:city_id])
     pagy_headers_merge(pagy)
   elsif params[:keyword]
     keywords = params[:keyword].split(/[[:blank:]]+/).select(&:present?)
     pagy, offices = pagy_array([])
     pagy_headers_merge(pagy)
     keywords.each do |keyword|
       offices += Office.where('name LIKE (?) OR
                                address LIKE (?) OR
                                near_station LIKE (?) OR
                                introduction LIKE (?) OR
                                company LIKE (?)',
                               "%#{keyword}%",
                               "%#{keyword}%",
                               "%#{keyword}%",
                               "%#{keyword}%",
                               "%#{keyword}%")
     end
   else
     pagy, offices = pagy(Office.all)
     pagy_headers_merge(pagy)
   end
   render json: offices, each_serializer: OfficeIndexSerializer, include: '**'
 end

自分でも書いていて長いなとおもった。縦に長い。ただ、そのときの知識ではどうやったコードを簡潔なものにするのか思いつかなかった。誰か教えてください。笑

それで結局どうしたか

.rubocop.ymlでRuboCopの設定を変更した。エラー文を見てみると、、、、

Assignment Branch Condition size for search is too high. [<10, 21, 5> 23.79/20]

[<10, 21, 5> 23.79/20]この部分が、点数を表しているっぽい。これでみると、「MAXスコアが20なのにお前の書いたコードは23.79だよ」っていうことらしく、これをどうにか解消するしかないと考えた。

それで、rubocop.ymlファイルの中のある設定を変更した。

Metrics/AbcSize:
 # The ABC size is a calculated magnitude, so this number can be a Fixnum or
 # a Float.
 Max: 15 

このMaxの部分を 25に設定を変更した。そしてコミットすると、RubCopからの指摘を受けずにすんだ。設定変えられるのかー程度に、この記事では感じていただければ、幸いです。

Qiita

Qiita
@m6mmsfのマイページ - Qiita 記事投稿数: 129 Contribution: 375 フォロワー数: 22

まだまだゴミレベルですがQiitaも書いています。

みなさんがんばりましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次