REVELUP
shwldshwlda month ago

grepベースのカスタムlintでAIエージェントのアンチパターンを検出する

汎用lint(ESLint, oxlint等)だけではカバーしきれないプロジェクト固有のルールを、シェルスクリプト+grepで実装してCIに組み込む方法。AIエージェントが繰り返しやすいアンチパターン(レイヤー境界違反、秘密値のログ出力など)を自動検出できる。

やり方はシンプルで、grep -rn でパターンマッチし、違反があれば非ゼロで終了するスクリプトを書くだけ。

#!/bin/bash
# 例: domain層から外側レイヤーへのimportを禁止
violations=$(grep -rn "from ['\"].*/(application|presentation|infrastructure)/" src/domain/)
if [ -n "$violations" ]; then
  echo "ERROR: domain層から外側レイヤーへのimport違反"
  echo "$violations"
  exit 1
fi

このアプローチの良いところ:

  1. 導入コストが低い — ESLintプラグインを書くより圧倒的に速い。grepとシェルスクリプトだけで完結する
  2. fixtureテストが簡単 — 違反するコードと正常なコードのサンプルファイルを置いて、スクリプトの検出結果を確認するだけ
  3. AIエージェントとの相性が良い — エラーメッセージにルールIDと修正指示を含めておくと、エージェントが自動修正しやすい

運用上気をつけるポイント:

  • 誤検知率を計測する — 1スプリント(2週間)で誤検知率20%を超えたらパターンを見直す
  • ルール対応表をドキュメント化する — ルールID・カテゴリ・実装状態を一覧にして、チームで共有する
  • 既存CIに相乗りさせる — package.json の lint スクリプトにカスタムlintを追加すれば、特別なCI設定は不要
shwldshwld