背景
Policy as Code を導入しても、各 rule の disable comment / ignore / allowlist を無制限に利用できると、Agent や開発者が簡単に enforcement を迂回できる。
suppression 自体を禁止するのではなく、「例外が明示的・局所的・追跡可能」であることを保証する必要がある。
目的
lint / typecheck / custom checker の suppression を repository policy として統制する。
対象候補
oxlint-disable
eslint-disable
@ts-ignore
@ts-expect-error
- checker-specific ignore
- dependency-cruiser ignore
- Knip ignore
- secret scanner allowlist
- policy checker exclusion
基本ルール
lint disable
- file-wide disable を原則禁止
- rule 名を必須にする
- disable 理由を必須にする
- project policy に対応する場合は policy ID を付与する
-可能なら next-line / single-line scope に限定する
例:
// policy-exception: DB-002 reason="latest row selection requires findFirst"
// oxlint-disable-next-line coding-style/no-prisma-find-first
TypeScript
@ts-ignore は原則禁止
- unavoidable な場合は
@ts-expect-error + 理由を利用する
- stale
@ts-expect-error は TypeScript 自身に検出させる
Checker ignore
ignore / allowlist entry に最低限以下を持たせる。
必要なら owner / expiry も追加する。
Acceptance Criteria
背景
Policy as Code を導入しても、各 rule の disable comment / ignore / allowlist を無制限に利用できると、Agent や開発者が簡単に enforcement を迂回できる。
suppression 自体を禁止するのではなく、「例外が明示的・局所的・追跡可能」であることを保証する必要がある。
目的
lint / typecheck / custom checker の suppression を repository policy として統制する。
対象候補
oxlint-disableeslint-disable@ts-ignore@ts-expect-error基本ルール
lint disable
-可能なら next-line / single-line scope に限定する
例:
TypeScript
@ts-ignoreは原則禁止@ts-expect-error+ 理由を利用する@ts-expect-errorは TypeScript 自身に検出させるChecker ignore
ignore / allowlist entry に最低限以下を持たせる。
必要なら owner / expiry も追加する。
Acceptance Criteria
@ts-ignoreを禁止または厳格に制限する