メインコンテンツへスキップ
デフォルトでは、Kody ルールは階層に沿って継承されます:
グローバル → リポジトリ → ディレクトリ
各レベルの有効なルールセットは:
- そのレベルで定義されたルール、プラス
- 親レベルから継承されたルール、マイナス
- そのレベルで明示的に除外されたルール。
デフォルトの動作
- グローバルルールはデフォルトですべてのリポジトリとディレクトリに適用されます。
- リポジトリルールはすべてのグローバルルールと、そのリポジトリに特定的に定義されたルールを継承します。
- ディレクトリルールはリポジトリのすべてのルールと、そのディレクトリに特定的に定義されたルールを継承します。
継承を有効にするためのアクションは不要です — 自動的です。
継承の中断
ルールが継承されないようにする方法は 2 つあります:
1) 作成時にルールを非継承可能としてマークする
任意のレベル(グローバル、リポジトリ、ディレクトリ)でルールを作成する際に、「非継承可能」としてマークできます。
効果:
- ルールは作成されたレベルのみで適用されます。
- 子レベルには表示されません。
ルールが意図的に特定のスコープに限定されており、階層に流れるべきでない場合に使用します。
2) 子レベルから親ルールを除外する
子設定(リポジトリまたはディレクトリ)から、そうでなければ親から継承されるルールを明示的に除外できます。
効果:
- ルールはその正確な子レベルでは適用されません。
- 除外はさらにカスケードしません — 孫は、孫も除外しない限り(またはルールが非継承可能として作成されない限り)、親のルールを引き続き参照します。
他の子に影響を与えずに特定のリポジトリまたはディレクトリの動作を微調整するために使用します。
リポジトリレベルでの除外
グローバルルール「新しいエンドポイントにテストを要求する」が存在するとします。リポジトリ「shop」では、リポジトリレベルでこのルールを除外します。
結果:
- リポジトリレベルでは、ルールは適用されなくなります。
- 同じリポジトリ内に設定済みのディレクトリ(例:
apps/api)がある場合、そのディレクトリはグローバルルールを引き続き継承して適用します — ディレクトリレベルでも除外するか、元のグローバルルールが非継承可能として作成されていない限り。
非継承可能なグローバルルールの作成
グローバルルールを作成し、非継承可能としてマークします。
結果:
- ルールはグローバルレベルのみで適用されます。
- リポジトリとディレクトリはそれを継承しません。
実践的なヒント
- すべてのリポジトリがデフォルトで恩恵を受けられるよう、グローバルレベルに基本的なルールを保持する。
- 子に影響を与えるべきでない非常に特定的なコンテキストには非継承可能ルールを使用する。
- 他のリポジトリやディレクトリに影響を与えずに対象を絞った例外を作るには子レベルの除外を使用する。
関連情報