C# コード整形
整形処理はすべてブラウザ内で完結します。データは送信されません
C# コードのインデントを整えます。括弧を数えるのではなく、本物のパーサー(tree-sitter)で構文木を作り、文法に基づいて各行の深さを決めます。 なぜパーサーが必要か。「括弧を数える」方式は、`}` がコード中にあるのか文字列やコメントの中にあるのかを区別できません。`"}"` を含むコードが 1 つあるだけで、それ以降のインデントが総崩れになり、しかも何が悪いのか示されません。構文木があれば、ブロックの境界はパーサーが示します。 ⚠️ 変更するのは各行の先頭の空白だけで、行内の文字には一切触れません。 これは意図的な制約です:フォーマッタ最悪の失敗は「見た目が悪い」ことではなく動いているコードを壊すことだからです。行頭だけを触るなら、文字列・コメント・テンプレートの中身は影響を受けようがありません。構文が特殊でもインデントが変わるだけでコードは動きます。したがって行内の空白整理・並べ替え・折り返し・行削除は行いません。 構文が不完全でもエラーにせず出力します —— 書きながら整形するとはそういうものです。
機能
- tree-sitter による本物の構文解析 —— インデントは文法に従って決まります
- 文字列やコメントの中の括弧・キーワードは構造判定に影響しません
- 変えるのは行頭の空白だけで、行内の文字には触れません
- インデントはスペース 2 / 4 / タブから選択
- 構文が不完全でもエラーにせず出力します
- シンタックスハイライト表示に対応
- すべて端末内で完結し、コードは送信されません
使い方
- コードを左側に貼り付けます
- インデント幅を選びます
- Ctrl/⌘ + Enter か「実行」を押します
- 「コピー」で結果を取得します
よくある質問
- 他のオンライン整形ツールと何が違いますか?
- 多くのオンライン整形ツールはテキストレベルのインデント処理です —— 1 文字ずつ走査し、`{` でインデントし `}` で戻します。その括弧がコード中にあるのか文字列の中にあるのかは区別できません。本ツールは本物のパーサーを使います:コードはまず構文木になり、各行の深さはそれが属する文法構造によって決まります。 代償は言語ごとの文法ファイル(数百 KB 〜数 MB)で、そのツールのページを開いたときだけダウンロードされます。引き換えに得られるのは、推測しない構造判定です。
- 整形してもコードが変わらないのはなぜですか?
- 多くの場合、すでに正しいということです —— それが最良の結果です。フォーマッタ最悪の失敗は「見た目が悪い」ことではなく、正しいコードを書き換えてしまうことです —— その変更は diff とコードレビューに入り、誰がやったのか分からなくなります。そこで本ツールは、直すべきものがあるときだけ動きます。 本当にインデントが乱れていれば、出力は変わります。
- コードの中身は変わりますか?
- 変わりません。触るのは各行の先頭の空白だけです —— 行内の 1 文字も動かさず、並べ替え・折り返し・行削除・文字列やコメントへの介入も行いません。どんなに変わった見た目でも、最悪の結果はインデントが好みに合わないだけで、コードは動きます。 同じ理由で、欠けた構文(抜けた括弧、忘れたセミコロン)を補うことはできません。これはインデントのツールであり、修復のツールではありません。
関連ツール
JS 圧縮と整形
整形JavaScript をオンラインで圧縮・整形。圧縮はコメントと空白を削除(/*! のライセンス表記は保持)、整形は波括弧とセミコロンで組み直します。
JS 難読化
整形コメントと空白を削り、文字列と数値をエスケープ表記にし、ローカル変数を短い名前に —— 小さく、ざっと見て読みにくく。すべて端末内で処理します。
コード着色
Webコードに色を付け、選択コピーで色ごとスライドや Word に貼れます。インラインスタイルの HTML を出力してブログに貼ることも可能。26 言語に対応。
Shell 整形
整形シェルスクリプトを構造に沿って整形します。if/fi、for/done、case/esac、関数本体が揃います。変更するのは行頭の空白だけで、ヒアドキュメントは逐字保持します。
JSON 整形
整形JSON をブラウザ内で整形・圧縮・検証。折りたたみ可能なツリーで表示し、キーと値の検索、行番号とハイライト付きの編集、Python dict への変換にも対応。
JSON → コード
整形JSON サンプルから TypeScript interface、Go struct、Java class、Rust struct を生成。欠けたキーは任意に、型の衝突は共用型に。すべてブラウザ内で処理します。