TidySmith
Код C# в том порядке, который нужен вашей команде: члены отсортированы и сгруппированы, с предпросмотром и одной отменой; регионы по вашим правилам; комментарии перенесены по длине строки — а серые точки в редакторе показывают, где можно навести порядок.
Бесплатно · Visual Studio 2022 и 2026 · 14 языков интерфейса · без телеметрии
Зачем TidySmith

Безопасно по устройству
Работает на синтаксическом дереве Roslyn: члены перемещаются вместе со своими комментариями, документацией и атрибутами; границы блоков #if и #region никогда не пересекаются; классы, которые нельзя безопасно упорядочить, не трогаются. Сначала предпросмотр показывает изменения, а «Применить» отменяется одним действием.
Порядок вашей команды
Порядок групп, доступ, статические члены, имена — задайте их на странице параметров или запишите в .editorconfig, и у всех получится одинаковый результат. Предустановки для StyleCop и CodeMaid уже встроены.
Понятно без инструкции
Серые точки под классом с нарушенным порядком или под слишком длинным комментарием; Ctrl+. предлагает исправление рядом с действиями Visual Studio. Когда освоите команды, подсказки можно выключить.
Бесплатно и без подвохов
Без подписок, без «pro»-версии, без сбора данных и без сообщений в окне «Вывод» или при запуске. Единственное, о чём мы когда-нибудь попросим, — после того как вы им немного попользуетесь, — поставить оценку в Marketplace. Работает в Visual Studio 2022 и 2026, x64 и ARM64.
Возможности
- Упорядочивание членов класса, файла или файлов, выбранных в обозревателе решений, — с предпросмотром того, что переместится.
- Подсказки в редакторе: серые точки там, где можно навести порядок, исправление — в лампочке (Ctrl+.).
- Регионы по вашим правилам: по группе членов, по уровню доступа или по обоим, с вашими именами регионов; или вообще без регионов.
- Комментарии по ширине: комментарии
//и///переносятся по длине строки, короткие строки объединяются. - Порядок при сохранении: выбранные шаги выполняются при сохранении файла C#; по умолчанию выключено.
- Окно структуры: члены файла, размер и сложность методов, перестановка перетаскиванием.
- Полезные мелочи: переход к связанному файлу, сортировка и объединение строк, поиск файла в обозревателе решений, сворачивание и разворачивание только регионов.
Все команды находятся в меню Правка › TidySmith и в контекстном меню редактора кода (правый щелчок › TidySmith); Order Members — ещё и в контекстном меню файлов, папок и проектов в обозревателе решений.
Упорядочивание членов
Order Members… сортирует члены класса по виду (константы, поля, конструкторы, свойства, методы…), затем по доступу (сначала открытые), статические перед членами экземпляра и, если хотите, по имени — в порядке, заданном на странице параметров или в .editorconfig.
- Сначала предпросмотр: сравнение того, что переместится; Применить — одна правка, поэтому одна отмена возвращает всё. «Больше не спрашивать» выключает предпросмотр.
- Где: класс под курсором или весь файл (выбирается в предпросмотре) либо все файлы C#, выбранные в обозревателе решений, — файлы, папки, проекты.
- Что перемещается вместе с членом: его комментарии, документация и атрибуты. Пустые строки остаются такими, какими были; между группами ставится одна пустая строка.
- Что никогда не трогается: члены внутри
#ifили#regionупорядочиваются только в пределах своего блока; классы с членом на строке фигурной скобки, двумя членами на одной строке или синтаксическими ошибками остаются как есть; сгенерированные файлы (*.g.cs,*.Designer.cs) пропускаются.
Предустановки для начала: TidySmith (перегрузки и реализации интерфейсов держатся вместе), StyleCop (SA1201, SA1202, SA1204 — строго по доступу) и CodeMaid (порядок CodeMaid по умолчанию, для команд, которые с него переходят).
Подсказки в редакторе
Там, где TidySmith может помочь, под именем появляются три серые точки — так Visual Studio отмечает и собственные предложения. Указатель на них объясняет, в чём дело; Ctrl+. предлагает исправление с предпросмотром изменений.

| Курсор на | Ctrl+. предлагает |
|---|---|
| Имени класса | Упорядочить члены класса или файла, добавить регионы по вашим правилам, удалить регионы класса, открыть в окне структуры |
| Комментарии длиннее длины строки | Перенести комментарий |
Строке #region | Удалить этот регион (код останется) |
| Нескольких выделенных строках | Отсортировать строки (только простой список), объединить строки |
Точки появляются у класса с нарушенным порядком, у комментария длиннее длины строки и у регионов, расходящихся с вашими правилами, — и больше нигде. У точек и у действий в лампочке отдельные переключатели; «Только в файлах, которые я изменил» оставляет старый код в покое.
Регионы по вашим правилам
Add Regions to This File… расставляет строки #region там, где говорят ваши правила, после предпросмотра. Регионы — решение команды, поэтому по умолчанию стоит без регионов: пока вы не выберете, команда открывает настройки.

- Как делить: один регион на группу членов (Fields, Methods…), на уровень доступа (Public, Private…) или и то и другое (Public methods).
- Ваши имена: у каждой группы своё имя региона; группы с одинаковым именем делят один регион, выключенная группа остаётся вне регионов. Реализации интерфейсов могут получить регион с именем интерфейса (IDisposable).
- Без шума: если членов меньше минимума (по умолчанию 2), регион не создаётся; регион вокруг одного конструктора никому не помогает.
- Запускайте снова в любой момент: регионы внутри классов перестраиваются, а не вкладываются друг в друга. Сначала члены упорядочиваются, чтобы каждая группа была целиком.
- Вручную: 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, члены enum или элементы списка; запятые остаются там, где они нужны списку. Сортируется только простой список — один элемент на строку, одинаковый отступ, без пустых строк и операторов, — поэтому случайно выделенный метод или весь файл никогда не перемешается; строка состояния объясняет почему.
Join Lines
Объединяет выделенные строки в одну или строку под курсором со следующей.
Find This File in Solution Explorer
Выделяет файл из редактора в обозревателе решений.
Collapse и Expand All Regions
Сворачивает или разворачивает только блоки #region; методы остаются как есть. В отличие от Ctrl+M, Ctrl+O (сворачивает и методы) и Ctrl+M, Ctrl+L (всё).
По умолчанию никакие сочетания клавиш не заняты — клавиши Visual Studio остаются как есть. Назначьте любую команду в разделе Средства › Параметры › Среда › Клавиатура: введите TidySmith. в поле «Показать команды, содержащие».
Настройки
Средства → Параметры → SmithWorks → TidySmith. У каждого параметра есть описание.
| Параметр | По умолчанию |
|---|---|
| Действия TidySmith в лампочке (Ctrl+.) | вкл. |
| Серые точки там, где можно навести порядок | вкл. |
| Порядок членов | предустановка 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, комментарии и атрибуты остаются на своих местах; он показывает предпросмотр и отменяется одним действием; порядок можно хранить в .editorconfig; он работает в Visual Studio 2022 и 2026 на x64 и ARM64. Он поддерживает только C# и не дублирует то, что Visual Studio теперь умеет сама (очистка кода, ход сборки).
Почему класс не упорядочился?
TidySmith не трогает класс, если упорядочивание может его сломать или исказить: синтаксическая ошибка, член на строке фигурной скобки, два члена на одной строке. Члены внутри #if или #region перемещаются только в пределах своего блока. Сгенерированные файлы никогда не трогаются.
Можно ли отменить изменение?
Да: каждая команда и каждое сохранение — одна правка, поэтому одно нажатие Ctrl+Z всё возвращает. В обозревателе решений неоткрытые файлы записываются прямо на диск — там пользуйтесь системой контроля версий.
Почему Sort Selected Lines ничего не сделал?
Он сортирует только простой список, поэтому выделение, которое является кодом, — операторы, блоки, строки с разными отступами или с пустыми строками между ними — никогда не перемешивается. Об этом сообщает строка состояния.
Add Regions ничего не делает.
По умолчанию правило — без регионов. Выберите, как делить на регионы, в группе «Регионы» настроек (команда её открывает) или задайте tidysmith_regions в .editorconfig.
А VB, C++ или XAML?
TidySmith предназначен для C#. Другие языки могут появиться, если о них попросят, — напишите в репозитории Feedback.
TidySmith отправляет какие-нибудь данные?
Нет. Всё работает внутри Visual Studio с вашими файлами; ничего никуда не отправляется — ни телеметрии, ни запросов.
Где сообщить о проблеме или предложить возможность?
Создайте issue в репозитории Feedback на GitHub — там есть формы для ошибок и идей (пожалуйста, замените закрытые имена). Можно также воспользоваться вкладкой Q&A на Marketplace.
История изменений
1.0.2
- Однократная просьба оценить расширение в Marketplace, когда оно уже было полезным, — с кнопками «Позже» и «Больше не спрашивать» и настройкой, чтобы её отключить.
1.0.1
- Order Members и окно Structure на панели инструментов SmithWorks, общей с другими расширениями SmithWorks (Вид › Панели инструментов › SmithWorks).
1.0.0
- Первый публичный выпуск.
Комментарии по ширине
Format Comment переносит комментарий
//или///под курсором (или все комментарии файла) по длине строки —max_line_lengthиз.editorconfigили 120. Длинные строки разбиваются, короткие объединяются, длинный<summary>получает отдельные строки. Примеры кода (<code>), списки, строки-разделители и закомментированный код остаются как есть.