TidySmith
Kod C# uporządkowany tak, jak chce Twój zespół: składowe posortowane i pogrupowane, z podglądem i jednym cofnięciem; regiony według Twoich reguł; komentarze zawinięte do długości wiersza — a szare kropki w edytorze pokazują, co można uporządkować.
Bezpłatnie · Visual Studio 2022 i 2026 · 14 języków interfejsu · bez telemetrii
Dlaczego TidySmith

Bezpieczny z założenia
Oparty na drzewie składni Roslyn: składowe przenoszą się razem ze swoimi komentarzami, dokumentacją i atrybutami; granice bloków #if i #region nigdy nie są przekraczane; klasy, których nie da się bezpiecznie uporządkować, pozostają nietknięte. Podgląd najpierw pokazuje różnice, a „Zastosuj” to jedno cofnięcie.
Kolejność Twojego zespołu
Kolejność grup, dostęp, składowe statyczne, nazwy — ustaw to na stronie opcji albo zapisz w .editorconfig, a każdy dostanie ten sam wynik. Ustawienia wstępne dla StyleCop i CodeMaid są wbudowane.
Do odkrycia bez instrukcji
Szare kropki pod klasą o zaburzonej kolejności lub pod zbyt długim komentarzem; Ctrl+. proponuje poprawkę obok akcji Visual Studio. Gdy poznasz polecenia, wyłącz wskazówki.
Bezpłatnie, bez haczyków
Bez subskrypcji, bez wersji „pro”, bez zbierania danych i bez komunikatów w oknie „Dane wyjściowe” ani przy uruchamianiu. Jedyne, o co kiedykolwiek poprosimy — gdy już przez jakiś czas będziesz z niego korzystać — to ocena w Marketplace. Działa w Visual Studio 2022 i 2026, x64 i ARM64.
Funkcje
- Porządkowanie składowych klasy, pliku lub plików zaznaczonych w Eksploratorze rozwiązań — z podglądem tego, co się przesunie.
- Wskazówki w edytorze: szare kropki tam, gdzie można coś uporządkować, poprawka w żarówce (Ctrl+.).
- Regiony według Twoich reguł: według grupy składowych, dostępu lub obu, z Twoimi nazwami regionów; albo bez regionów w ogóle.
- Komentarze, które się mieszczą: komentarze
//i///zawinięte do długości wiersza, krótkie wiersze połączone. - Porządkowanie przy zapisie: wybrane kroki działają przy zapisywaniu pliku C#; domyślnie wyłączone.
- Okno struktury: składowe pliku, rozmiar i złożoność metod, zmiana kolejności przeciąganiem.
- Małe pomocniki: przejście do powiązanego pliku, sortowanie i łączenie wierszy, znajdowanie pliku w Eksploratorze rozwiązań, zwijanie lub rozwijanie samych regionów.
Każde polecenie jest w menu Edytuj › TidySmith i w menu kontekstowym edytora kodu (prawy przycisk › TidySmith); Order Members także w menu kontekstowym plików, folderów i projektów w Eksploratorze rozwiązań.
Porządkowanie składowych
Order Members… sortuje składowe klasy według rodzaju (stałe, pola, konstruktory, właściwości, metody…), potem według dostępu (najpierw publiczne), statyczne przed składowymi wystąpień i, jeśli chcesz, według nazwy — w kolejności ustawionej na stronie opcji lub w .editorconfig.
- Najpierw podgląd: różnice pokazujące, co się przesunie; Zastosuj to jedna edycja, więc jedno cofnięcie wycofuje wszystko. „Nie pytaj ponownie” wyłącza podgląd.
- Gdzie: klasa przy kursorze lub cały plik (wybierane w podglądzie) albo każdy plik C# zaznaczony w Eksploratorze rozwiązań — pliki, foldery, projekty.
- Co przenosi się razem ze składową: jej komentarze, dokumentacja i atrybuty. Puste wiersze pozostają takie, jakie były; między grupami wstawiany jest jeden pusty wiersz.
- Czego nigdy nie rusza: składowe wewnątrz
#iflub#regionsą porządkowane tylko w obrębie swojego bloku; klasy ze składową w wierszu nawiasu klamrowego, dwiema składowymi w jednym wierszu lub błędami składni pozostają bez zmian; pliki generowane (*.g.cs,*.Designer.cs) są pomijane.
Ustawienia wstępne na początek: TidySmith (przeciążenia i implementacje interfejsów razem), StyleCop (SA1201, SA1202, SA1204 — ściśle według dostępu) i CodeMaid (domyślna kolejność CodeMaid, dla zespołów, które z niego przechodzą).
Wskazówki w edytorze
Tam, gdzie TidySmith może pomóc, pod nazwą pojawiają się trzy szare kropki — tak, jak Visual Studio oznacza własne sugestie. Wskaźnik na nich mówi, o co chodzi; Ctrl+. proponuje poprawkę z podglądem zmiany.

| Kursor na | Ctrl+. proponuje |
|---|---|
| Nazwie klasy | Uporządkuj składowe klasy lub pliku, dodaj regiony według Twoich reguł, usuń regiony klasy, otwórz w oknie struktury |
| Komentarzu dłuższym niż długość wiersza | Zawiń komentarz |
Wierszu #region | Usuń ten region (kod zostaje) |
| Kilku zaznaczonych wierszach | Sortuj wiersze (tylko płaska lista), połącz wiersze |
Kropki pojawiają się przy klasie o zaburzonej kolejności, komentarzu dłuższym niż długość wiersza i regionach różniących się od Twoich reguł — i nigdzie więcej. Kropki i akcje w żarówce mają osobne przełączniki; „Tylko w plikach, które zmieniłem” zostawia stary kod w spokoju.
Regiony według Twoich reguł
Add Regions to This File… wstawia wiersze #region tam, gdzie mówią Twoje reguły, po podglądzie. Regiony to decyzja zespołu, dlatego domyślnie jest bez regionów: dopóki nie wybierzesz, polecenie otwiera ustawienia.

- Jak dzielić: jeden region na grupę składowych (Fields, Methods…), na poziom dostępu (Public, Private…) lub jedno i drugie (Public methods).
- Twoje nazwy: każda grupa ma swoją nazwę regionu; grupy o tej samej nazwie dzielą region, wyłączona grupa pozostaje poza regionami. Implementacje interfejsów mogą dostać region nazwany tak jak interfejs (IDisposable).
- Bez szumu: mniej składowych niż minimum (domyślnie 2) nie dostaje regionu; region wokół jednego konstruktora nikomu nie pomaga.
- Uruchamiaj ponownie kiedy chcesz: regiony wewnątrz klas są odbudowywane, a nie zagnieżdżane. Składowe są najpierw porządkowane, więc każda grupa jest w jednym kawałku.
- Ręcznie: Add Region Around Selection (kursor czeka po
#regionna nazwę), Remove Region at Caret, Remove Regions in This File — znikają tylko wiersze#regioni#endregion, kod zostaje.
Reguła StyleCop SA1124 zabrania regionów; dlatego domyślnie regionów nie ma — i dlatego porządkowanie przy zapisie z tym ustawieniem je usuwa.
Porządkowanie przy zapisie
Gdy plik C# jest zapisywany, TidySmith może uporządkować jego składowe, ustawić regiony zgodnie z regułami, zawinąć komentarze i usunąć spacje na końcu wierszy oraz nadmiarowe puste wiersze — każdy krok ma własny przełącznik. Tylko zapisywany plik, nigdy pliki generowane; pasek stanu informuje, co się zmieniło, a Ctrl+Z to cofa. Tidy This File wykonuje te same kroki na żądanie.
Domyślnie wyłączone. Włącz, gdy Order Members daje wynik, jakiego chce Twój zespół — inaczej pierwszy zapis starego pliku przestawi w nim wszystko.
Okno struktury
Widok › Inne okna › TidySmith Structure: typy i składowe aktywnego pliku C#. Okno podąża za kursorem, kliknięcie przechodzi do składowej, wyszukiwanie filtruje, a składowa przeciągnięta na inną przenosi się tam — tym samym bezpiecznym ruchem co w Order Members. Metody pokazują swoją długość i złożoność cyklomatyczną; po przekroczeniu limitów ze strony opcji zmieniają kolor na pomarańczowy.

Małe pomocniki
Polecenia, których brakowało po CodeMaid, w menu Edytuj › TidySmith i w menu kontekstowym edytora.
Switch File
Otwiera plik, który należy do bieżącego — znaczniki i ich kod, plik zasobów i jego projektanta, kod i jego testy — bez szukania go w Eksploratorze rozwiązań.
| Z | Do (i z powrotem) |
|---|---|
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 — także w projekcie testowym rozwiązania; również …Test.cs i ….Tests.cs |
Menu podaje cel („Switch to OrderServiceTests.cs”) i jest wyłączone, gdy nie ma dokąd przejść. Najlepiej sprawdza się z własnym skrótem — patrz niżej.
Sort Selected Lines
Sortuje dyrektywy using, składowe enum lub elementy listy; przecinki zostają tam, gdzie lista ich potrzebuje. Sortowana jest tylko płaska lista — jeden element na wiersz, to samo wcięcie, bez pustych wierszy i instrukcji — więc przypadkowo zaznaczona metoda lub cały plik nigdy nie zostaną pomieszane; pasek stanu mówi dlaczego.
Join Lines
Łączy zaznaczone wiersze w jeden albo wiersz przy kursorze z następnym.
Find This File in Solution Explorer
Zaznacza plik z edytora w Eksploratorze rozwiązań.
Collapse i Expand All Regions
Zwija lub rozwija tylko bloki #region; metody pozostają bez zmian. W odróżnieniu od Ctrl+M, Ctrl+O (zwija też metody) i Ctrl+M, Ctrl+L (wszystko).
Domyślnie żaden skrót nie jest zajęty — klawisze Visual Studio pozostają bez zmian. Przypisz dowolne polecenie w Narzędzia › Opcje › Środowisko › Klawiatura: wpisz TidySmith. w polu „Pokaż polecenia zawierające”.
Ustawienia
Narzędzia → Opcje → SmithWorks → TidySmith. Każda opcja ma opis.
| Opcja | Domyślnie |
|---|---|
| Akcje TidySmith w żarówce (Ctrl+.) | wł. |
| Szare kropki tam, gdzie można coś uporządkować | wł. |
| Kolejność składowych | ustawienie wstępne TidySmith |
| Podgląd przed porządkowaniem | wł. |
| Regiony | bez regionów |
| Długość wiersza komentarzy | 120 |
| Porządkowanie przy zapisie | wył. |
| Długa metoda (wiersze) · złożona metoda | 60 · 10 |
| Proś o ocenę w Marketplace | wł. |
Ustawienia są przechowywane w %LocalAppData%\TidySmith; pierwszeństwo ma .editorconfig, jeśli zawiera wartość.

Dla repozytorium: .editorconfig
Umieść reguły obok kodu, a cały zespół dostanie ten sam wynik; wartość w .editorconfig ma pierwszeństwo przed stroną opcji (chyba że opcja „Użyj kolejności z .editorconfig” jest wyłączona).
[*.cs]
tidysmith_member_order = stylecop
tidysmith_regions = kind
tidysmith_region_min = 2
max_line_length = 120
| Klucz | Wartości |
|---|---|
tidysmith_member_order | tidysmith, stylecop, codemaid lub grupy w kolejności: constants, fields, constructors, properties, methods… |
tidysmith_regions | none, kind, access, kind_access |
tidysmith_region_min | Najmniejsza liczba składowych, dla której tworzony jest region: 2 |
max_line_length | Długość wiersza, do której zawijane są komentarze |
FAQ
Czym różni się od CodeMaid?
TidySmith działa na drzewie składni Roslyn zamiast na starym modelu kodu, więc #if, komentarze i atrybuty zostają na swoim miejscu; pokazuje podgląd i cofa się jednym krokiem; kolejność może być zapisana w .editorconfig; działa w Visual Studio 2022 i 2026 na x64 i ARM64. Obsługuje tylko C# i pomija to, co Visual Studio robi teraz samo (oczyszczanie kodu, postęp kompilacji).
Dlaczego klasa nie została uporządkowana?
TidySmith zostawia klasę w spokoju, gdy porządkowanie mogłoby ją zepsuć lub zniekształcić: błąd składni, składowa w wierszu nawiasu klamrowego, dwie składowe w jednym wierszu. Składowe wewnątrz #if lub #region przesuwają się tylko w obrębie swojego bloku. Pliki generowane nigdy nie są ruszane.
Czy mogę cofnąć zmianę?
Tak: każde polecenie i każdy zapis to jedna edycja, więc jedno Ctrl+Z ją cofa. W Eksploratorze rozwiązań pliki, które nie są otwarte, są zapisywane na dysk — tam użyj kontroli wersji.
Dlaczego Sort Selected Lines nic nie zrobiło?
Sortuje tylko płaską listę, więc zaznaczenie, które jest kodem — instrukcje, bloki, wiersze z różnymi wcięciami lub pustymi wierszami pomiędzy — nigdy nie zostanie pomieszane. Pasek stanu o tym informuje.
Add Regions nic nie robi.
Domyślna reguła to bez regionów. Wybierz sposób podziału w grupie Regiony w ustawieniach (polecenie ją otwiera) albo ustaw tidysmith_regions w .editorconfig.
A co z VB, C++ lub XAML?
TidySmith jest dla C#. Inne języki mogą się pojawić, jeśli będą o nie prośby — napisz w repozytorium Feedback.
Czy TidySmith wysyła jakieś dane?
Nie. Wszystko działa wewnątrz Visual Studio na Twoich plikach; nic nie jest nigdzie wysyłane — bez telemetrii, bez żądań.
Gdzie zgłosić problem lub zaproponować funkcję?
Otwórz zgłoszenie w repozytorium Feedback na GitHubie — są tam formularze dla błędów i pomysłów (prosimy zmienić prywatne nazwy). Możesz też skorzystać z karty Q&A w Marketplace.
Historia zmian
1.0.2
- Jednorazowa prośba o ocenę w Marketplace, gdy rozszerzenie okaże się przydatne — z opcjami Później i Nie pytaj więcej oraz ustawieniem, które ją wyłącza.
1.0.1
- Order Members i okno Structure na pasku narzędzi SmithWorks, wspólnym z innymi rozszerzeniami SmithWorks (Widok › Paski narzędzi › SmithWorks).
1.0.0
- Pierwsze publiczne wydanie.
Komentarze, które się mieszczą
Format Comment zawija komentarz
//lub///przy kursorze (albo każdy komentarz pliku) do długości wiersza —max_line_lengthz.editorconfiglub 120. Długie wiersze są łamane, krótkie łączone, długi<summary>dostaje własne wiersze. Przykłady kodu (<code>), listy, wiersze separatorów i zakomentowany kod pozostają bez zmian.