Novidades no ReSharper 2022.3

O ReSharper 2022.3 apresenta suporte básico para os recursos mais recentes do C# 11, incluindo literais UTF-8, tipos locais de arquivo, membros virtuais estáticos, correspondência de padrões entre spans e muitos outros. Para este lançamento, reformulamos o realce de código, introduzimos a detecção de dependências vulneráveis para pacotes NuGet e habilitamos a importação e exportação de diagramas de dependência de tipos e projetos no formato GraphML. Esta versão também vem com suporte inicial para o Microsoft Visual Studio em execução no ARM64.

Baixar

Avaliação gratuita por 30 dias disponível

C# 11

Estamos finalizando o suporte básico para os recursos mais recentes do C# 11:

Literais UTF-8

Adicionamos o suporte básico a literais UTF-8. Agora, a análise de código sugere usar um sufixo u8 para um literal, em vez do método System.Text.Encoding.UTF8.GetBytes(), ou então uma matriz de bytes com símbolos UTF8 adequados. Há também um novo conjunto de alertas e erros do compilador para literais UTF-8.

Tipos de arquivos locais

O suporte básico a tipos de arquivos locais inclui compreender a nova sintaxe, um modificador de acessibilidade file para os tipos e alertas e erros do compilador, com as correções rápidas correspondentes, como Move class to outer scope quando o modificador file for especificado para uma classe aninhada. Há ainda uma nova ação de contexto que é útil para converter um tipo geral em um tipo de arquivo.

Strings brutas

Agora o Rider pode converter strings regulares e textuais em seus equivalentes brutos. Isso também significa que vários recursos já existentes para strings agora também estão disponíveis para strings brutas.

Sugestões de uso de padrões de listas

Introduzimos nesta versão sugestões de uso da nova sintaxe de padrões de listas do C# 11 (em vez de verificações convencionais de tamanho de coleções seguidas de uma expressão de acesso ao indexador) para verificar os itens correspondentes da coleção.

Membros virtuais estáticos

A partir do C# 11, você pode usar modificadores abstract e virtual para membros static em interfaces e usar esses membros em código genérico, com os parâmetros do tipo limitados por essa interface. O ReSharper foi atualizado para tratar membros static polimórficos da mesma maneira como trata membros polimórficos comuns:

  • Marcações de herança na medianiz.
  • Navegação para membros de implementação e superclasses.
  • Geração de implementações omitidas.
  • As sugestões de complementação de código depois da palavra-chave override agora também incluem os membros da interface, de modo que agora você pode facilmente implementar membros abstratos ou virtuais estáticos.

Operador de deslocamento à direita sem sinal (>>>)

Agora o ReSharper reconhece o desajeitado padrão de código que os desenvolvedores em C# precisam escrever para fazer um deslocamento à direita sem sinal em tipos de dados com sinal e sugere usar o operador de deslocamento à direita sem sinal (>>>) no C# 11.

Correspondência de padrões entre spans

Se você costuma fazer parsing de spans de caracteres, provavelmente usa muito o método MemoryExtensions.SequenceEqual. O C# 11 introduz uma abreviatura desse tipo de verificação. Agora você pode simplesmente fazer uma correspondência de padrões entre spans de caracteres e literais de string, usando expressões is ou switch.

O ReSharper agora sugere usar as expressões is e switch, em vez de um monte de declarações if.

Campos ref e palavra-chave scoped

A partir do C# 11, você pode declarar campos ref dentro de structs ref. O ReSharper dá suporte a essa nova regra de sintaxe, fornece todos os erros e alertas do compilador, mostra uma palavra-chave ref na complementação de código e permite que esses campos sejam inicializados em um construtor.

O ReSharper também reconhece uma nova palavra-chave scoped, que você pode usar em argumentos e variáveis locais ref ou ref struct. Esse suporte inclui o parsing correto da nova sintaxe, a palavra-chave scoped na complementação de código e a preservação dessa palavra-chave ao gerar overrides de métodos. O Rider também verifica a compatibilidade de modificadores scoped e oferece correções rápidas para parâmetros scoped desbalanceados nos overrides, implementações de interface e conversões delegadas.

O C# 11 e o .NET 7 também introduziram mudanças nas regras de segurança da linguagem para ref. As mudanças determinam quais operações estão disponíveis para variáveis ref and ref struct, para dar segurança no uso de ref em código gerenciado, com a introdução de campos ref. O ReSharper reconhece essas mudanças e ajudará você a localizar as partes do seu projeto que precisam ser atualizadas e anotadas com a nova palavra-chave scoped para acomodar essas mudanças ao migrar para o C# 11 ou o .NET 7.

Injeções de linguagens

Com o lançamento 2022.3, estamos introduzindo algumas mudanças no suporte para injeções de linguagem:

As injeções de linguagem agora funcionam dentro de literais de string brutos do C# 11.

ReSharper supports the [StringSyntax] attribute from .NET 7, along with its different syntaxes for language injection and code completion.

Atualizações gerais para o C#

Marca de importações globais na medianiz

Há um novo ícone de marcação na medianiz, para notificar os usuários sobre importações implícitas de namespaces em arquivos do C# e do Razor.

Pressionando Alt+Enter na linha correspondente, você pode observar a lista completa de importações implícitas e dados sobre o arquivo de fonte no qual estão localizadas as diretivas global using correspondentes. Se você selecionar um determinado namespace importado, o ReSharper der pode navegar até o local onde ele foi declarado, incluindo navegar até tags <Using Include="Some.NameSpace" /> no arquivo de projeto .csproj.

O ReSharper também apresenta importações globais de _Imports.razor e permite a navegação até as definições de importação correspondentes.

Complementação de strings de formato

Com a adição dos tipos numéricos Int128 e UInt128 no .NET 7, atualizamos nossas sugestões de especificadores de formato de complementação de código.

Também adicionamos o suporte que faltava para os tipos de data e hora DateOnly e TimeOnly do .NET 6, além do tipo numérico de ponto flutuante com meia precisão Half, introduzido no .NET 5.

Conversão de padrões triviais em expressões

Às vezes, depois de uma refatoração, suas expressões de correspondência de padrões podem se tornar padrões recursivos triviais. Quando isso ocorre, pode valer a pena simplesmente não usar mais a sintaxe de padrões recursivos. Então, agora o ReSharper oferece a ação de reescrever os padrões como expressões mais simples, preservando a semântica original de correspondência de padrões.

Dicas de complementação de código para expressões void

Às vezes, quando você digita depois de uma invocação, você não vê quase nenhuma sugestão significativa. Isso pode acontecer se a invocação não tiver produzido nenhum valor devido a um método que retorna void ter sido invocado. Geralmente, só se percebe isso depois de algumas ações no IDE (voltando e navegando até a declaração do método ou passando o mouse sobre a invocação). Nesta versão, introduzimos o item de dica void sobre esse tipo de invocação que retorna void, para dar a você um feedback imediato a respeito do tipo que resulta dessa invocação. Se você aceitar esse item void, será adicionado um ponto e vírgula depois da invocação, se ele estiver faltando.

Realce de código

Realces de código e sublinhados ondulados foram reformulados no ReSharper 2022.3. Devido a uma diferença de lógica interna, o ReSharper costumava entrar em conflito com os analisadores de estilo de código do Microsoft Roslyn, causando realces sobrepostos, o mesmo realce mostrado em lugares diferentes ou a duplicação de sublinhados ondulados. Agora as diferenças de lógica por trás da maioria desses casos foram resolvidas. Nos raros casos excepcionais que restaram, há mensagens de erro com sugestões claras de como resolver o conflito.

Segurança

Sempre que você usa pacotes NuGet open source nas suas soluções, há o risco de abrir seu projeto a vulnerabilidades de segurança. Embora existam ferramentas externas que o NuGet fornece para detectar essas ameaças, é infinitamente mais conveniente ter uma ferramenta como essa diretamente no seu IDE para detectar quaisquer vulnerabilidades durante o período de design. É por isso que estamos introduzindo a detecção de dependências vulneráveis no ReSharper. A partir deste lançamento, todas as dependências afetadas serão destacadas em arquivos .csproj e .vbproj.

Suporte ao Visual Studio 2022 em ARM64

O ReSharper pode ser integrado ao Microsoft Visual Studio em dispositivos com processadores ARM. Estamos dando suporte inicial a todos os workflows básicos de desenvolvimento, exceto a correção ortográfica com o ReSpeller.

O instalador foi atualizado para incluir o suporte tanto a x64 quanto a ARM64. A versão correta será instalada automaticamente de acordo com a arquitetura do processador da sua máquina.

Suporte para Windows ARM64

Agora o dotPeek, o dotMemory, o dotTrace e o dotCover, além das ferramentas de linha de comando do ReSharper, também suportam Windows ARM64.

Descompilador

O descompilador incorporado no ReSharper 2022.3 vem com suporte para:

  • membros static abstract e static virtual em interfaces;
  • atributos genéricos;
  • operadores checked definidos pelo usuário;
  • operador de deslocamento à direita sem sinal.

Visualizador IL

Agora, a janela de ferramentas IL Viewer é capaz de descompilar código em diferentes níveis de construções da linguagem C#. Dois níveis de C# estão disponíveis: alto nível, com certas construções de sintaxe simplificadas, usando os últimos recursos da linguagem, e baixo nível, para casos em que você quiser saber como foi "removido o açúcar" dessas construções de sintaxe.

Diagramas de dependências

Agora, o ReSharper permite que você salve e importe diagramas de dependência de tipos e projetos no formato GraphML, preservando a capacidade de usar o diagrama como um mapa de código e navegar pelas dependências rapidamente.

Dynamic Program Analysis

A Dynamic Program Analysis (DPA) tem novas inspeções que permitem encontrar vários problemas relacionados ao uso de bancos de dados. Especificamente:

  • Tempos de execução de comandos longos demais
  • Excesso de conexões a bancos de dados
  • Excesso de comandos de banco de dados executados ao mesmo tempo
  • Comandos que retornam registros demais

As novas inspeções estão disponíveis para todos os aplicativos que usarem o Entity Framework Core e um provedor de dados .NET para o SQL Server.

Módulos C++20

O ReSharper C++ 2022.3 adiciona suporte experimental para módulos C++20. Atualizamos o mecanismo da linguagem e muitos dos recursos ReSharper C++ para que eles funcionem com o novo modelo de compilação, com suporte tanto para módulos nomeados quanto para unidades de cabeçalho.

Novidades no ReSharper C++ 2022.3

Integração com o clang-format

O ReSharper C++ 2022.3 fornece integração perfeita com o clang-format. Agora, você pode alternar entre o próprio mecanismo de formatação do ReSharper e o binário clang-format embutido ou personalizado para formatar arquivos. O ReSharper C++ executa o clang-format em um processo separado, garantindo total compatibilidade com o formatador padrão do setor, além de melhor desempenho e uma gama mais ampla de opções de formatação.

Baixar

Avaliação gratuita por 30 dias disponível