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.
Essa categoria também inclui regras que identificam partes da base do 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: um código que diminui desnecessariamente a legibilidade.
- Capacidade de manutenção: o 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 sobrecarga de desempenho desnecessária.
- Funcionalidade: um problema funcional no código que torna redundante o código necessário. Por exemplo, IDE0060 sinaliza parâmetros não utilizados onde o método ignora acidentalmente um parâmetro de entrada.
As regras da linguagem se enquadram 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 de opção
Muitas das regras da linguagem têm uma ou mais opções associadas para personalizar o estilo preferido. Por exemplo, Usar a instrução simples 'using' (IDE0063) tem a opção associada csharp_prefer_simple_using_statement
que permite definir se você prefere uma instrução using
ou uma instrução using
. A regra aplica as opções que você escolher em um nível específico, 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 linguagem, você especifica um valor que define se ou quando preferir o estilo. Muitas regras aceitam um valor de
true
(prefira este estilo) oufalse
(não prefira este estilo). Outras regras aceitam valores comowhen_on_single_line
ounever
.Gravidade (opcional no Visual Studio 2019 e versões posteriores)
A segunda parte da regra especifica o nível de gravidade da regra. No .NET 9 e versões posteriores, a gravidade é sempre respeitada, ou seja, dentro de IDEs de desenvolvimento e durante builds de linha de comando. No .NET 8 e versões anteriores, essa configuração de severidade só é respeitada dentro de IDEs de desenvolvimento, como o Visual Studio, e não durante o build.
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á fazer isso de duas maneiras:
- Defina a propriedade AnalysisLevel> ou
<AnalysisLevelStyle>
como ou superior ou comopreview
.9.0
< - Em vez disso, defina a gravidade usando a sintaxe de configuração de gravidade baseada em ID de regra para analisadores. A sintaxe assume o formato
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
Dica
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 a ocorrência de uma violação de estilo.
Índice da regra
As regras de código desnecessárias e de linguagem 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 de diretivas- Preferências dos blocos de código
- Membros aptos para expressão
- Preferências de nível de expressão
- Preferências de campo
- Preferências de palavra-chave da linguagem vs. tipos de estrutura
- Preferências do modificador
- Preferências de novas linhas
- Preferências de verificação nula
- Preferências de parâmetro
- Preferências de parênteses
- Preferências de padrões correspondentes
- Preferências de supressão
This.
eme.
preferênciasvar
preferências
using
preferências de diretivas
Regras de estilo do .NET (C# e Visual Basic):
Regras de estilo do C#:
Preferências dos blocos de códigos
Regras de estilo do C#:
- Adicionar chaves (IDE0011)
- Usar a instrução 'using' simples (IDE0063)
- Preferências de declaração do namespace (IDE0160 e IDE0161)
- Remover a expressão lambda desnecessária (IDE0200)
- Converter em instruções de nível superior (IDE0210)
- Converter em programa de estilo "Program.Main" (IDE0211)
- Usar construtor primário (IDE0290)
- Prefira 'System.Threading.Lock' (IDE0330)
Membros aptos para expressão
Regras de estilo do C#:
- Use o corpo da expressão para construtores (IDE0021)
- Use o corpo da expressão para métodos (IDE0022)
- Usar corpo de expressão para operadores (IDE0023, IDE0024)
- Use o corpo da expressão para propriedades (IDE0025)
- Use o corpo da expressão para indexadores (IDE0026)
- Use o corpo da expressão para acessadores (IDE0027)
- Usar o corpo da expressão para lambdas (IDE0053)
- Use o corpo da expressão para funções locais (IDE0061)
Preferências de nível de expressão
Regras de estilo do .NET (C# e Visual Basic):
- Simplificar nome (IDE0001)
- Simplificar o acesso de membros (IDE0002)
- Remover a conversã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 de nulidade pode ser simplificada (IDE0029, IDE0030 e IDE0270)
- Usar tratamento simplificado de nulo (IDE0031)
- Usar propriedade autoimplementada (IDE0032)
- Usar o nome de tupla fornecido explicitamente (IDE0033)
- Remover o código inacessível (IDE0035)
- Usar nomes de membros inferidos (IDE0037)
- Usar a verificação 'is null' (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 particular não utilizado (IDE0051)
- Remover membro privado não lido (IDE0052)
- Usar a atribuição composta (IDE0054, IDE0074)
- Remover valor de expressão desnecessária (IDE0058)
- Remover a atribuição de valor desnecessária (IDE0059)
- Usar '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)
- Simplificar a expressão LINQ (IDE0120)
- O namespace não corresponde à estrutura de pastas (IDE0130)
Regras de estilo do C#:
- Usar expressão throw (IDE0016)
- Declaração de variável embutida (IDE0018)
- Simplificar a expressão 'padrão' (IDE0034)
- Usar a função local em vez de lambda (IDE0039)
- Desconstruir declaração de variável (IDE0042)
- Usar o operador de índice (IDE0056)
- Usar operador de intervalo (IDE0057)
- Adicionar casos ausentes à expressão switch (IDE0072)
- Remover o operador de supressão desnecessário (IDE0080)
- Expressão
new
simplificada (IDE0090) - Remover descarte desnecessário (IDE0110)
- Prefira a verificação 'null' à verificação de tipo (IDE0150)
- Usar tupla para trocar valores (IDE0180)
- Adicionar conversão explícita no loop foreach (IDE0220)
- Usar literal de cadeia de caracteres UTF-8 (IDE0230)
- A diretiva que permite valor nulo é redundante (IDE0240)
- A diretiva que permite valor nulo é 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 padrões correspondentes (operador
IsNot
) (IDE0084) - Simplificar a criação de objeto (IDE0140)
Preferências de campo
Regras de estilo do .NET (C# e Visual Basic):
Preferências de palavra-chave da linguagem versus tipos de estrutura
Regras de estilo do .NET (C# e Visual Basic):
Preferências do modificador
Regras de estilo do .NET (C# e Visual Basic):
Regras de estilo do C#:
- Tornar local a função estática (IDE0062)
- Tornar os campos de struct graváveis (IDE0064)
- O struct pode ser feito "readonly" (IDE0250)
- O membro pode ser feito "readonly" (IDE0251)
- Tornar a função anônima estática (IDE0320)
preferências de nova linha
- Permitir várias linhas em branco (IDE2000)
- Permitir declarações incorporadas na mesma linha (IDE2001)
- Permitir linhas em branco entre chaves consecutivas (IDE2002)
- Permitir uma declaração imediatamente após o bloco (IDE2003)
- Permitir uma linha em branco após dois pontos no inicializador do construtor (IDE2004)
- Permitir uma linha em branco após o token em uma expressão condicional (IDE2005)
- Permitir uma linha em branco após o token na expressão de seta (IDE2006)
Preferências de verificação nula
Regras de estilo do C#:
Preferências de parâmetro
Regras de estilo do .NET (C# e Visual Basic):
Preferências de parênteses
Regras de estilo do .NET (C# e Visual Basic):
Preferências de padrões correspondentes
Regras de estilo do C#:
- Utilize a correspondência de padrões para evitar a verificação "as" seguida de "null" (IDE0019)
- Usar padrões correspondentes para evitar a verificação 'is' seguida por uma conversão (IDE0020, IDE0038)
- Usar a expressão switch (IDE0066)
- Usar padrões correspondentes (IDE0078 e IDE0260)
- Usar padrões correspondentes (operador
not
) (IDE0083) - Simplificar o padrão de propriedade (IDE0170)
Preferências de supressão
Regras de estilo do .NET (C# e Visual Basic):
This.
e me.
preferências
Regras de estilo do .NET (C# e Visual Basic):
var
preferências
Regras de estilo do C#: