TidySmith
C# コードをチームの望む順序に整えます。メンバーはプレビュー付きで並べ替えてグループ化され、元に戻すは 1 回。リージョンはルールどおりに、コメントは行の長さで折り返されます。さらに、整理できる箇所にはエディター内に灰色の点が表示されます。
無料 · Visual Studio 2022 と 2026 · UI は 14 言語 · テレメトリなし
TidySmith を選ぶ理由

設計から安全
Roslyn の構文ツリー上に構築されています。メンバーはコメント、ドキュメント、属性と一緒に移動し、#if と #region のブロックをまたぐことはありません。安全に並べ替えられないクラスはそのままです。最初にプレビューで差分を表示し、適用は 1 回の元に戻すで取り消せます。
チームの順序
グループの順序、アクセスレベル、静的メンバー、名前。オプション ページで設定するか .editorconfig に記述すれば、全員が同じ結果を得られます。StyleCop と CodeMaid のプリセットが組み込まれています。
マニュアルなしで見つかる
順序が乱れたクラスや長すぎるコメントの下に灰色の点が表示され、Ctrl+. で Visual Studio のアクションの隣に修正が提示されます。コマンドを覚えたら、ヒントはオフにできます。
無料、条件なし
サブスクリプションも「Pro」版もデータ収集もなく、出力ウィンドウや起動時のメッセージもありません。唯一お願いするのは、しばらくお使いいただいた後に、Marketplace での評価です。Visual Studio 2022 と 2026、x64 と ARM64 で動作します。
機能
- クラス、ファイル、またはソリューション エクスプローラーで選択したファイルのメンバーを並べ替え。移動する内容をプレビューできます。
- エディター内のヒント: 整理できる箇所に灰色の点、修正は電球 (Ctrl+.) から。
- ルールに従ったリージョン: メンバー グループごと、アクセスレベルごと、またはその両方で、独自のリージョン名を付けて。リージョンなしにもできます。
- 収まるコメント:
//と///のコメントを行の長さで折り返し、短い行は結合します。 - 保存時に整理: C# ファイルの保存時に、選んだ手順を実行します。既定ではオフです。
- 構造ウィンドウ: ファイルのメンバー、メソッドのサイズと複雑度、ドラッグで並べ替え。
- 小さなヘルパー: 関連ファイルへの切り替え、行の並べ替えと結合、ソリューション エクスプローラーでのファイル検索、リージョンだけの折りたたみと展開。
すべてのコマンドは 編集 › TidySmith とコード エディターのコンテキスト メニュー (右クリック › TidySmith) にあります。Order Members はソリューション エクスプローラーのファイル、フォルダー、プロジェクトのコンテキスト メニューにもあります。
メンバーを並べ替える
Order Members… はクラスのメンバーを種類 (定数、フィールド、コンストラクター、プロパティ、メソッド…)、アクセスレベル (public が先)、静的メンバーをインスタンス メンバーより先に、必要なら名前の順に並べ替えます。順序はオプション ページまたは .editorconfig で設定したとおりです。
- まずプレビュー: 移動する内容の差分を表示します。適用 は 1 回の編集なので、1 回の元に戻すですべて取り消せます。「今後確認しない」でプレビューをオフにできます。
- 対象: キャレットのあるクラスかファイル全体 (プレビューで選択)、またはソリューション エクスプローラーで選択したすべての C# ファイル (ファイル、フォルダー、プロジェクト)。
- メンバーと一緒に移動するもの: そのコメント、ドキュメント、属性。空行は元のまま保たれ、グループ間には空行が 1 行入ります。
- 決して触れないもの:
#ifまたは#region内のメンバーはそのブロック内でのみ並べ替えられます。中かっこと同じ行にメンバーがあるクラス、1 行に 2 つのメンバーがあるクラス、構文エラーのあるクラスはそのままです。生成されたファイル (*.g.cs、*.Designer.cs) はスキップされます。
開始用のプリセット: TidySmith (オーバーロードとインターフェイスの実装をまとめる)、StyleCop (SA1201、SA1202、SA1204 — 厳密にアクセスレベル順)、CodeMaid (CodeMaid の既定。CodeMaid から移行するチーム向け)。
エディター内のヒント
TidySmith が役立つ箇所では、名前の下に灰色の点が 3 つ表示されます。Visual Studio が自身の提案を示すのと同じ方法です。ポインターを合わせると内容がわかり、Ctrl+. で変更のプレビュー付きの修正が提示されます。

| キャレットの位置 | Ctrl+. で提示されるもの |
|---|---|
| クラスの名前 | クラスまたはファイルのメンバーの並べ替え、ルールに従ったリージョンの追加、クラスのリージョンの削除、構造ウィンドウで開く |
| 行の長さを超えるコメント | コメントの折り返し |
#region 行 | このリージョンの削除 (コードは残る) |
| 選択した複数の行 | 行の並べ替え (フラットなリストのみ)、行の結合 |
点が表示されるのは、順序が乱れたクラス、行の長さを超えるコメント、ルールと異なるリージョンだけです。点と電球のアクションには別々のスイッチがあります。「自分が変更したファイルのみ」をオンにすると、古いコードには何も表示されません。
ルールに従ったリージョン
Add Regions to This File… は、プレビューの後、ルールが指定する場所に #region 行を入れます。リージョンはチームで決めることなので、既定はリージョンなしです。選ぶまで、コマンドは設定を開きます。

- 分け方: メンバー グループごとに 1 つのリージョン (Fields、Methods…)、アクセスレベルごと (Public、Private…)、またはその両方 (Public methods)。
- 独自の名前: 各グループにリージョン名があります。同じ名前のグループは 1 つのリージョンを共有し、オフのグループはリージョンの外に置かれます。インターフェイスの実装には、インターフェイス名のリージョン (IDisposable) を付けられます。
- ノイズなし: メンバーが最小数 (既定は 2) 未満ならリージョンは作られません。コンストラクター 1 つを囲むリージョンは誰の役にも立ちません。
- 何度でも実行できます: クラス内のリージョンは入れ子にならず、再構築されます。先にメンバーが並べ替えられるので、各グループはひとまとまりになります。
- 手動で: Add Region Around Selection (キャレットは
#regionの後で名前の入力を待ちます)、Remove Region at Caret、Remove Regions in This File。削除されるのは#regionと#endregionの行だけで、コードは残ります。
StyleCop のルール SA1124 はリージョンを禁止しています。そのため既定はリージョンなしで、この設定では保存時の整理がリージョンを削除します。
保存時に整理
C# ファイルの保存時に、TidySmith はメンバーの並べ替え、ルールに従ったリージョンの設定、コメントの折り返し、行末の空白と余分な空行の削除を行えます。各手順には個別のスイッチがあります。対象は保存するファイルだけで、生成されたファイルは対象外です。変更内容はステータス バーに表示され、Ctrl+Z で元に戻せます。Tidy This File は同じ手順を必要なときに実行します。
既定ではオフです。Order Members がチームの望む結果を出せるようになってからオンにしてください。そうしないと、古いファイルを初めて保存したときに全体が並べ替えられます。
構造ウィンドウ
表示 › その他のウィンドウ › TidySmith Structure: アクティブな C# ファイルの型とメンバーを表示します。キャレットに追従し、クリックでメンバーへ移動、検索で絞り込み、メンバーを別のメンバーの上にドラッグするとそこへ移動します (Order Members と同じ安全な移動)。メソッドには長さとサイクロマティック複雑度が表示され、オプション ページの上限を超えるとオレンジ色になります。

小さなヘルパー
CodeMaid にあって恋しくなるコマンドを、編集 › TidySmith とエディターのコンテキスト メニューに。
Switch File
現在のファイルに対応するファイル (マークアップとそのコード、リソース ファイルとそのデザイナー、コードとそのテスト) を、ソリューション エクスプローラーで探さずに開きます。
| 切り替え元 | 切り替え先 (と戻り) |
|---|---|
MainWindow.xaml | MainWindow.xaml.cs |
Order.razor | Order.razor.cs |
Index.cshtml | Index.cshtml.cs |
Strings.resx | Strings.Designer.cs |
MainForm.cs | MainForm.Designer.cs |
OrderService.cs | OrderServiceTests.cs — ソリューションのテスト プロジェクト内も対象。…Test.cs と ….Tests.cs も |
メニューには切り替え先の名前 (「Switch to OrderServiceTests.cs」) が表示され、移動先がないときは無効になります。独自のショートカット キーを割り当てると便利です (下記参照)。
Sort Selected Lines
using、列挙型のメンバー、リストの項目を並べ替えます。コンマはリストに必要な位置に残ります。並べ替えるのはフラットなリスト (1 行に 1 項目、同じインデント、空行なし、ステートメントなし) だけなので、誤ってメソッドやファイル全体を選択しても崩れることはありません。理由はステータス バーに表示されます。
Join Lines
選択した行を 1 行に結合します。選択がない場合は、キャレットのある行を次の行と結合します。
Find This File in Solution Explorer
エディターのファイルをソリューション エクスプローラーで選択します。
Collapse All Regions と Expand All Regions
#region ブロックだけを折りたたむか展開します。メソッドはそのままです。Ctrl+M, Ctrl+O (メソッドも折りたたむ) や Ctrl+M, Ctrl+L (すべて) とは異なります。
既定ではショートカットを割り当てません。Visual Studio のキーはそのままです。ツール › オプション › 環境 › キーボード で任意のコマンドに割り当てられます。「以下の文字列を含むコマンドを表示」に TidySmith. と入力してください。
設定
ツール → オプション → SmithWorks → TidySmith。各オプションに説明があります。
| オプション | 既定値 |
|---|---|
| 電球 (Ctrl+.) の TidySmith のアクション | オン |
| 整理できる箇所の灰色の点 | オン |
| メンバーの順序 | TidySmith プリセット |
| 並べ替える前のプレビュー | オン |
| リージョン | リージョンなし |
| コメントの行の長さ | 120 |
| 保存時に整理 | オフ |
| 長いメソッド (行数) · 複雑なメソッド | 60 · 10 |
| Marketplace での評価をお願いする | オン |
設定は %LocalAppData%\TidySmith に保存されます。.editorconfig に値がある場合はそちらが優先されます。

リポジトリごと: .editorconfig
ルールをコードの隣に置けば、チーム全員が同じ結果を得られます。.editorconfig の値はオプション ページより優先されます (「.editorconfig の順序を使用する」がオフの場合を除く)。
[*.cs]
tidysmith_member_order = stylecop
tidysmith_regions = kind
tidysmith_region_min = 2
max_line_length = 120
| キー | 値 |
|---|---|
tidysmith_member_order | tidysmith、stylecop、codemaid、または順序どおりのグループ: constants, fields, constructors, properties, methods… |
tidysmith_regions | none、kind、access、kind_access |
tidysmith_region_min | リージョンを作るメンバーの最小数: 2 |
max_line_length | コメントを折り返す行の長さ |
よくある質問
CodeMaid との違いは?
TidySmith は古いコード モデルではなく Roslyn の構文ツリー上で動作するため、#if、コメント、属性は本来の位置にとどまります。プレビューを表示し、元に戻すは 1 回です。順序は .editorconfig に記述できます。Visual Studio 2022 と 2026、x64 と ARM64 で動作します。対象は C# のみで、現在 Visual Studio 自体が行うこと (コード クリーンアップ、ビルドの進行状況) は含みません。
クラスが並べ替えられなかったのはなぜですか?
並べ替えるとクラスが壊れたり乱れたりするおそれがある場合、TidySmith はそのクラスに触れません: 構文エラー、中かっこと同じ行にあるメンバー、1 行に 2 つのメンバー。#if または #region 内のメンバーはそのブロック内でのみ移動します。生成されたファイルには決して触れません。
変更を取り消せますか?
はい。各コマンドと各保存は 1 回の編集なので、1 回の Ctrl+Z で取り消せます。ソリューション エクスプローラーから処理した場合、開いていないファイルはディスクに書き込まれます。その場合はバージョン管理を使ってください。
Sort Selected Lines で何も起きなかったのはなぜですか?
フラットなリストだけを並べ替えるため、コードである選択範囲 (ステートメント、ブロック、インデントの異なる行、間に空行がある行) が崩れることはありません。その旨はステータス バーに表示されます。
Add Regions で何も起きません。
既定のルールはリージョンなしです。設定の [リージョン] グループ (コマンドが開きます) で分け方を選ぶか、.editorconfig で tidysmith_regions を設定してください。
VB、C++、XAML には対応していますか?
TidySmith は C# 用です。要望があればほかの言語にも対応するかもしれません。Feedback リポジトリでお知らせください。
TidySmith はデータを送信しますか?
いいえ。すべては Visual Studio 内であなたのファイルに対して実行され、どこにも何も送信されません。テレメトリも要求もありません。
問題の報告や機能の提案はどこでできますか?
GitHub の Feedback リポジトリで Issue を作成してください。バグとアイデア用のフォームがあります (非公開の名前は変更してください)。Marketplace の Q&A タブもご利用いただけます。
変更履歴
1.0.2
- 拡張機能が役に立った後に一度だけ、Marketplace での評価をお願いします。[後で] と [今後表示しない] があり、オプションでオフにもできます。
1.0.1
- Order Members と Structure ウィンドウを、ほかの SmithWorks 拡張機能と共通の SmithWorks ツール バーに追加しました (表示 › ツール バー › SmithWorks)。
1.0.0
- 最初の公開リリース。
収まるコメント
Format Comment は、キャレット位置の
//または///コメント (またはファイルのすべてのコメント) を行の長さ (.editorconfigのmax_line_length、または 120) で折り返します。長い行は分割し、短い行は結合し、長い<summary>は独立した行にします。コード サンプル (<code>)、リスト、区切り線、コメントアウトされたコードはそのままです。