O ReSharper fornece análise contínua da qualidade do código em C#, VB.NET, XAML, XML, ASP.NET, ASP.NET MVC, ASP.NET Core, HTML, ResX e Protobuf. Erros e problemas são detectados instantaneamente, antes mesmo de você compilar.
O ReSharper aplica mais de 2200 inspeções de código ao seu código em tempo de design, para que você possa ver instantaneamente se o seu arquivo atual ou até mesmo toda a sua solução contém erros ou problemas.
O ReSharper realça erros e problemas detectados diretamente no editor do Visual Studio e os visualiza usando a Barra de marcadores à direita.
O Indicador de status no topo da Barra de marcadores mudará de cor e de ícone se o arquivo contiver erros ou problemas. Com um clique com o botão direito do mouse no ícone, você pode alternar rapidamente a análise de código do ReSharper, identificar realces e análises de código do Visual Studio, bem como navegar entre os issues do nível de gravidade mais alto.
O ReSharper detecta e realça os erros instantaneamente enquanto você codifica, direto no editor.
Os erros são realçados com uma fonte vermelha ou sublinhado ondulado. Se você rolar o ponteiro do mouse sobre um erro, sua descrição será exibida em uma dica de ferramenta.
O ReSharper é capaz de detectar erros não só no código C# ou VB.NET simples, como também em arquivos de code-behind ASP.NET, referências em arquivos de marcação e chamadas ASP.NET MVC.
Para XAML, o ReSharper verifica a sintaxe XML e valida com habilidade a semântica XAML, incluindo referências entre entidades XAML.
Em scripts de compilação (NAnt e MSBuild), o ReSharper analisa e realça propriedades desconhecidas, destinos, tarefas e atributos.
Inspeções de código em HTML e XML também estão disponíveis.
Além de erros e avisos do compilador, o ReSharper exibe seus próprios avisos que não impedem que o código seja compilado, mas que, no entanto, podem representar graves ineficiências de codificação. Por exemplo, o ReSharper informa sobre conversões redundantes, strings de formato incorretas, variáveis locais declaradas, mas nunca usadas, e outros problemas. Construções que possuem avisos associados são enfatizadas com texto cinza ou sublinhado azul ondulado.
Um nível mais profundo de análise de código está disponível com sugestões de código. Sugestões fornecem insights sobre a estrutura do código, atraindo sua atenção para elementos não necessariamente ruins ou incorretos, mas que provavelmente é útil conhecer. As sugestões são realçadas com um sublinhado verde ondulado.
Por exemplo, você pode estar interessado em saber que um determinado parâmetro pode ser declarado com o tipo base, o que significa que o seu método usa apenas os membros do tipo base desse parâmetro. O ReSharper também pode sugerir a criação de uma propriedade automática a partir de uma propriedade com campo de suporte, a conversão de uma invocação de método estático em uma chamada de método de extensão ou o uso da palavra-chave "var" quando possível.
O nível final e menos intrusivo de gravidade de realce de código é uma dica. Ao contrário de erros, avisos e sugestões, dicas não são consideradas quando você navega até o realce seguinte ou anterior, não aparecem na Barra de marcadores e, portanto, não têm influência sobre a cor do Indicador de status.
Uma dica simplesmente chama sua atenção a um detalhe de código específico e recomenda uma maneira de melhorar. Os itens de código com dicas associadas são realçados com um sublinhado verde tracejado.
O ReSharper acompanha mais de 1200 correções rápidas que ajudam a reparar instantaneamente a maioria dos issues de código detectados em todas as linguagens com suporte. Aplicar uma correção rápida é tão simples quanto pressionar Alt+Enter em um issue de código realçado e escolher a maneira apropriada de corrigir o problema ou melhorar o código abaixo do ideal.
Avisos e sugestões por toda a solução ajudam a detectar membros não particulares que não são utilizados dinamicamente. Essas inspeções só funcionam quando você deixa o ReSharper analisar sua solução inteira. Procure os issues destacados no seu código e na Barra de marcadires. Especificamente, você pode descobrir:
Além disso, estão disponíveis anotações de código, que você pode usar para marcar certos membros e tipos não particulares se eles forem ficar de fora intencionalmente, para evitar que o ReSharper dê atenção demais para eles.
A qualquer momento, você pode alterar a gravidade de diferentes itens de análise — por exemplo, fazer o ReSharper exibir uma inspeção/notificação específica como erro, aviso, sugestão de código ou dica, de acordo com seu estilo de codificação individual ou seus requisitos corporativos.
Além de tudo isso, às vezes você sabe melhor que uma determinada parte do código está boa e que nenhum aviso é necessário e, portanto, pode simplesmente desabilitar um determinado aviso.
Para desabilitar ou configurar itens de inspeção de código, use a página Code Inspection | Inspection Severity de opções do ReSharper. Você também pode configurar um determinado aviso, sugestão ou dica usando o menu Options for inspection na lista de ações que é possível invocar pressionando Alt+Enter.
Cada erro, aviso ou sugestão é representado por uma faixa individual na Barra de marcadores. Clicar na faixa leva você diretamente até a linha de código que contém o erro ou que causa o aviso ou a sugestão.
Você pode navegar entre erros, avisos e sugestões pressionando Alt+PageDown (avançar) e Alt+PageUp (retroceder). Você também pode navegar apenas entre erros (ignorando avisos e sugestões), pressionando Shift+Alt+PageDown (até o erro seguinte) e Shift+Alt+PageUp (até o erro anterior). Uma mensagem descrevendo o erro, o aviso ou a sugestão atual é exibida na barra de status.
Há também uma maneira alternativa de navegar entre issues de código: você pode localizar todos os issues de código em um determinado escopo e explorá-los em uma janela de ferramentas dedicada.
O ReSharper fornece Pesquisa e substituição estruturais para localizar o código que corresponde a um determinado padrão e, opcionalmente, substituí-lo por um código que corresponde a outro padrão. Ainda mais interessante é que o ReSharper pode monitorar continuamente sua solução para padrões de pesquisa, realçar o código que corresponde a esses padrões e fornecer correções rápidas para substituir o código de acordo com seus padrões de substituição.
Isso significa essencialmente que você pode estender o próprio conjunto de inspeções de código do ReSharper com suas inspeções personalizadas. Por exemplo, se você estiver migrando para uma versão mais recente de uma estrutura, poderá criar padrões de pesquisa para localizar usos da sua API mais antiga e substituir padrões para introduzir uma API atualizada.
O ReSharper não só é capaz de analisar arquivos abertos na ocasião do design, como também pode estender suas habilidades de análise para abranger sua solução inteira.
Suponha que você tenha alterado a visibilidade de um membro de público para interno, supondo que ele foi usado somente dentro do assembly atual. Nesse estágio, o ReSharper não encontra erros no arquivo atual. Em seguida, você ativa a análise por toda a solução, e o ReSharper descobre que aconteceu algo de errado. Você salta até para o próximo erro na solução e descobre que alguém usou esse membro de fora do projeto atual.
Tudo o que você precisa fazer é ativar explicitamente a análise por toda a solução e, em seguida, depois que ela verificar o código da sua solução, visualizar a lista de erros em uma janela dedicada.
Mesmo sem abrir essa janela, você ainda pode navegar facilmente pelos erros na sua solução com os comandos Go to Next Error/Warning in Solution (Shift+Alt+PageDown) e Go to Previous Error/Warning in Solution (Shift+Alt+F12).
Assim que o último erro na solução for corrigido, o indicador vermelho da barra de status ficará verde. No entanto, a análise por toda a solução pode ajudá-lo a melhorar ainda mais a qualidade do código na sua solução. Clique em Include Warnings no modo de exibição de erros, e o ReSharper começará a monitorar avisos (tanto os avisos do compilador quanto aqueles detectados pelas inspeções do ReSharper com o nível de gravidade Warning) na solução inteira.
Se aparecerem erros na sua solução novamente, os avisos serão ocultados automaticamente, para que você possa se concentrar na correção dos erros. Os avisos voltarão a ser exibidos quando todos os erros tiverem sido corrigidos.
No passado, a tentativa de rastrear sequências de chamadas no código podia acabar com muitas janelas Find Results e perdas de contexto. Para resolver esse problema, o ReSharper pode visualizar a sequência de chamadas inteira em uma única janela de ferramentas. Esse recurso é chamado de Rastreamento de chamadas e permite que você visualize cadeias de chamada e navegue por elas dentro do seu código.
Graças ao suporte para eventos, interfaces e fechamentos, o Rastreamento de chamadas do ReSharper é uma melhoria significativa da própria Hierarquia de chamadas do Visual Studio.
Para visualizar uma sequência de chamadas, escolha ReSharper | Inspect | Outgoing Calls ou ReSharper | Inspect | Incoming Calls ou use i recurso de atalho Inspect This.
O ReSharper permite localizar todos os issues de qualidade do seu código, além de redundâncias, oportunidades de uso de linguagem e sugestões de melhoria de código, em uma única janela de ferramentas chamada de Inspection Results.
Para localizar issues de código em um determinado escopo, escolha ReSharper | Inspect | Code Issues in Solution ou ReSharper | Inspect | Code Issues in Current Project. Como alternativa, selecione um nó no Solution Explorer, clique nele com o botão direito do mouse e escolha Find Code Issues.
A janela Inspection Results permite filtrar issues detectados, reagrupar o resultado por tipo de problema, gravidade, categoria e outras propriedades e exportar os resultados para um arquivo.
O recurso de Rastreamento de valores fornece informações importantes sobre o fluxo de dados no seu programa. Em qualquer local no seu código-fonte, você pode apontar para uma variável, parâmetro, campo ou propriedade e solicitar que o ReSharper o inspecione. Você verá como o valor flui pelo programa, de volta às suas fontes ou diretamente aos consumidores.
O recurso de Rastreamento de valores ajuda a determinar como um determinado valor incorreto pode ter sido transmitido a um determinado ponto do programa e para onde ele pode ser transmitido em seguida. Isso ajuda você a investigar possíveis erros de NullReferenceExceptions, comportamentos inadequados e motivos de obtenção de valores incorretos.
Para visualizar o fluxo de dados do qual um determinado valor participa, escolha ReSharper | Inspect | Value Origin ou ReSharper | Inspect | Value Destination ou use o recurso de atalho Inspect This.
Às vezes, até mesmo um mecanismo de análise de código tão poderoso quanto o ReSharper não possui conhecimento necessário para detectar certos problemas. Por exemplo, se um método é projetado para nunca retornar null
e seus clientes foram projetados de acordo, nenhuma análise de código encontrará um issue possível se alguém tiver alterado o método para retornar null
.
Neste e em muitos outros casos, a estrutura JetBrains.Annotations
ajuda a localizar problemas que, de outra forma, não podem ser deduzidos. Os atributos declarados nessa estrutura podem fazer com que o ReSharper analise o código da maneira que você precisa.
Para usar os atributos de anotação de código do ReSharper no seu código-fonte, instale o pacote NuGet correspondente. Você pode fazer isso simplesmente adicionando a diretiva using JetBrains.Annotations;
, e o ReSharper o ajudará a buscar o pacote automaticamente.
O Inspect This — Ctrl+Shift+Alt+A — é um atalho simples para vários recursos do ReSharper que combinam análise e navegação de código, incluindo o Rastreamento de chamadas, o Rastreamento de valores, a Hierarquia de tipos e o Diagrama de dependências de tipos.
Todos os atalhos de teclado fornecidos nesta página estão disponíveis no mapa de teclas "Visual Studio" padrão do ReSharper. Para obter detalhes sobre os dois mapas de teclas do ReSharper, consulte a Documentação do ReSharper.