TidySmith
Código C# colocado na ordem que sua equipe quer: membros ordenados e agrupados com uma visualização e um único Desfazer, regiões pelas suas regras, comentários quebrados no seu comprimento de linha — e pontos cinza no editor onde algo pode ser arrumado.
Gratuito · Visual Studio 2022 e 2026 · 14 idiomas de interface · sem telemetria
Por que o TidySmith

Seguro por design
Construído sobre a árvore de sintaxe do Roslyn: os membros se movem com seus comentários, documentação e atributos; blocos #if e #region nunca são atravessados; classes que não podem ser ordenadas com segurança ficam intocadas. Uma visualização mostra o diff primeiro, e Aplicar se desfaz com um único Desfazer.
A ordem da sua equipe
A ordem dos grupos, o acesso, os membros estáticos, os nomes — defina na página de opções ou coloque no .editorconfig, para que todos tenham o mesmo resultado. Predefinições para StyleCop e CodeMaid já vêm incluídas.
Descoberto sem manual
Pontos cinza sob uma classe fora de ordem ou um comentário longo demais; Ctrl+. oferece a correção junto das ações do Visual Studio. Quando você já conhecer os comandos, desative as dicas.
Gratuito, sem pegadinhas
Sem assinatura, sem versão “pro”, sem coleta de dados, sem mensagens na janela Saída ou na inicialização. A única coisa que vamos pedir — depois que você a tiver usado por um tempo — é uma avaliação no Marketplace. Funciona no Visual Studio 2022 e 2026, x64 e ARM64.
Recursos
- Ordenar membros de uma classe, de um arquivo ou dos arquivos selecionados no Gerenciador de Soluções — com uma visualização do que se move.
- Dicas no editor: pontos cinza onde algo pode ser arrumado, a correção na lâmpada (Ctrl+.).
- Regiões pelas suas regras: por grupo de membros, por acesso ou ambos, com seus nomes de região; ou nenhuma região.
- Comentários que cabem: comentários
//e///quebrados no seu comprimento de linha, linhas curtas unidas. - Arrumar ao salvar: as etapas que você escolher são executadas quando um arquivo C# é salvo; desativado por padrão.
- Janela Structure: os membros do arquivo, tamanho e complexidade dos métodos, arrastar para reordenar.
- Pequenos utilitários: alternar para o arquivo relacionado, ordenar e unir linhas, localizar o arquivo no Gerenciador de Soluções, recolher ou expandir apenas as regiões.
Todos os comandos estão em Editar › TidySmith e no menu de contexto do editor de código (clique com o botão direito › TidySmith); Order Members também no menu de contexto de arquivos, pastas e projetos no Gerenciador de Soluções.
Ordenar membros
Order Members… ordena os membros de uma classe por tipo (constantes, campos, construtores, propriedades, métodos…), depois por acesso (public primeiro), estáticos antes dos de instância e, se você quiser, por nome — na ordem definida na página de opções ou no .editorconfig.
- Primeiro uma visualização: o diff do que se move; Aplicar é uma única edição, então um Desfazer reverte tudo. “Não perguntar novamente” desativa a visualização.
- Onde: a classe no cursor ou o arquivo inteiro (escolhido na visualização), ou todos os arquivos C# selecionados no Gerenciador de Soluções — arquivos, pastas, projetos.
- O que se move com um membro: seus comentários, documentação e atributos. As linhas em branco ficam como estavam; uma linha em branco vai entre os grupos.
- O que nunca é tocado: membros dentro de
#ifou#regionsão ordenados apenas dentro do seu bloco; classes com um membro na linha de uma chave, dois membros em uma linha ou erros de sintaxe ficam como estão; arquivos gerados (*.g.cs,*.Designer.cs) são ignorados.
Predefinições para começar: TidySmith (sobrecargas e implementações de interface mantidas juntas), StyleCop (SA1201, SA1202, SA1204 — estritamente por acesso) e CodeMaid (o padrão do CodeMaid, para equipes que vêm dele).
Dicas no editor
Onde o TidySmith pode ajudar, o nome recebe três pontos cinza — do jeito que o Visual Studio marca as próprias sugestões. O ponteiro sobre eles diz o quê; Ctrl+. oferece a correção, com uma visualização da alteração.

| Cursor em | Ctrl+. oferece |
|---|---|
| O nome de uma classe | Ordenar membros da classe ou do arquivo, adicionar regiões pelas suas regras, remover as regiões da classe, abrir na janela Structure |
| Um comentário maior que o comprimento da linha | Quebrar o comentário |
Uma linha #region | Remover esta região (o código fica) |
| Várias linhas selecionadas | Ordenar linhas (só uma lista simples), unir linhas |
Os pontos aparecem para uma classe fora de ordem, um comentário maior que o comprimento da linha e regiões que diferem das suas regras — nada mais. Os pontos e as ações da lâmpada têm chaves separadas; “Somente em arquivos que alterei” deixa o código antigo em paz.
Regiões pelas suas regras
Add Regions to This File… coloca linhas #region onde suas regras mandam, depois de uma visualização. Regiões são uma decisão da equipe, então o padrão é sem regiões: o comando abre as configurações até você escolher.

- Como dividir: uma região por grupo de membros (Fields, Methods…), por acesso (Public, Private…) ou ambos (Public methods).
- Seus nomes: cada grupo tem seu nome de região; grupos com o mesmo nome compartilham uma região, um grupo desativado fica fora das regiões. Implementações de interface podem ganhar uma região com o nome da interface (IDisposable).
- Sem ruído: menos membros que o mínimo (2 por padrão) não recebem região; uma região em volta de um único construtor não ajuda ninguém.
- Execute de novo quando quiser: as regiões dentro das classes são reconstruídas, não aninhadas. Os membros são ordenados primeiro, então cada grupo fica em um só bloco.
- À mão: Add Region Around Selection (o cursor espera o nome depois de
#region), Remove Region at Caret, Remove Regions in This File — só as linhas#regione#endregionsaem, o código fica.
A regra SA1124 do StyleCop proíbe regiões; é por isso que o padrão é sem regiões — e por isso arrumar ao salvar as remove com essa configuração.
Arrumar ao salvar
Quando um arquivo C# é salvo, o TidySmith pode ordenar seus membros, colocar regiões conforme as regras, quebrar comentários e remover espaços à direita e linhas em branco extras — cada etapa tem sua própria chave. Somente o arquivo que está sendo salvo, nunca arquivos gerados; a barra de status informa o que mudou, e Ctrl+Z desfaz. Tidy This File executa as mesmas etapas sob demanda.
Desativado por padrão. Ative quando Order Members der o resultado que sua equipe quer — senão o primeiro salvamento de um arquivo antigo reordena tudo.
Janela Structure
Exibir › Outras Janelas › TidySmith Structure: os tipos e membros do arquivo C# ativo. Ela acompanha o cursor, um clique leva ao membro, a pesquisa filtra, e um membro arrastado sobre outro se move para lá — o mesmo movimento seguro de Order Members. Os métodos mostram seu comprimento e complexidade ciclomática; além dos limites da página de opções, ficam laranja.

Pequenos utilitários
Os comandos de que as pessoas sentiam falta no CodeMaid, em Editar › TidySmith e no menu de contexto do editor.
Switch File
Abre o arquivo que pertence ao atual — a marcação e seu código, um arquivo de recursos e seu designer, o código e seus testes — sem procurá-lo no Gerenciador de Soluções.
| De | Para (e de volta) |
|---|---|
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 — também em um projeto de teste da solução; …Test.cs e ….Tests.cs também |
O menu mostra o destino (“Switch to OrderServiceTests.cs”) e fica desativado quando não há para onde ir. Brilha com uma tecla só sua — veja abaixo.
Sort Selected Lines
Ordena usings, membros de enum ou os itens de uma lista; as vírgulas ficam onde a lista precisa delas. Só uma lista simples é ordenada — um item por linha, mesmo recuo, sem linhas em branco, sem instruções — então um método ou um arquivo inteiro selecionado por engano nunca é embaralhado; a barra de status diz por quê.
Join Lines
Une as linhas selecionadas em uma só, ou a linha do cursor com a seguinte.
Find This File in Solution Explorer
Seleciona no Gerenciador de Soluções o arquivo aberto no editor.
Collapse e Expand All Regions
Recolhe ou expande apenas os blocos #region; os métodos ficam como estão. Diferente de Ctrl+M, Ctrl+O (que recolhe também os métodos) e Ctrl+M, Ctrl+L (tudo).
Nenhum atalho é ocupado por padrão — as teclas do Visual Studio ficam como estão. Associe qualquer comando em Ferramentas › Opções › Ambiente › Teclado: digite TidySmith. em “Mostrar comandos contendo”.
Configurações
Ferramentas → Opções → SmithWorks → TidySmith. Cada opção tem uma descrição.
| Opção | Padrão |
|---|---|
| Ações do TidySmith na lâmpada (Ctrl+.) | ativado |
| Pontos cinza onde algo pode ser arrumado | ativado |
| Ordem dos membros | predefinição TidySmith |
| Visualização antes de ordenar | ativado |
| Regiões | sem regiões |
| Comprimento da linha dos comentários | 120 |
| Arrumar ao salvar | desativado |
| Método longo (linhas) · método complexo | 60 · 10 |
| Pedir uma avaliação no Marketplace | ativado |
As configurações são armazenadas em %LocalAppData%\TidySmith; o .editorconfig prevalece onde tem um valor.

Por repositório: .editorconfig
Coloque as regras junto do código, e toda a equipe terá o mesmo resultado; um valor no .editorconfig prevalece sobre a página de opções (a menos que “Usar a ordem do .editorconfig” esteja desativado).
[*.cs]
tidysmith_member_order = stylecop
tidysmith_regions = kind
tidysmith_region_min = 2
max_line_length = 120
| Chave | Valores |
|---|---|
tidysmith_member_order | tidysmith, stylecop, codemaid, ou os grupos em ordem: constants, fields, constructors, properties, methods… |
tidysmith_regions | none, kind, access, kind_access |
tidysmith_region_min | O mínimo de membros para criar uma região: 2 |
max_line_length | O comprimento de linha em que os comentários são quebrados |
Perguntas frequentes
Qual a diferença para o CodeMaid?
O TidySmith trabalha na árvore de sintaxe do Roslyn em vez do antigo modelo de código, então #if, comentários e atributos ficam onde devem; ele mostra uma visualização e se desfaz com um único Desfazer; a ordem pode ficar no .editorconfig; ele roda no Visual Studio 2022 e 2026 em x64 e ARM64. Cobre apenas C# e deixa de fora o que o Visual Studio agora faz sozinho (limpeza de código, progresso do build).
Por que uma classe não foi ordenada?
O TidySmith deixa uma classe de lado quando ordená-la poderia quebrá-la ou bagunçá-la: um erro de sintaxe, um membro na linha de uma chave, dois membros em uma linha. Membros dentro de #if ou #region só se movem dentro do seu bloco. Arquivos gerados nunca são tocados.
Posso desfazer uma alteração?
Sim: cada comando e cada salvamento é uma única edição, então um Ctrl+Z desfaz. No Gerenciador de Soluções, os arquivos que não estão abertos são gravados em disco — use seu controle de versão nesse caso.
Por que Sort Selected Lines não fez nada?
Ele ordena só uma lista simples, então uma seleção que é código — instruções, blocos, linhas com recuos diferentes ou linhas em branco no meio — nunca é embaralhada. A barra de status avisa.
Add Regions não faz nada.
As regras padrão são sem regiões. Escolha como dividi-las no grupo Regiões das configurações (o comando o abre), ou defina tidysmith_regions no .editorconfig.
E VB, C++ ou XAML?
O TidySmith é para C#. Outras linguagens podem vir se forem pedidas — conte para nós no repositório Feedback.
O TidySmith envia algum dado?
Não. Tudo roda dentro do Visual Studio nos seus arquivos; nada é enviado para lugar nenhum — sem telemetria, sem requisições.
Onde relato um problema ou sugiro um recurso?
Abra uma issue no repositório Feedback no GitHub — há formulários para bugs e ideias (troque nomes privados). Você também pode usar a aba Q&A no Marketplace.
Histórico de alterações
1.0.2
- Um pedido único de avaliação no Marketplace, depois que a extensão tiver sido útil — com Mais tarde e Não perguntar novamente, e uma opção para desativá-lo.
1.0.1
- Order Members e a janela Structure na barra de ferramentas SmithWorks, compartilhada com as outras extensões SmithWorks (Exibir › Barras de Ferramentas › SmithWorks).
1.0.0
- Primeira versão pública.
Comentários que cabem
Format Comment quebra o comentário
//ou///no cursor (ou todos os comentários do arquivo) no seu comprimento de linha —max_line_lengthdo.editorconfig, ou 120. Linhas longas são quebradas, curtas são unidas, um<summary>longo ganha linhas próprias. Exemplos de código (<code>), listas, linhas separadoras e código comentado ficam como estão.