ReSharper 2021.1 traz atualizações em análise de código, suporte para modelos de rota ASP.NET, renomeação de componentes de tupla e muito mais.
Avaliação gratuita por 30 dias disponível
A inspeção Merge into pattern agora pode lidar com muitos mais padrões de código. Mescle verificações de nulos com outras verificações em uma única verificação de padrão:
Reescreva verificações de expressões conditional?.Access
para correspondência de padrões aninhados:
Reduza o aninhamento de instruções if
mesclando as verificações:
Finalmente, você pode mesclar padrões dentro de um simples padrão de desconstrução var (a,b)
, expandindo-os para formas completas:
Adicionamos mais suporte para registros C# 9.0. As refatorações Extract interface e Extract superclass agora funcionam com declarações de record
, assim como File Layout e os recursos que têm a ver com a documentação XML.
Criamos um conjunto de novas inspeções e ações. A declaração de propriedade explícita redundante para propriedades em declarações record
pode ser útil ao migrar seu código para usar registros com parâmetros posicionais e declarações de propriedade implícitas. Uma correção rápida correspondente, Remove explicit property, está incluída.
Se você decidir transformar um record
em uma class
, a ação To class cuidará dos parâmetros posicionais e do construtor primário. Também há uma ação To record que funciona da maneira oposta.
Sempre que você precisar reescrever parâmetros posicionais e um construtor primário para propriedades comuns, construtor e um método Deconstruct()
explícito, considere usar a ação de contexto To explicit constructor.
Também há algo para manter as coisas organizadas: a inspeção Redundant 'record' type declaration body e a correção rápida correspondente substituirão o corpo da declaração do tipo record
vazio por um ponto-e-vírgula.
Agora, Find usages procura os usos do construtor primário de um registro e os usos de um método Deconstruct()
implícito.
É com grande satisfação que apresentamos uma nova inspeção, Inline temporary variable. Às vezes, você se pega usando o mesmo valor repetidamente com nomes diferentes em seu programa. Esse código pode ser mais transparente? Com certeza, e o ReSharper está aqui para ajudar.
Ele pode até mesmo ajudar a encontrar bugs se a variável temporária deveria ser inicializada com algum outro valor ou se ela sofrer mutação posteriormente no código.
Padrões lógicos not
podem ajudar você a facilitar bastante a leitura das suas verificações de tipo.
O ReSharper oferece o descarte da sintaxe !()
em favor de um padrão “not”.
Agora, o ReSharper sugere o uso do operador de intervalo em vez de Slice
e Substring
, se isso simplificar o código.
A inspeção Namespace does not correspond to file location foi suprimida em arquivos com código de nível superior.
Há outra nova inspeção que verifica se uma propriedade automática pode ser substituída por uma propriedade calculada, junto com uma correção rápida para fazer essa substituição.
Para suporte ao C# 10.0, demos alguns primeiros passos e ensinamos o ReSharper a trabalhar com o recurso Constant string interpolation.
Fique ligado em uma postagem de blog dedicada com todos os detalhes sobre Análise de código na versão 2021.1!
Os modelos de rota são amplamente usados em aplicativos MVC para configurar como as solicitações HTTP são correspondidas aos endpoints executáveis da aplicação. Na versão 2021.1, estamos introduzindo suporte para modelos de rotas: o ReSharper agora oferece navegação estrutural, inspeções e correções rápidas. Vamos ver alguns exemplos.
As inspeções mais básicas verificam os erros de sintaxe do modelo de rota: colocar acidentalmente uma rota de parâmetro catch-all no meio do modelo, declarar o parâmetro catch-all como opcional, adicionar um valor padrão para o parâmetro opcional e assim por diante.
Parâmetros de rota dão origem a situações interessantes. E se você declarar um parâmetro com o mesmo nome no controlador e na ação? O ReSharper avisará você sobre isso.
Por outro lado, parâmetros podem estar faltando. Neste caso, o ReSharper sugerirá que você os adicione, seja a partir do atributo do controlador ou da ação. Se houver uma restrição de tipo, ela será usada para inferir o tipo do parâmetro.
Falando em restrições, elas são um bom lugar para análise de código. O ReSharper verifica se a própria restrição aplicada está correta e se um parâmetro realmente satisfaz a restrição.
O ReSharper também tenta analisar se o tipo de parâmetro pode ser mais rigoroso, com base na restrição, e pode sugerir a alteração do tipo. Se você usava o tipo diferente para o parâmetro de propósito, basta descartar a sugestão.
O ReSharper também está ciente das restrições personalizadas. Se, em alguns casos, elas não forem reconhecidas, anote sua classe de restrição com o atributo [RouteParameterConstraint]
fornecido por JetBrains.Annotations.
Quanto a outros recursos de nosso pacote padrão, há complementação de código, navegação estrutural e reorganização do código.
A renomeação dos parâmetros de rota não precisa mais ser manual: a refatoração Rename está aqui para você.
Por enquanto, todos os itens acima funcionam para roteamento baseado em atributos. Estamos ansiosos para ouvir seus comentários sobre essa novidade.
Para obter mais detalhes sobre os modelos de rota ASP.NET Core, consulte esta postagem de blog.
Tuplas nomeadas estão conosco desde o C# 7, mas renomear os componentes continuou sendo uma operação manual. Colocamos um fim nisso, e agora você pode chamar a refatoração.
Agora, você tem uma nova ação de navegação – Navigate to Windows Explorer. Você vai encontrá-la no menu Navigate | Navigate to ou pressionando Ctrl+Shift+A e digitando seu nome. Isso pode ser útil quando você está fazendo algo com o próprio arquivo, como copiá-lo ou copiar o caminho dentro do repositório, ou se preferir visualizar o histórico VCS do arquivo usando extensões Git para o Windows Explorer.
Embora ainda estejamos desmontando o ReSharper para o modo "fora do processo" e montando-o novamente, nunca paramos de corrigir problemas de desempenho específicos sempre que possível. Aqui estão alguns destaques.
Adicionamos algumas novas configurações:
new()
com tipo de destino. Para regras de nomenclatura personalizadas, atualizamos a ordem em que elas são aplicadas: as mais específicas agora são aplicadas primeiro.
Por fim, adicionamos uma nova ação para a seleção de formato. Agora, você pode instruir o ReSharper a ajustar apenas os recuos do código selecionado, em vez de realizar todo o processo de reformatação.
Também corrigimos um conjunto de bugs - você pode encontrar os detalhes em nosso rastreador de issues.
O EditorConfig está se tornando uma ferramenta popular na comunidade .NET e estamos continuamente aprimorando como ele funciona com o ReSharper. Aqui está o que mudamos:
csharp_indent_case_contents_when_block
no EditorConfig. [InlineAutoData]
e avisa se não houver um atributo [TestFixture]
ou [Test]
na classe ou método de teste. O ReSharper C++ 2021.1 traz suporte para vários novos recursos de linguagem C++20 e C++17: tipos de classe em parâmetros de modelo não-tipo, regras de dedução de argumento de modelo de classe C++20 e noexcept
como parte do tipo de função. Há também novos itens de complementação de código para corrotinas disponíveis tanto na complementação de código básica quanto como modelos de complementação postfix: co_await
, co_yield
e co_return
.
Introduzimos uma coleção de configurações de estilo de sintaxe que você pode usar para impor o estilo de código escolhido para as construções de sintaxe. Com as inspeções de suporte, correções rápidas e as ações de contexto Apply Syntax Style e Cleanup selection, você pode aplicar o novo estilo à base de código com facilidade e manter o novo código consistente.
Avaliação gratuita por 30 dias disponível