【codeclimate】デフォルトの設定。codeclimate入れたら注意されまくったよ

【codeclimate】デフォルトの設定。codeclimate入れたら注意されまくったよ

最近常駐先でコードのリファクタリングの風が吹いていて、テスト書こう、切り出そう、コードカバレッジをあげようの機運があります
それだけじゃ行動が起きないので、codeclimateが導入されました。
PRを送ると自分がどのくらい複雑なコードを書いているか、テストが網羅されているかが測られて嫌でも「あー。。。」ていう気になります。

プロジェクトによりますが、やはり太くなるファイルはあるので、
codeclimateのデフォルト値をいじることになるのですが、、、

注意されているところを直すための記事

codeclimate defaultのsettingはどんな感じでしょうか

https://docs.codeclimate.com/docs/default-analysis-configuration#section-maintainability-checks

Argument count

  • Threshold: 4 引数は4つまで

Complex logic 理解しにくいbooleanのロジック

  • Threshold: 4

File lines 1ファイルあたりの行数

  • Threshold: 250

Method complexity 理解しにくい関数またはメソッド(認知の複雑さ)

  • Threshold: 5

こういうのは理解しやすいがテストが大変になりやすく複雑とみなされる

switch ($meal) {
    case "breakfast":
        echo "Most important meal of the day! Enjoy.";
        break;
    case "lunch":
        echo "A reasonably important meal of the day.";
        break;
    case "dinner":
        echo "Alright, rounding out your day, very nice.";
        break;
    default:
       echo "Snacking is important!";

https://docs.codeclimate.com/docs/cognitive-complexity

Method count 関数の数

  • Threshold: 20

Method length 1つの関数またはメソッド内の過剰なコード行

  • Threshold: 25

Nested control flow -ifやcaseのような深くネストされた制御構造

  • Threshold: 4

Return statements 戻りステートメントの数が多い関数またはメソッド。returnは4つまで

  • Threshold: 4

*Similar blocks of code 同一ではないが同じ構造を共有する重複コード **

  • Threshold: language-specific defaults

Identical blocks of code

これらのファイルはcodeclimateではdefaultで無視する

defaultではymlファイルはこうなっているので
プロジェクトにあったsettingをしていく

.codeclimate.yml

version: "2"         # required to adjust maintainability checks
checks:
  argument-count:
    config:
      threshold: 4
  complex-logic:
    config:
      threshold: 4
  file-lines:
    config:
      threshold: 250
  method-complexity:
    config:
      threshold: 5
  method-count:
    config:
      threshold: 20
  method-lines:
    config:
      threshold: 25
  nested-control-flow:
    config:
      threshold: 4
  return-statements:
    config:
      threshold: 4
  similar-code:
    config:
      threshold: # language-specific defaults. an override will affect all languages.
  identical-code:
    config:
      threshold: # language-specific defaults. an override will affect all languages.

defaultでignoreされるものはこれら

config/
db/
dist/
features/
**/node_modules/
script/
**/spec/
**/test/
**/tests/
Tests/
**/vendor/
**/*_test.go
**/*.d.ts

プロジェクトが機能満載になる前に早めの対応をしないとリファクタリング大変になりますね

ではー


「武骨日記の」プライバシーポリシーに関して
・プライバシーポリシー
・個人情報取り扱いに関して

・サイトTOP
・私は何者か
・29歳よしもと芸人がWebデザイナー未経験で学校に通い5年後フリーランスのフロントエンドエンジニアになるためにやった9つのこと
・フロント記事
・
フロントエンドエンジニア
・フロントエンド記事(タグ)
・TypeScript
・TypeScript練習問題集
・【TypeScript】TypeSript中級者になる為に知っておくと良い108個のこと
・JavaScript練習問題
・styled-componentsの使い方
・SCSS問題集
・GraphQL「Apollo x Relay-Style-Cursor-Pagination(リレースタイルカーソルページネーション)」
・recomposeと仲良くなりたい
・機動戦士FlowType
・初めてReactNativeWebを触ってみて
・Ramda.jsシグネチャの読み方
・環境変数の話
・いちごタルトの作り方
・フロントエンドエンジニア豚汁の作り方


「武骨日記の」プライバシーポリシーに関して
プライバシーポリシー

株式会社TerraceTechについて
最近起業しました。
・株式会社TerraceTech

SNS
・しずかなインターネット kenjimorita
・インド旅 instagram
・適当な日常写真 instagram
・シュールさーん instagram
・シュールさーん LINEスタンプ
・もりたけんじTwitter
・ネタ帳Twitter
・note

・FaceBook -kennji.morita-

※わたしが結成しているWebチームではWeb未経験者、フリーランスの方へのお仕事を紹介しています。
また個人レッスンしてほしい生徒も募集中です。
もしご興味ある方はチャットからご連絡ください。

※業務連絡やお久しぶり連絡もチャットからお願いします。