AIコーディングミス専用のESLintプラグイン

AIはテストを完璧に通すコードを吐き出すが、本番で爆死する。このESLintプラグインは500件のミス解析から生まれ、ようやくその混沌を抑え込む。

500件のAIコーディング失敗をぶち抜き解析——それらすべてを捉えるESLintプラグインを叩き上げた — theAIcatchup

Key Takeaways

  • eslint-plugin-llm-coreはasync Promiseから深いネストまでの20のAIコーディング落とし穴をキャッチ。
  • 500件の実LLMバグから生まれ、ルールが修正を教えAIを進化させる。
  • typescript-eslintと組み合わせ、本番鉄壁のAI生成コードを実現。

AIコーディングの相棒が、こっそり本番でしかバレないバグをアプリに仕込んでいたらどうだ。

それこそeslint-plugin-llm-core誕生の悪夢の核心だ。想像してみろ。LLM(大規模言語モデル)と一緒に機能を実装しまくり。テストは緑。レビューもクリア。デプロイしたら、未解決のPromiseと飲み込まれたエラーの嵐だ。俺も見た。作者もだ、500件のAI生成コードの失敗を解剖して。

ここで電撃のひねり——ただ文句を垂れるだけじゃなく、eslint-plugin-llm-coreを鍛え上げた。AIの弱点をピンポイントで狙う20のルール搭載のESLintプラグインだ。おばあちゃんのベストプラクティスじゃない。LLMが毎回間違って吐き出すパターンを完璧に仕留める。

見てみろ。

配列コールバック内でasync/awaitをぐちゃぐちゃに。空のcatchブロックがエラーをお菓子みたいにパクパク。深いネストで「コールバック地獄2.0」を叫ぶ。AIはJavaScriptの鋭い棘を目隠しでジャグリングしてるみたいだ。

なぜだ? LLMは構文やハッピーパスで輝く——ステロイド漬けのパターンマッチャーだ。エッジケース、一貫性、現実の汚れをぶち込まれたら? APIをハルシネーション、nullを飛ばし、魔法の数字を発明。研究が裏付ける:40%のコードブロック欠落、20%の誤読、15%のコーナーケース失明。

なぜAIコードは本番で爆発するのか

LLMをやる気満々のインターンだと考えろ。チュートリアルでは天才、現場ではポンコツ。

ユニットテストは完璧——カオスをモックで隠すからだ。本番? 予測不能なデータが洪水のように——null、タイムアウト、部分失敗。AIコードは崩壊。

この定番例を。

const results = items.map(async (item) => { return await fetchItem(item); });

問題なさそうか? AIアシスタントが書いた。テスト通る。コードレビューもOK。

本番でresultsはPromiseの配列——期待した値じゃない。

eslint-plugin-llm-coreのno-async-array-callbacksルールが即嗅ぎつける:「57:27 error Avoid passing async functions to array methods llm-core/no-async-array-callbacks. This pattern returns an array of Promises, not the resolved values. Consider using Promise.all() or a for…of loop instead.」

教育的だろ? ただ「直せ」じゃなく、説明するから次回のAIも学べる。

空のcatchも:

try { await processData(data); } catch (e) { // TODO: handle error }

「63:11 error Empty catch block silently swallows errors.」ドカン。消滅。

ネスト? AIはif文を1999年式ピラミッドに積む。prefer-early-returnルールで平らに:データなしなら即リターン。クリーンで読みやすく鉄壁。

これは大げさじゃない。実戦の惨劇からパターンマイニング——実証研究、333バグ、558の悪スニペット。AIの死角を法典化だ。

eslint-plugin-llm-coreはAIをリード開発者に変えるか

答えは短く:想像以上に近い。

2000年代初頭のJSLintを思い浮かべろ。JavaScriptはブラウザのクセとカウボーイコードの荒野。Crockfordのリンターがそれを矯正、今のウェブ開発の道を拓いた。eslint-plugin-llm-core? AI時代のJSLintだ。

俺の強気予測——オリジナルが逃した洞察:このプラグインはAIを「アシスタント」から「無監督で任せられるコパイロット」に変える。エラーメッセージをプロンプトでLLMに学習させろ、出力品質が急上昇。本番OKのdiffが初日から。CopilotやClaudeのベビーシッター終了。

企業回しチェック:typescript-eslintのルール? もちろんTypeScript純正、スペック命。このプラグイン? AI戦特化。両方使え——ピーナッツバターとチョコみたいだ。

typescript-eslint eslint-plugin-llm-core
TypeScriptの正しさ AIバグパターン
スペック重視メッセージ 修正を教える説明
言語準拠 LLM失敗モード

インストール? 馬鹿簡単。

npm install -D eslint-plugin-llm-core

// eslint.config.js
import llmCore from 'eslint-plugin-llm-core';

export default [
  {
    plugins: {
      'llm-core': llmCore,
    },
    rules: {
      ...llmCore.configs.recommended.rules,
    },
  },
];

ゼロコンフィグ。推奨ルールが即発動、asyncトラップ、魔法数、不整合エクスポート、AI大好物のコメントアウト死コードまでキャッチ。

ルール深掘り? 20本の猛者:

  • no-magic-numbers:42に名前をつける。
  • throw-error-objects:文字列投げ捨て禁止、本物のErrorのみ。
  • prefer-unknown-in-catch:安全タイピング。
  • structured-logging:一貫フォーマット。

フルドキュメントはgithub.com/pertrai1/eslint-plugin-llm-core。フォークしてAIホラーストーリー投稿しろ。

良いコードにうるさいか? いや、ピンポイント。メッセージはプロンプト変装だ。GPTにフィードバック、進化する。

想像しろ:AI生成。リンター磨き。人間マージ。サイクルタイム激減。プラットフォームシフトだ——コードは会話、職人苦行じゃない。

この熱気は本物。待ってたぞ。AIの約束は速さ、現実は脆さ。eslint-plugin-llm-coreが橋渡し。

一つのルールno-commented-out-codeでAIのTODO墓場を根絶。もう一つexplicit-export-typesで公開リターン型強制。シニア開発者のささやき修正だ。

予測:半年で1万スター。チームがAIワークフローに義務化。なぜ? リンターなしAIコードは爆弾負債だ。

疑うか? 次Copilotで回してみろ。赤ランプが隠れgotchaを照らす。

驚くべきは? 超知能を……役立つツールに変える。ついに。

隠れた力:AIに自己修正を教える

これがメタゲームだ。

エラーメッセージは罰じゃない——フィードバックループ。次プロンプトにコピペ:「これ避けろ:[error]。正しく書け。」

LLMは速く適応。「アシスタント」が「見習い」、次「職人」に。

鮮明な例え:原子時代のスペルチェック。初期核爆弾はプスッ、安全装置でドカン。ここも同じ——リンターがAIのガードレール。

よくある質問

eslint-plugin-llm-coreとは?

AI/LLMコーディングのよくあるミスを狙う20ルールのESLintプラグイン。async配列誤用、空catchなど。500件の実エラー解析で構築。

eslint-plugin-llm-coreのインストール方法は?

npm install -D eslint-plugin-llm-coreを実行、eslint.config.jsに推奨ルール追加。余計なコンフィグゼロ。

eslint-plugin-llm-coreはTypeScript対応か?

完璧だ——typescript-eslintを補完、言語ルールじゃなくAI特化パターンにフォーカス。

James Kowalski
Written by

Investigative tech reporter focused on AI ethics, regulation, and societal impact.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by dev.to