TidySmith
C# 코드를 팀이 원하는 순서로: 미리 보기와 한 번의 실행 취소로 멤버를 정렬하고 그룹화, 규칙에 따른 영역, 줄 길이에 맞춘 주석 줄 바꿈 — 그리고 정리할 수 있는 곳에는 편집기에 회색 점이 표시됩니다.
무료 · Visual Studio 2022 및 2026 · UI 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…는 클래스의 멤버를 종류(상수, 필드, 생성자, 속성, 메서드…), 액세스 수준(public 먼저), 정적 멤버를 인스턴스 멤버보다 먼저, 원하면 이름순으로 정렬합니다 — 옵션 페이지나 .editorconfig에서 설정한 순서대로.
- 먼저 미리 보기: 이동하는 내용의 차이를 보여 줍니다. 적용은 한 번의 편집이므로 실행 취소 한 번으로 모두 되돌릴 수 있습니다. “다시 묻지 않음”을 선택하면 미리 보기가 꺼집니다.
- 대상: 캐럿이 있는 클래스 또는 파일 전체(미리 보기에서 선택), 또는 솔루션 탐색기에서 선택한 모든 C# 파일 — 파일, 폴더, 프로젝트.
- 멤버와 함께 이동하는 것: 해당 주석, 문서, 특성. 빈 줄은 원래대로 유지되고, 그룹 사이에는 빈 줄 하나가 들어갑니다.
- 절대 건드리지 않는 것:
#if또는#region안의 멤버는 해당 블록 안에서만 정렬됩니다. 중괄호와 같은 줄에 멤버가 있거나, 한 줄에 멤버가 둘 있거나, 구문 오류가 있는 클래스는 그대로 둡니다. 생성된 파일(*.g.cs,*.Designer.cs)은 건너뜁니다.
시작용 사전 설정: TidySmith(오버로드와 인터페이스 구현을 함께 유지), StyleCop(SA1201, SA1202, SA1204 — 엄격하게 액세스 수준순), CodeMaid(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, 열거형 멤버, 목록 항목을 정렬합니다. 쉼표는 목록에 필요한 위치에 남습니다. 평면 목록 — 한 줄에 항목 하나, 같은 들여쓰기, 빈 줄 없음, 문 없음 — 만 정렬하므로 실수로 메서드나 파일 전체를 선택해도 뒤섞이지 않습니다. 이유는 상태 표시줄에 표시됩니다.
Join Lines
선택한 줄을 한 줄로 합치거나, 캐럿이 있는 줄을 다음 줄과 합칩니다.
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, 주석, 특성이 제자리에 남습니다. 미리 보기를 보여 주고 실행 취소 한 번이면 됩니다. 순서를 .editorconfig에 둘 수 있습니다. x64 및 ARM64의 Visual Studio 2022 및 2026에서 실행됩니다. C#만 지원하며, 이제 Visual Studio가 자체적으로 하는 기능(코드 정리, 빌드 진행률)은 빠져 있습니다.
클래스가 정렬되지 않은 이유는 무엇인가요?
정렬하면 클래스가 깨지거나 엉망이 될 수 있을 때 TidySmith는 그 클래스를 건드리지 않습니다: 구문 오류, 중괄호와 같은 줄의 멤버, 한 줄에 멤버 둘. #if 또는 #region 안의 멤버는 해당 블록 안에서만 이동합니다. 생성된 파일은 절대 건드리지 않습니다.
변경을 되돌릴 수 있나요?
예. 모든 명령과 모든 저장은 한 번의 편집이므로 Ctrl+Z 한 번으로 되돌릴 수 있습니다. 솔루션 탐색기에서 처리할 때 열려 있지 않은 파일은 디스크에 기록됩니다 — 그 경우에는 버전 관리를 사용하세요.
Sort Selected Lines가 아무것도 하지 않은 이유는 무엇인가요?
평면 목록만 정렬하므로, 코드인 선택 영역 — 문, 블록, 들여쓰기가 다른 줄이나 사이에 빈 줄이 있는 줄 — 은 절대 뒤섞이지 않습니다. 상태 표시줄에 그렇게 표시됩니다.
Add Regions가 아무것도 하지 않습니다.
기본 규칙은 영역 없음입니다. 설정의 [영역] 그룹(명령이 열어 줌)에서 나누는 방법을 선택하거나 .editorconfig에서 tidysmith_regions를 설정하세요.
VB, C++, XAML은요?
TidySmith는 C#용입니다. 요청이 있으면 다른 언어도 지원할 수 있습니다 — Feedback 리포지토리에서 알려 주세요.
TidySmith는 데이터를 전송하나요?
아니요. 모든 작업은 Visual Studio 안에서 사용자의 파일에 대해 실행되며, 어디에도 아무것도 전송되지 않습니다 — 원격 분석도, 요청도 없습니다.
문제를 보고하거나 기능을 제안하려면 어디로 가야 하나요?
GitHub의 Feedback 리포지토리에 이슈를 등록하세요. 버그와 아이디어를 위한 양식이 있습니다(비공개 이름은 바꿔 주세요). 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>), 목록, 구분선, 주석 처리된 코드는 그대로 유지됩니다.