Análise de código

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.

ReSharper's code inspections on the marker bar in Visual Studio

Análise contínua da qualidade do código

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.

Code analysis in ReSharper

Erros

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.

Avisos

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.

Sugestões

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.

Dicas

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.

Quick-fixes for code issues in ReSharper

Correções rápidas para issues de código

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.

Alt text

Inspeções por toda a solução

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:

  • Declarações não particulares que não são utilizadas.
  • Valores de retorno não utilizados de métodos não particulares.
  • Campos não particulares que não são acessados.
  • Parâmetros não utilizados em membros não particulares.
  • Eventos abstratos ou virtuais que nunca são invocados.
  • Campos não atribuídos.
  • Membros e tipos que podem ser transformados em elementos internos em vez de públicos.

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.

Desabilitar e configurar itens de inspeção de código

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.

Highlighting code that matches a search pattern and replacing it with a replace pattern

Suas inspeções de código personalizadas

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.

Detectar erros em toda a solução

Monitorar erros com a análise por toda a solução

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).

Warnings in solution-wide analysis

Monitorar avisos com a análise por toda a solução

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.

Rastreamento de chamadas

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.

Localize issues no seu código

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.

Rastreamento de valores

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.

Anotações de código

À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.

Inspect This

O Inspect ThisCtrl+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.

Nota sobre atalhos

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.