CodeClimateを使うと自動的にコードの品質を採点してくれる。潜在的なリファクタリング可能ポイントを可視化してくれるので大変便利なのだが、特にduplicationエンジンはお節介が過ぎて邪魔になることがある。
特に顕著なのはテストを書いているときだと思う。テストだとどうしても同じようなコードが出現してしまう。下手に共通化してもむしろ見通しが悪くなったりすることもある、そもそも対応するのが面倒なことも多い。
こういう場合は、engine設定にexclude_paths
を追加することで、テストコードに対してduplicationエンジンをオフにすることができる。例えばRubyのリポジトリで、specディレクトリ以下はduplicationエンジンを切る場合はこんな感じで書く:
.codeclimate.yml
---
engines:
duplication:
enabled: true
exclude_paths:
- spec
config:
languages:
- ruby
rubocop:
enabled: true
当然ながらrubocopエンジンはspec以下も対象になる。
実はこれまでexclude_paths
はトップレベルにしか置けなかった。つまりこういうこと:
.codeclimate.yml
---
engines:
duplication:
enabled: true
config:
languages:
- ruby
rubocop:
enabled: true
exclude_paths:
- spec
この場合spec以下はrubocopも走らなくなってしまう。小さな改善だが嬉しい
参考
-
codelimate/codeclimate#308
- この機能が追加されたPull Request。中身はごちゃごちゃ色々入っているが、その中に今回のengine単位のexclude_pathsも含まれている。