O ReSharper 2022.2 inclui suporte para recursos do C# 11, como membros obrigatórios, operadores checked definidos pelo usuário, strings brutas e padrões de listas. A análise por toda a solução tem um consumo de memória bastante otimizado. Além disso, esta versão também traz o Virtual Formatter, que permite a você visualizar código no seu formato preferido sem reformatar de fato o código-fonte no disco, e uma ferramenta de Disk Cleanup para remover arquivos temporários gerados pelo ReSharper enquanto ele trabalha no seu código.
Avaliação gratuita por 30 dias disponível
Esta versão traz o suporte a vários recursos adicionais da versão de demonstração do C# 11.
No C# 11, os tipos class
, struct
e record
ganharam a capacidade de declarar uma lista de membros obrigatórios. Trata-se de uma lista de todas as propriedades e campos considerados obrigatórios e que precisam ser inicializados juntamente com a instância de um tipo. Os tipos herdam automaticamente essas listas dos seus tipos-base, proporcionando uma experiência suave que remove código pronto repetitivo.
Além de reconhecer a palavra-chave required
para membros dentro de um tipo class
, struct
ou record
, o ReSharper oferece suporte adicional à palavra-chave required
:
required
foi adicionado à opção Modifiers order na página ReSharper | Options | Code Editing | C# | Syntax Style
. Adicionamos uma nova correção rápida Add initializer for required members para casos em que você já criou o objeto de um tipo, mas ainda não inicializou os membros. Essa correção gera automaticamente todos os membros "required" que estiverem faltando no seu objeto – você só precisa preencher os valores dos membros com dados significativos.
Operadores checked
definidos pelo usuário ajudam os desenvolvedores a criar operadores definidos pelo usuário que operam em tipos nos quais o overflow aritmético seja um conceito válido. O ReSharper mostra todos os erros e avisos do compilador. Para dar suporte total a operadores checked
definidos pelo usuário, o ReSharper tem algumas inspeções adicionais e uma nova ação de contexto.
Atualizamos a inspeção Unchecked/checked context is redundant para levar em conta operadores checked
quando eles forem usados neste contexto.
Se você tiver um conjunto de operadores definidos pelo usuário e alguns deles já tiverem uma versão checked
, o ReSharper ajudará você a propagar os operadores checked
a todo o conjunto. Uma nova inspeção, chamada The operator does not have a matching checked
operator while other operators do, notificará a você quais operadores ainda não têm um operador "checked" e sugerirá uma correção rápida para gerar as versões checked
automaticamente.
Se você ainda não tiver usado operadores checked
na sua base de cócigo, mas quiser começar a adicioná-los, uma nova ação de contexto chamada Create matching checked operator será muito conveniente. Essa ação está disponível em cada operador definido pelo usuário e gera uma versão "checked" de um operador diretamente a partir do menu Alt+Enter com apenas um clique.
O C# 11 tem uma melhor capacidade de incorporar outras linguagens ou formatos de texto no código C#, introduzindo o conceito de strings brutas.
O ReSharper tem suporte básico a strings "raw", incluindo erros de compilação, parsing correto e realce de cores para a sintaxe """"
, pares de aspas e marcadores dentro de strings interpoladas (sintaxe {{...}}
).
O C# 11 continua expandindo os padrões de conjunto disponíveis na linguagem. Desta vez, o C# permite fazer correspondência em estruturas semelhantes a listas, tais como arrays, strings e coleções semelhantes a List<T>
.
O ReSharper 2022.2 tem suporte total a padrões com verificação de erros, complementação e análise de código. Ainda estamos trabalhando para adicionar inspeções de código, para sugerir usar os padrões de lista no código existente, e ações adicionais de refatoração.
>>>
), incluindo suporte para sobrecarregamento do operador >>>
definido pelo usuário. Span<char>
como substitutos para instâncias de strings, já que no C# 11 é possível fazer a correspondência direta de padrões entre constantes de string e os valores dos tipos Span<char>
e ReadOnlySpan<char>
. Nesta versão, otimizamos bastante a utilização de memória pelo ReSharper, em termos tanto do tráfego de memória (número de alocações de memória) quanto do consumo de memória, através do modo de Análise por Toda a Solução LIGADO.
O mecanismo da Análise por Toda a Solução usa a memória para armazenar a lista de problemas na solução e também as informações sobre o uso de tipos e membros para elaborar relatórios de uso abrangendo toda a solução (inspeções de código tais como "membro público nunca é usado"). Os dados de uso são "quentes", ou seja, precisam ser constantemente atualizados à medida que você edita o código e não podem ser descarregados para o disco. Isto pode consumir uma quantidade significativa de memória, se a sua solução contiver muitos tipos e membros. Revisamos os dados armazenados na memória e encontramos padrões que nos permitiram eliminar duplicações e normalizar os dados. Também usamos tipos especializados de coleções para reduzir o conjunto de trabalho mais ainda. Essas otimizações resultaram em uma melhora de 5-10x no consumo de memória e em um carregamento mais rápido da Análise por Toda a Solução.
O .NET 6 introduziu novos modelos de projetos com o uso de declarações top-level do C# 9. As declarações top-level simplificam declarar uma classe Program
ou um método public static void Main(string[] args)
. Mas às vezes, a declaração explicita class Program
é necessária na inicialização, ou mais desejável de ser usada. O ReSharper 2022.2 adiciona a nova ação de contexto To explicit 'Program' class, para executar uma transformação para o estilo antigo.
Ao mesmo tempo, se você tiver uma classe de inicialização Program
já existente e quiser migrar para declarações top-level, poderá usar a nova ação de contexto Convert to top-level code.
INotifyPropertyChanged
atualizado Nesta versão, reformulamos nosso suporte a INotifyPropertyChanged
. Anotações externas não são mais necessárias para detectar APIs comuns para INotifyPropertyChanged
. Isto nos permitiu dar suporte a mais frameworks MVVM e classes de base INotifyPropertyChanged
automaticamente. Agora, emitimos um método SetField
, que permite a sintaxe mais concisa possível para notificações INotifyPropertyChanged
.
Agora também é possível adicionar notificações property change para todas as propriedades daquele tipo ou arquivo.
Para aumentar a possibilidade de refatorações serem descobertas, revisamos as refatorações de uso mais comuns e introduzimos ações de contexto relacionadas no menu Alt+Enter. Essas ações dependem do contexto atual.
Adicionamos a ação de contexto Extract method quando você chama o menu Alt+Enter em um trecho selecionado de código.
Agora as refatorações Change Signature, Transform Parameters, Convert to extension method e Convert Property To Method estão todas disponíveis como ações de contexto sobre assinaturas de membros.
nameof
Agora o ReSharper 2022.2 reconhece os registros de DependencyProperty
em projetos de WPF e sugere usar um operador nameof
para capturar o nome da propriedade CLR correspondente. Os modelos dinâmicos incorporados também foram atualizados para emitir nameof
em vez de literais de string.
Muitas vezes, o ReSharper não consegue reconhecer o significado especial de um determinado literal de string usado para especificar o nome de alguma entidade do seu código, como o nome de um membro ou um tipo. Para esses casos, introduzimos uma nova ação de contexto Capture element name, para literais de string que podem referenciar uma entidade de código no contexto que contém o literal de string.
Agora, correções rápidas vindas de padrões de Busca e Substituição Estruturais (Structural Search And Replace, SSR) podem ser aplicadas no escopo de um arquivo, pasta, projeto, ou da solução inteira. Isto afeta padrões personalizados de usuário criados na página ReSharper | Options | Code Inspection | Custom Patterns
, afeta inspeções de código incorporadas do ReSharper e as correções correspondentes baseadas em SSR.
Agora o ReSharper 2022.2 detecta alguns padrões de atribuição no seu código e sugere um código C# mais idiomático, com correspondência de padrões.
Agora o ReSharper 2022.2 consegue substituir alguns padrões is
sob expressões ?:
pela forma mais concisa as
sob a expressão ??
, na prática eliminando uma variável temporária.
Introduzimos o Virtual Formatter — uma maneira de você visualizar código com a sua formatação desejada sem realmente reformatar o código-fonte no disco. Por exemplo, agora você pode alinhar parâmetros em colunas ou aumentar indentações, tudo virtualmente. Nosso objetivo com este recurso foi melhorar a legibilidade e a facilidade de manutenção do código, além de torná-lo mais acessível a deficientes visuais e desenvolvedores neurodivergentes. Para ativar o Virtual Formatter com configurações predefinidas, vá para ReSharper | Options | Environment | Inlay Hints | General
. Para personalizar a formatação mais ainda com suas especificações exatas, marque a caixa de opção Use dedicated Virtual Formatter style settings e clique em C#.
Agora você pode remover os arquivos temporários gerados pelo ReSharper enquanto ele trabalha no seu código. Adicionamos uma nova página nas Options, onde você pode:
Como muitos de vocês devem ter percebido, o suporte a JavaScript e TypeScript no ReSharper está desatualizado e é lento. Na implementação atual, é difícil seguir as mudanças na linguagem TypeScript e dar suporte a novas versões rapidamente. Então, estamos procurando uma maneira melhor de darmos suporte a essas linguagens. Depois de uma longa discussão interna, decidimos suspender nosso suporte atual a JS e TS. Como resultado, desativamos o suporte a TS e JS como padrão nesta versão. Se você ainda quiser usar esse suporte, poderá reativá-lo aqui: ReSharper | Options | Environment | Products & Features | caixa de opção "JavaScript and TypeScript"
.
O ReSharper C++ introduz dicas de inlay específicas para Blueprint e permite que você veja o panorama mais amplo por detrás do seu código:
UFunction
tem implementações em Blueprints e procure por todos esses casos. UProperty
, incluindo se ela foi substituída e qual valor está definido no arquivo Blueprint. Também introduzimos inspeções para informar se há inconsistências entre os especificadores de função específicos para Blueprint usados no código e os próprios Blueprints.
Agora o ReSharper consegue detectar se o pacote StyleCop.Analyzers é referenciado por um projeto e pode ler suas configurações nos arquivos stylecop.json
e .ruleset
. Cabeçalhos de arquivos e configurações de indentação são obtidos de stylecop.json
, enquanto as regras do StyleCop são aplicadas de acordo com a configuração do arquivo .ruleset
ativo.
ngen
or R2R
. Avaliação gratuita por 30 dias disponível