Linguagem e regras desnecessárias
As regras de linguagem de estilo de código afetam como várias construções de linguagens de programação .NET, por exemplo, modificadores e parênteses, são usadas.
Esta categoria também inclui regras que identificam partes da base de código que são desnecessárias e podem ser refatoradas ou removidas. A presença de código desnecessário indica um ou mais dos seguintes problemas:
- Legibilidade: Código que degrada desnecessariamente a legibilidade.
- Manutenabilidade: Código que não é mais usado após a refatoração e é mantido desnecessariamente.
- Desempenho: computação desnecessária que não tem efeitos colaterais e leva a uma sobrecarga de desempenho desnecessária.
- Funcionalidade: Problema funcional no código que torna o código necessário redundante. Por exemplo, IDE0060 sinaliza parâmetros não utilizados onde o método ignora acidentalmente um parâmetro de entrada.
As regras linguísticas inserem-se nas seguintes categorias:
- Regras de estilo .NET: regras que se aplicam a C# e Visual Basic. Os nomes das opções para essas regras começam com o prefixo
dotnet_style_
. - Regras de estilo C#: Regras específicas do código C#. Os nomes das opções para essas regras começam com o prefixo
csharp_style_
. - Regras de estilo do Visual Basic: regras específicas do código do Visual Basic. Os nomes das opções para essas regras começam com o prefixo
visual_basic_style_
.
Formato da opção
Muitas das regras de idioma têm uma ou mais opções associadas para personalizar o estilo preferido. Por exemplo, Usar instrução "usando" simples (IDE0063) tem a opção csharp_prefer_simple_using_statement
associada que permite definir se você prefere uma using
declaração ou uma using
instrução. A regra impõe as opções que você escolher em um nível especificado, por exemplo, aviso ou erro.
As opções para regras de idioma podem ser especificadas em um arquivo de configuração com o seguinte formato:
option_name = value
(Visual Studio 2019 e posterior)
ou
option_name = value:severity
Valor
Para cada regra de idioma, você especifica um valor que define se ou quando preferir o estilo. Muitas regras aceitam um valor de
true
(preferem este estilo) oufalse
(não preferem este estilo). Outras regras aceitam valores comowhen_on_single_line
ounever
.Severidade (opcional no Visual Studio 2019 e versões posteriores)
A segunda parte da regra especifica o nível de severidade da regra. No .NET 9 e versões posteriores, a severidade é sempre respeitada, ou seja, dentro de IDEs de desenvolvimento e durante compilações de linha de comando. No .NET 8 e versões anteriores, essa configuração de gravidade só é respeitada dentro de IDEs de desenvolvimento, como o Visual Studio, e não durante a compilação.
Se você estiver usando o SDK do .NET 8 ou uma versão anterior e quiser que a gravidade seja respeitada no momento da compilação, poderá fazê-lo de duas maneiras:
- Defina a <propriedade AnalysisLevel> ou
<AnalysisLevelStyle>
como9.0
ou superior, ou comopreview
. - Defina a severidade usando a sintaxe de configuração de gravidade baseada em ID da regra para analisadores. A sintaxe assume a forma
dotnet_diagnostic.<rule ID>.severity = <severity>
, por exemplo,dotnet_diagnostic.IDE0040.severity = warning
. Para obter mais informações, consulte Nível de gravidade.
- Defina a <propriedade AnalysisLevel> ou
Gorjeta
A partir do Visual Studio 2019, você pode configurar regras de estilo de código no menu de lâmpadas Ações Rápidas após ocorrer uma violação de estilo.
Índice de regras
As regras de linguagem e código desnecessárias são ainda categorizadas em subcategorias, como preferências de nível de expressão, preferências de bloco de código e preferências de modificador.
using
Preferências diretivas- Preferências de bloqueio de código
- Membros com corpo de expressão
- Preferências no nível da expressão
- Preferências de campo
- Palavras-chave de idioma vs. preferências de tipos de estrutura
- Preferências do modificador
- Preferências de nova linha
- Preferências de verificação nula
- Preferências de parâmetros
- Preferências entre parênteses
- Preferências de correspondência de padrões
- Preferências de supressão
This.
eme.
preferênciasvar
preferências
using
Preferências diretivas
Regras de estilo .NET (C# e Visual Basic):
Regras de estilo C#:
Preferências de bloqueio de código
Regras de estilo C#:
- Adicionar chaves (IDE0011)
- Use a instrução "usando" simples (IDE0063)
- Preferências de declaração de namespace (IDE0160, IDE0161)
- Remover expressão lambda desnecessária (IDE0200)
- Converter em instruções de nível superior (IDE0210)
- Converter para programa estilo 'Program.Main' (IDE0211)
- Usar construtor primário (IDE0290)
- Prefira 'System.Threading.Lock' (IDE0330)
Membros com corpo de expressão
Regras de estilo C#:
- Usar corpo de expressão para construtores (IDE0021)
- Usar corpo de expressão para métodos (IDE0022)
- Usar corpo de expressão para operadores (IDE0023, IDE0024)
- Usar corpo de expressão para propriedades (IDE0025)
- Usar corpo de expressão para indexadores (IDE0026)
- Usar corpo de expressão para acessadores (IDE0027)
- Usar corpo de expressão para lambdas (IDE0053)
- Usar corpo de expressão para funções locais (IDE0061)
Preferências no nível da expressão
Regras de estilo .NET (C# e Visual Basic):
- Simplifique o nome (IDE0001)
- Simplifique o acesso dos membros (IDE0002)
- Remover transmissão desnecessária (IDE0004)
- Adicionar casos ausentes à instrução switch (IDE0010)
- Usar inicializadores de objeto (IDE0017)
- Usar inicializadores de coleção (IDE0028)
- A verificação nula pode ser simplificada (IDE0029, IDE0030 IDE0270)
- Usar propagação nula (IDE0031)
- Usar propriedade implementada automaticamente (IDE0032)
- Usar nome de tupla explicitamente fornecido (IDE0033)
- Remover código inacessível (IDE0035)
- Usar nomes de membros inferidos (IDE0037)
- Use a verificação 'é nulo' (IDE0041)
- Usar expressão condicional para atribuição (IDE0045)
- Usar expressão condicional para retorno (IDE0046)
- Converter tipo anônimo em tupla (IDE0050)
- Remover membro privado não utilizado (IDE0051)
- Remover membro privado não lido (IDE0052)
- Usar atribuição composta (IDE0054, IDE0074)
- Remover valor de expressão desnecessário (IDE0058)
- Remover atribuição de valor desnecessária (IDE0059)
- Use 'System.HashCode.Combine' (IDE0070)
- Simplificar a interpolação (IDE0071)
- Simplificar a expressão condicional (IDE0075)
- Converter
typeof
emnameof
(IDE0082) - Remover operador de igualdade desnecessário (IDE0100)
- Simplifique a expressão LINQ (IDE0120)
- O namespace não corresponde à estrutura de pastas (IDE0130)
Regras de estilo C#:
- Usar expressão de lançamento (IDE0016)
- Declaração de variável embutida (IDE0018)
- Simplifique a expressão 'padrão' (IDE0034)
- Usar função local em vez de lambda (IDE0039)
- Desconstruir declaração de variável (IDE0042)
- Usar operador de índice (IDE0056)
- Usar operador de intervalo (IDE0057)
- Adicionar casos ausentes para alternar a expressão (IDE0072)
- Remover operador de supressão desnecessário (IDE0080)
- Simplificar
new
a expressão (IDE0090) - Remover descarte desnecessário (IDE0110)
- Prefira a verificação 'nula' à verificação de tipo (IDE0150)
- Usar tupla para trocar valores (IDE0180)
- Adicionar conversão explícita no loop foreach (IDE0220)
- Usar UTF-8 string literal (IDE0230)
- A diretiva anulável é redundante (IDE0240)
- A diretiva anulável é desnecessária (IDE0241)
- Usar expressão de coleção para matriz (IDE0300)
- Usar expressão de coleção para vazio (IDE0301)
- Usar expressão de coleção para alocação de pilha (IDE0302)
- Usar expressão de coleção para
Create()
(IDE0303) - Usar expressão de coleção para construtor (IDE0304
- Usar expressão de coleção para fluente (IDE0305)
Regras de estilo do Visual Basic:
- Remover
ByVal
(IDE0081) - Usar correspondência de padrões (
IsNot
operador) (IDE0084) - Simplificar a criação de objetos (IDE0140)
Preferências de campo
Regras de estilo .NET (C# e Visual Basic):
Palavras-chave de idioma vs. preferências de tipos de estrutura
Regras de estilo .NET (C# e Visual Basic):
Preferências do modificador
Regras de estilo .NET (C# e Visual Basic):
Regras de estilo C#:
- Tornar a função local estática (IDE0062)
- Tornar os campos struct graváveis (IDE0064)
- Struct pode ser feito 'somente leitura' (IDE0250)
- Membro pode ser feito 'somente leitura' (IDE0251)
- Tornar estática a função anónima (IDE0320)
Preferências de nova linha
- Permitir várias linhas em branco (IDE2000)
- Permitir instruções incorporadas na mesma linha (IDE2001)
- Permitir linhas em branco entre chaves consecutivas (IDE2002)
- Permitir instrução imediatamente após o bloco (IDE2003)
- Permitir linha em branco após dois pontos no inicializador do construtor (IDE2004)
- Permitir linha em branco após token na expressão condicional (IDE2005)
- Permitir linha em branco após token na expressão de seta (IDE2006)
Preferências de verificação nula
Regras de estilo C#:
Preferências de parâmetros
Regras de estilo .NET (C# e Visual Basic):
Preferências entre parênteses
Regras de estilo .NET (C# e Visual Basic):
Preferências de correspondência de padrões
Regras de estilo C#:
- Use a correspondência de padrões para evitar 'as' seguido de verificação 'null' (IDE0019)
- Use a correspondência de padrões para evitar a verificação de "is" seguida por um elenco (IDE0020, IDE0038)
- Usar expressão de switch (IDE0066)
- Usar correspondência de padrões (IDE0078 e IDE0260)
- Usar correspondência de padrões (
not
operador) (IDE0083) - Simplifique o padrão de propriedade (IDE0170)
Preferências de supressão
Regras de estilo .NET (C# e Visual Basic):
This.
e me.
preferências
Regras de estilo .NET (C# e Visual Basic):
var
preferências
Regras de estilo C#: