6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RuboCop で inheritance を利用しルールや設定が重複してしまった際に設定を統合する方法

Last updated at Posted at 2022-01-27

これはなに

  • RuboCop には Inheritance というオプションがあり、設定を複数ファイルに記述またはリモートのファイルを参照し、読み込むことができる
  • Inheritance の設定をしても、ルールが重複している場合、意図したルールが適用されなかったため対応した際のメモを記事にしました

Inheritance とは

RuboCop のルールは rubocop.yml に設定を記載することが多いが、共通の設定を読み込む場合 remote URL を指定したり、 Gemfile 等に定義している gem の中から定義を参照できます
rubocop --auto-gen-config のコマンドを実行して生成する .rubocop_todo.ymlinherit_from で読み込むため、自然に利用している人も多いはずです

inherit_from の詳細については、以下 URL の「Inheriting configuration from a remote URL」を確認してください

inherit_mode を指定する

Inheritance で複数設定を参照しつつ、定義が重複したときにどのように振る舞うか設定を inherit_mode で定義することができます
inherit_modeoverridemerge を設定することができデフォルトは override になっています

以下は .rubocop.yml.rubocop_todo.yml の各ルールで定義されている Exclude 条件を merge する場合に利用します

.rubocop.yml
inherit_from:
  - .rubocop_todo.yml

inherit_mode:
  merge:
    - Exclude

最後に

なるべくルールや設定の重複は避け上書きしていくべきと考えていますが、
プロジェクトの方針や状況に応じて柔軟な適用を必要とされるケースもあることを実感しました。

Reference

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?