要約

このAIコードチェッカーは、貼り付けたコードを6つのクライアントサイド指標で0〜100点採点する無料ツールです。行の長さ、ネストの深さ、コメント比率、マジックナンバー、残存TODO/FIXME、1文字の変数名を評価。何もアップロードされず、入力するたびにスコアが更新され、各項目の内訳から何を直すべきか一目でわかります。

コードを貼るだけで、品質スコアが即座にわかる

この無料のAIコードチェッカーは、貼り付けたコードに0〜100点のヒューリスティックスコアを付けます。行の長さ、ネストの深さ、コメント、マジックナンバー、命名規則をチェック。入力内容はブラウザの外に一切送信されません。

AIコードチェッカー

関数や短いコードを下に貼り付けてください。スコアは入力するたびに更新されます。6つのチェックはすべてブラウザ内で完結し、貼り付けた内容はどこにも送信されません。

code-checker.sh
0 /100
確認中 ヒューリスティックな品質スコアです。リンターやコンパイラではありません

上にコードを入力または貼り付けると、内訳が表示されます。

行の長さ0/20
ネストの深さ0/20
コメント0/20
マジックナンバー0/15
TODO / FIXME マーカー0/10
命名0/15
仕組み

スコアが実際にチェックする項目

行の長さとネスト

100文字を超える行や、3〜4段階以上ネストしたif文は、差分レビューを一気に読みにくくします。ネストの深さは、Cスタイル言語では括弧の数、Pythonスタイル言語ではインデントの段数から測定するため、波括弧を使う言語かどうかに関わらずチェックできます。4段階を超えるとスコアは急速に下がります。そこから先は、レビュアーがどの条件の中にいるのか思い出すために上にスクロールし直す必要が出てくるラインだからです。

コメントとマジックナンバー

自己説明的なコードには、5〜10行に1行程度の軽いコメントがあり、説明のない数値リテラルはほとんどありません。ドキュメントがほぼないファイルにはフラグを立て、また500や0.85のような数値が名前もコメントもなく登場するファイルにも別途フラグを立てます。TODOやFIXMEの行はコメントスコアには含まれません。これらはマーカーであってドキュメントではないため、そればかりのファイルは依然として説明不足と評価されます。

命名と残存マーカー

i、j、nのような一般的なループカウンターを除いた1文字の変数名は、コードが数行を超えた時点で読みにくくなります。そこで、宣言・代入された変数のうちどれだけがこのパターンに当てはまるかを数えます。残された TODO や FIXME のコメントもそれぞれ数点減点されます。未完了の作業を正直に示すサインではありますが、実際のプルリクエストレビューと同じように積み重なっていきます。

なぜ本物のAIではなくヒューリスティックなのか

サーバーなし、モデルなし、ブラックボックスなし

ネット上のAIコードチェッカーは、たいてい魔法のようなAIスコアを謳っています。しかしこのツールはAIを一切使いません。人間のレビュアーがプルリクエストを開いて最初の30秒でチェックするのと同じ、6つの説明可能な項目を採点するだけです。行の長さ、ネストの深さ、コメント比率、マジックナンバー、残存TODO、1文字の変数名。それぞれに固定の配点があるので、根拠のない数字ではなく、なぜそのスコアになったのかが正確にわかります。

  • 完全にクライアントサイドで動作。今開いているタブの中で完結
  • 毎回同じ6項目をチェック。実行ごとのブレなし
  • コンプライアンス監査ではなく、PR前の素早いチェック用
背後のモニターにコードエディタが光る中、メカニカルキーボードをタイプする手元のクローズアップ

よくある質問

このAIコードチェッカーは本当に無料ですか?
はい。登録もアカウントもレート制限も不要です。採点はブラウザのタブ内で行われ、こちら側で使用量を計測することもありません。
コードはどこかにアップロードされますか?
いいえ。計算はすべて、入力した瞬間にブラウザ内のJavaScriptで行われます。こちらがコードを見ることも、保存することもありません。
スコアは実際に何を基準にしていますか?
6つのチェックです。平均行長、ネストの深さ(括弧とインデントの両方を基準)、コメント比率、説明のない数値リテラルの数、残存するTODO/FIXMEマーカー、そして一般的なループカウンターを除いた1文字の変数名の割合。それぞれ100点満点のうち固定の配点を持っています。
どの言語に対応していますか?
テキストベースの言語であれば何でも対応します。コメント検出は //、#、/* */、-- 形式に対応しており、JS、Python、Java、C系言語、Ruby、SQLなどほとんどの言語をカバーします。言語固有のパーサーではなく、テキストとして読み取っています。
なぜ予想より低いスコアになったのですか?
たいていは1つの項目が合計点を引き下げています。内訳のバーを確認してください。よくある原因は、深いネストと裸の数値の多さの2つです。
本物のリンターやコードレビューの代わりになりますか?
いいえ。これは可読性に対する素早く正直なチェックであり、コンパイラでもセキュリティスキャナーでもなく、ESLintやPylint、実際のレビュアーの代わりにもなりません。最終判断ではなく、最初の下読みとして使ってください。
コメントを増やしても、なぜスコアが上がらないことがあるのですか?
コメントのチェックは、最大値ではなく、行の5〜40%程度という健全な比率を評価するためです。コメントばかりのファイルも減点対象になります。それはたいてい、コメントが文脈を加えるのではなくコードをそのまま言い換えているだけであり、コメントが皆無な場合と同じくらいレビュアーの手を止めてしまうからです。
波括弧のない言語では、ネストの深さはどう測定していますか?
Python、YAML形式の設定ファイルなど、括弧の代わりにインデントを使う言語では、ファイル内で使われている最小のインデント単位(2スペース、4スペースなど)を検出し、最も深い行がその単位の何段階分にあたるかを数えます。JS、Java、C、Goなどでは括弧のネストを直接数えます。この2つのうち深い方の測定値がスコアに反映されます。
大きなファイルを貼り付けたのに、スコアがほとんど変わりません。なぜですか?
すべてのチェックは件数ではなく比率に基づいています。行の長さは100文字を超える行の割合、コメントはコメント行の割合、マジックナンバーは総行数に対する割合を見ています。つまり、同じ比率であれば500行のファイルも20行のファイルもほぼ同じスコアになります。評価されるのはファイルサイズではなく、一貫したスタイルです。

次に何を作ればいいか、まだ決まっていない?

whatshouldibuildnext.comでは無料のAI仕様書ジェネレーターも公開中。アイデアを説明するだけで、スコープ付きの仕様書とスタックの提案が返ってきます。登録不要。