LazowskiAnton · Extensions

TidySmith

C# コードをチームの望む順序に整えます。メンバーはプレビュー付きで並べ替えてグループ化され、元に戻すは 1 回。リージョンはルールどおりに、コメントは行の長さで折り返されます。さらに、整理できる箇所にはエディター内に灰色の点が表示されます。

無料 · Visual Studio 2022 と 2026 · UI は 14 言語 · テレメトリなし

TidySmith を選ぶ理由

Order Members の前後のクラス。定数とフィールドが先頭に、続いてコンストラクター、プロパティ、メソッド

設計から安全

Roslyn の構文ツリー上に構築されています。メンバーはコメント、ドキュメント、属性と一緒に移動し、#if と #region のブロックをまたぐことはありません。安全に並べ替えられないクラスはそのままです。最初にプレビューで差分を表示し、適用は 1 回の元に戻すで取り消せます。

チームの順序

グループの順序、アクセスレベル、静的メンバー、名前。オプション ページで設定するか .editorconfig に記述すれば、全員が同じ結果を得られます。StyleCop と CodeMaid のプリセットが組み込まれています。

マニュアルなしで見つかる

順序が乱れたクラスや長すぎるコメントの下に灰色の点が表示され、Ctrl+. で Visual Studio のアクションの隣に修正が提示されます。コマンドを覚えたら、ヒントはオフにできます。

無料、条件なし

サブスクリプションも「Pro」版もデータ収集もなく、出力ウィンドウや起動時のメッセージもありません。唯一お願いするのは、しばらくお使いいただいた後に、Marketplace での評価です。Visual Studio 2022 と 2026、x64 と ARM64 で動作します。

機能

すべてのコマンドは 編集 › TidySmith とコード エディターのコンテキスト メニュー (右クリック › TidySmith) にあります。Order Members はソリューション エクスプローラーのファイル、フォルダー、プロジェクトのコンテキスト メニューにもあります。

メンバーを並べ替える

Order Members… はクラスのメンバーを種類 (定数、フィールド、コンストラクター、プロパティ、メソッド…)、アクセスレベル (public が先)、静的メンバーをインスタンス メンバーより先に、必要なら名前の順に並べ替えます。順序はオプション ページまたは .editorconfig で設定したとおりです。

開始用のプリセット: TidySmith (オーバーロードとインターフェイスの実装をまとめる)、StyleCop (SA1201、SA1202、SA1204 — 厳密にアクセスレベル順)、CodeMaid (CodeMaid の既定。CodeMaid から移行するチーム向け)。

エディター内のヒント

TidySmith が役立つ箇所では、名前の下に灰色の点が 3 つ表示されます。Visual Studio が自身の提案を示すのと同じ方法です。ポインターを合わせると内容がわかり、Ctrl+. で変更のプレビュー付きの修正が提示されます。

クラス名と長いコメントの下の灰色の点。「メンバーを並べ替える」とそのプレビューが表示された電球
キャレットの位置Ctrl+. で提示されるもの
クラスの名前クラスまたはファイルのメンバーの並べ替え、ルールに従ったリージョンの追加、クラスのリージョンの削除、構造ウィンドウで開く
行の長さを超えるコメントコメントの折り返し
#region 行このリージョンの削除 (コードは残る)
選択した複数の行行の並べ替え (フラットなリストのみ)、行の結合

点が表示されるのは、順序が乱れたクラス、行の長さを超えるコメント、ルールと異なるリージョンだけです。点と電球のアクションには別々のスイッチがあります。「自分が変更したファイルのみ」をオンにすると、古いコードには何も表示されません。

ルールに従ったリージョン

Add Regions to This File… は、プレビューの後、ルールが指定する場所に #region 行を入れます。リージョンはチームで決めることなので、既定はリージョンなしです。選ぶまで、コマンドは設定を開きます。

リージョンのルールと、Fields、Methods、IDisposable のリージョンを持つクラス

StyleCop のルール SA1124 はリージョンを禁止しています。そのため既定はリージョンなしで、この設定では保存時の整理がリージョンを削除します。

収まるコメント

Format Comment は、キャレット位置の // または /// コメント (またはファイルのすべてのコメント) を行の長さ (.editorconfig の max_line_length、または 120) で折り返します。長い行は分割し、短い行は結合し、長い <summary> は独立した行にします。コード サンプル (<code>)、リスト、区切り線、コメントアウトされたコードはそのままです。

Format Comment の前後のドキュメント コメント

保存時に整理

C# ファイルの保存時に、TidySmith はメンバーの並べ替え、ルールに従ったリージョンの設定、コメントの折り返し、行末の空白と余分な空行の削除を行えます。各手順には個別のスイッチがあります。対象は保存するファイルだけで、生成されたファイルは対象外です。変更内容はステータス バーに表示され、Ctrl+Z で元に戻せます。Tidy This File は同じ手順を必要なときに実行します。

既定ではオフです。Order Members がチームの望む結果を出せるようになってからオンにしてください。そうしないと、古いファイルを初めて保存したときに全体が並べ替えられます。

構造ウィンドウ

表示 › その他のウィンドウ › TidySmith Structure: アクティブな C# ファイルの型とメンバーを表示します。キャレットに追従し、クリックでメンバーへ移動、検索で絞り込み、メンバーを別のメンバーの上にドラッグするとそこへ移動します (Order Members と同じ安全な移動)。メソッドには長さとサイクロマティック複雑度が表示され、オプション ページの上限を超えるとオレンジ色になります。

クラスのメンバーと、オレンジ色で示された長いメソッドを表示する構造ウィンドウ

小さなヘルパー

CodeMaid にあって恋しくなるコマンドを、編集 › TidySmith とエディターのコンテキスト メニューに。

Switch File

現在のファイルに対応するファイル (マークアップとそのコード、リソース ファイルとそのデザイナー、コードとそのテスト) を、ソリューション エクスプローラーで探さずに開きます。

切り替え元切り替え先 (と戻り)
MainWindow.xamlMainWindow.xaml.cs
Order.razorOrder.razor.cs
Index.cshtmlIndex.cshtml.cs
Strings.resxStrings.Designer.cs
MainForm.csMainForm.Designer.cs
OrderService.csOrderServiceTests.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 に値がある場合はそちらが優先されます。

TidySmith のオプション ページ
オプション ページ。

リポジトリごと: .editorconfig

ルールをコードの隣に置けば、チーム全員が同じ結果を得られます。.editorconfig の値はオプション ページより優先されます (「.editorconfig の順序を使用する」がオフの場合を除く)。

[*.cs]
tidysmith_member_order = stylecop
tidysmith_regions = kind
tidysmith_region_min = 2
max_line_length = 120
キー値
tidysmith_member_ordertidysmith、stylecop、codemaid、または順序どおりのグループ: constants, fields, constructors, properties, methods…
tidysmith_regionsnone、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

1.0.1

1.0.0