要約

このAIコードチェッカーは、4つの実測的シグナルに対して、貼り付けたコード片をスキャンします。40行超の関数、深さ4以上のネスト、TODO/FIXME密度、JSON.parseやfetchなどのリスク呼び出しで保護されていないもの。0-100スコアと、各減点理由の行ごとの内訳を、ブラウザ完全処理で返します。アカウント登録不要、アップロードなし、ブラックボックスのAI評価なし。スタッフエンジニアが目視で実行する4つのチェックだけ。

感情ではなく、実際のリスクをスコア化する AI コードチェッカー

関数またはファイルを貼り付けます。スタッフエンジニアが目視で実行する4つのチェックから構築された0~100スコアを取得します:関数の長さ、ネストの深さ、TODOバックログ、エラー処理は、ブラウザでリアルタイムに入力時に計算されます。

プルリクエストの差分を表示したデュアルモニターのメカニカルキーボードで作業する開発者

AI コードチェッカー

下に関数またはファイル全体を貼り付けます。スコアと内訳は入力時に更新されます。

0 行 · ローカルでスキャン、ブラウザから何も出ません
--
スキャンするコードを貼り付けてください

ブラウザで完全に実行されます。何もアップロードされません。

    仕組み

    4つのチェック、ブラックボックスなし

    構造:長さとネスト

    関数は40行超でフラグされ、ESLintの独自のmax-lines-per-functionデフォルト50行にマージンを付けた設定と一致します。ネスト深度は波括弧言語の括弧カウント、またはPythonスタイルコードの場合はインデント深度フォールバックで追跡され、ほとんどのスタイルガイドが読みにくいと呼ぶ4段階超でフラグされます。

    エラーハンドリング

    スキャナーはリスク呼び出しを探します:JSON.parse、fetch、await、.then、execSync、requests.、os.system。次に、貼り付けたコードのどこかにtry/catchが存在するかをチェックします。近くに守りがあるリスク呼び出しは減点ですが、パスではありません。

    ハウスキーピング

    TODO、FIXME、XXX、HACKマーカーはカウントされ、コード100行あたりに正規化されます。ファイルに1つか2つあるのは通常のエンジニアリングです。それらの密集したバックログは、出荷後ではなく、出荷前にファイルを通す必要があることを示しています。

    なぜこの4つのチェック、本当のlinterではなく

    ESLint、pylint、およびそれらの同等物は、抽象構文木を解析します。そのため、未使用変数、到達不可能なブランチ、型の不一致を検出できます。このツールはそれをしません。ビルドステップ、設定ファイル、インストールなしで、スニペットで実行できるテキストスキャナーで、関数を完成させてプルリクエストを開く10秒間の間に便利です。トレードオフは正直です:より少なく、より粗いチェック、透過的に計算、対。本物の静的アナライザーのより深いですがセットアップが遅い。チームがすでにESLintまたはpylintをCI内で実行している場合、実行を続けます。このツールは、コードがまだリポジトリにない場合の前のギャップのためのものです。

    スコアに関する質問

    このAIコードチェッカーは本当に無料ですか?
    はい。ブラウザで完全に実行され、サインアップ、APIキー、使用回数制限なしです。スコアリングにはサーバー関与がないため、課金対象もありません。
    自分のコードはどこかにアップロードされますか?
    いいえ。スキャンは、テキストエリアに入っているコードに対して、プレーンJavaScriptをタブ内で実行します。サーバーへの送信、保存、ログ記録は行われません(ただし、ウィジェットが使用されたことだけを示す、コード内容を含まない匿名のツール実行イベントは記録されます)。
    このAIコードチェッカーと、本物のlinterとの違いは何ですか?
    これはヒューリスティックスキャナーであり、ESLintやpylintのようなコンパイラやlinterではありません。ASTを解析しないため、型エラー、未使用変数、デッドコードパスを検出できません。代わりに4つの構造的パターンをフラグします:長い関数、深いネスト、TODO密度、try/catchに保護されていないリスク呼び出しです。
    どの言語に対応していますか?
    波括弧で区切られた言語がよく機能します:JavaScript、TypeScript、Java、C、C#、Go、Rust、PHP、Swift。ネスティングは対応する波括弧をカウントして測定されます。Pythonのようなインデント専用言語は、代わりにインデント深さ測定にフォールバックします。タブとスペースの混在や不規則なフォーマットは、どちらの方法でもネストカウントを狂わせる可能性があります。
    私が正常だと思う関数がフラグされたのはなぜですか?
    通常は2つのうちの1つです:JSON.parse、fetch、またはawait呼び出しがあるが、貼り付けたコード片にtry/catchがない、または、ブロックのどこかでネスティングが深さ4を超えています。周囲のtryブロックを含む、より多くのコンテキストを貼り付けると、入力時にスコアがリアルタイムで更新されます。
    閾値(40行、深さ4など)はどこから来ていますか?
    これらは実際のlinter設定の一般的なデフォルトを追跡しています。ESLintのmax-lines-per-functionルールはデフォルトで50行に設定されており、ほとんどの内部スタイルガイドは3~4レベル以上のネスティングを読みやすさ問題としてフラグします。私たちは、完全なASTパースがないスキャナーは本物のlinterより広い安全マージンが必要なため、これらのデフォルトより少し下(厳密側)に設定しました。
    これはコードレビューに置き換わりますか?
    いいえ、置き換わるべきではありません。プルリクエストを開く前の5秒のガットチェック(直感的判断)であり、レビュアーではありません。構造的な問題は検出しますが、ロジックバグ、セキュリティ問題、アーキテクチャ問題は検出しません。レビューの代わりではなく、レビュー前に使用してください。
    スコアが100ですが、コードはまだ汚く見えます。ツールが間違っていますか?
    4つの具体的なものをチェックしているだけで、コード品質全般をチェックしていません。100は、長い関数なし、深いネストなし、TODOバックログなし、保護されていないリスク呼び出しなし、ということです。命名が良いこと、テストが存在すること、アーキテクチャが6ヶ月後に理にかなっていることは意味しません。
    部分的なコード片を貼り付けるとスコアが歪みますか?
    はい。そしてそれは想定通りです。その他のファイルで折り返しているtry/catchなしで関数本体を貼り付けると、チェッカーはその保護措置が存在することを知る方法がありません。正確な読みのために、最小の自己完結ユニットを貼り付けてください:1つの関数、または1つのファイル。

    これは構造をチェックします。CodebaseChatはより難しい質問に答えます。

    平易な言語でコードベースに何でも質問してください:authが接続されている場所、関数が存在する理由、リポジトリ間で何が何を呼び出しています。grepは必要ありません。