Opções de configuração da regra de qualidade de código

As regras de qualidade do código têm opções de configuração adicionais, além de apenas configurar sua gravidade. Por exemplo, cada analisador de qualidade de código pode ser configurado para se aplicar apenas a partes específicas da sua base de código. Você especifica essas opções adicionando pares chave-valor ao mesmo EditorConfig arquivo, onde especifica a gravidade da regra e as preferências gerais do editor.

Nota

Este artigo não detalha como configurar a gravidade de uma regra. A opção .editorconfig para definir a severidade de uma regra tem um prefixo diferente (dotnet_diagnostic) para as opções descritas aqui (dotnet_code_quality). Além disso, as opções descritas aqui pertencem apenas às regras de qualidade do código, enquanto a opção de severidade também se aplica às regras de estilo de código. Como referência rápida, você pode configurar a severidade de uma regra usando a seguinte sintaxe de opção:

dotnet_diagnostic.<rule ID>.severity = <severity value>

No entanto, para obter informações detalhadas sobre como configurar a gravidade da regra, consulte Nível de gravidade.

Escopos de opção

Cada opção de refinamento pode ser configurada para todas as regras, para uma categoria de regras (por exemplo, Segurança ou Design) ou para uma regra específica.

Todas as regras

A sintaxe para configurar uma opção para todas as regras é a seguinte:

Sintaxe Exemplo
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

Os valores para <OptionName> estão listados em Opções.

Categoria de regras

A sintaxe para configurar uma opção para uma categoria de regras é a seguinte:

Sintaxe Exemplo
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

A tabela a seguir lista os valores disponíveis para <RuleCategory>.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

Regra específica

A sintaxe para configurar uma opção para uma regra específica é a seguinte:

Sintaxe Exemplo
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Opções

Esta seção lista algumas das opções disponíveis. Para ver a lista completa de opções disponíveis, consulte Configuração do analisador.

api_surface

Description Valores permitidos Default value Regras configuráveis
Qual parte da superfície da API analisar public (aplica-se a public e protected APIs)
internal ou friend (aplica-se a internal e private protected APIs)
private (aplica-se a private APIs)
all (aplica-se a todas as APIs)

Separe vários valores com uma vírgula (,)
public CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1028 CA1030 CA1036 CA1040 CA1041 CA1043 CA1044 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA1055 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA2225 CA2226 CA2231 CA2234

exclude_async_void_methods

Description Valores permitidos Default value Regras configuráveis
Se os métodos assíncronos que não retornam um valor devem ser ignorados true
false
false CA2007

Nota

Esta opção foi nomeada skip_async_void_methods em uma versão anterior.

exclude_single_letter_type_parameters

Description Valores permitidos Default value Regras configuráveis
Se os parâmetros de tipo de caractere único devem ser excluídos da regra, por exemplo, S emCollection<S> true
false
false CA1715

Nota

Esta opção foi nomeada allow_single_letter_type_parameters em uma versão anterior.

output_kind

Description Valores permitidos Default value Regras configuráveis
Especifica que o código em um projeto que gera esse tipo de assembly deve ser analisado Um ou mais campos da OutputKind enumeração

Separe vários valores com uma vírgula (,)
Todos os tipos de saída CA2007

required_modifiers

Description Valores permitidos Default value Regras configuráveis
Especifica os modificadores necessários para APIs que devem ser analisadas Um ou mais valores da tabela de modificadores permitidos abaixo

Separe vários valores com uma vírgula (,)
Depende de cada regra CA1802
Modificador permitido Resumo
none Sem necessidade de modificador
static ou Shared Deve ser declarado como static (Shared no Visual Basic)
const Deve ser declarado como const
readonly Deve ser declarado como readonly
abstract Deve ser declarado como abstract
virtual Deve ser declarado como virtual
override Deve ser declarado como override
sealed Deve ser declarado como sealed
extern Deve ser declarado como extern
async Deve ser declarado como async

exclude_extension_method_this_parameter

Description Valores permitidos Default value Regras configuráveis
Se deve ignorar a análise para o this parâmetro de métodos de extensão true
false
false CA1062

null_check_validation_methods

Description Valores permitidos Default value Regras configuráveis
Nomes de métodos de validação de verificação nula que validam que os argumentos passados para o método não são nulos Formatos de nome de método permitidos (separados por |):
- Apenas nome do método (inclui todos os métodos com o nome, independentemente do tipo ou namespace que o contém)
- Nomes totalmente qualificados no formato de ID de documentação do símbolo, com um prefixo opcional M:
Nenhuma CA1062

additional_string_formatting_methods

Description Valores permitidos Default value Regras configuráveis
Nomes de métodos de formatação de cadeia de caracteres adicionais Formatos de nome de método permitidos (separados por |):
- Apenas nome do método (inclui todos os métodos com o nome, independentemente do tipo ou namespace que o contém)
- Nomes totalmente qualificados no formato de ID de documentação do símbolo, com um prefixo opcional M:
Nenhuma CA2241

excluded_type_names_with_derived_types

Description Valores permitidos Default value Regras configuráveis
Nomes de tipos, de modo que o tipo e todos os seus tipos derivados sejam excluídos para análise Formatos de nomes de símbolos permitidos (separados por |):
- Apenas nome do tipo (inclui todos os tipos com o nome, independentemente do tipo ou namespace que o contém)
- Nomes totalmente qualificados no formato de ID de documentação do símbolo, com um prefixo opcional T:
Nenhuma CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

excluded_symbol_names

Description Valores permitidos Default value Regras configuráveis
Nomes de símbolos excluídos para análise Formatos de nomes de símbolos permitidos (separados por |):
- Apenas nome do símbolo (inclui todos os símbolos com o nome, independentemente do tipo ou namespace que o contém)
- Nomes totalmente qualificados no formato de ID de documentação do símbolo. Cada nome de símbolo requer um prefixo de tipo de símbolo, como M: prefixo para métodos, T: prefixo para tipos e N: prefixo para namespaces.
- .ctor para construtores e .cctor para construtores estáticos
Nenhuma CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5399 CA5400

disallowed_symbol_names

Description Valores permitidos Default value Regras configuráveis
Nomes de símbolos que não são permitidos no contexto da análise Formatos de nomes de símbolos permitidos (separados por |):
- Apenas nome do símbolo (inclui todos os símbolos com o nome, independentemente do tipo ou namespace que o contém)
- Nomes totalmente qualificados no formato de ID de documentação do símbolo. Cada nome de símbolo requer um prefixo de tipo de símbolo, como M: prefixo para métodos, T: prefixo para tipos e N: prefixo para namespaces.
- .ctor para construtores e .cctor para construtores estáticos
Nenhuma CA1031

exclude_ordefault_methods

Description Valores permitidos Default value Regras configuráveis
Exclui FirstOrDefault e LastOrDefault métodos de análise. true ou false false CA1826

ignore_internalsvisibleto

Description Valores permitidos Default value Regras configuráveis
Inclui montagens marcadas com InternalsVisibleToAttribute em análise. true ou false true CA1812 CA1852

try_determine_additional_string_formatting_methods_automatically

Description Valores permitidos Default value Regras configuráveis
Opção booleana para habilitar a deteção heurística de métodos adicionais de formatação de cadeia de caracteres.
Um método é considerado um método de formatação de cadeia de caracteres se tiver um string format parâmetro seguido por um params object[] parâmetro.
true ou false false CA2241

unsafe_DllImportSearchPath_bits

Description Valores permitidos Default value Regras configuráveis
Configurar qual valor de DllImportSearchPath não é seguro para a análise Valores inteiros de System.Runtime.InteropServices.DllImportSearchPath 770 (ou seja, AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Description Valores permitidos Default value Regras configuráveis
Exclua ASP.NET Core MVC ControllerBase ao considerar CSRF true ou false true CA5391

dispose_analysis_kind

Description Valores permitidos Default value Regras configuráveis
Especifica quais caminhos analisar para eliminar violações - AllPaths - Rastreie e reporte violações de descarte ausentes em todos os caminhos (caminhos de exceção e não-exceção). Além disso, também sinalize o uso de padrões de descarte não recomendados que podem causar possíveis vazamentos de descarte.
- AllPathsOnlyNotDisposed - Rastreie e reporte violações de descarte ausentes em todos os caminhos (caminhos de exceção e não-exceção). Não sinalize o uso de padrões de descarte não recomendados que possam causar possíveis vazamentos de descarte.
- NonExceptionPaths - Rastreie e relate violações de descarte ausentes somente em caminhos de programa sem exceção. Além disso, também sinalize o uso de padrões de descarte não recomendados que podem causar possíveis vazamentos de descarte.
- NonExceptionPathsOnlyNotDisposed - Rastreie e relate violações de descarte ausentes somente em caminhos de programa sem exceção. Não sinalize o uso de padrões de descarte não recomendados que possam causar possíveis vazamentos de descarte.
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

Description Valores permitidos Default value Regras configuráveis
Configurar a transferência de propriedade de descarte para argumentos passados para a invocação do construtor true ou false false CA2000

dispose_ownership_transfer_at_method_call

Description Valores permitidos Default value Regras configuráveis
Configurar a transferência de propriedade de descarte para objetos descartáveis passados como argumentos para chamadas de método true ou false false CA2000

enum_values_prefix_trigger

Description Valores permitidos Default value Regras configuráveis
Especifica o limite para acionar a regra de nomenclatura de valores de enum - AnyEnumValue - A regra é acionada se qualquer um dos valores de enum começar com o nome do tipo de enum.
- AllEnumValues - A regra é acionada se todos os valores de enum começarem com o nome do tipo de enum.
- Heuristic - A regra é acionada usando a heurística padrão FxCop (ou seja, quando pelo menos 75% dos valores de enum começam com o nome do tipo de enum).
Heuristic CA1712

exclude_indirect_base_types

Description Valores permitidos Default value Regras configuráveis
Excluir tipos de base indiretos true ou false true CA1710

additional_required_suffixes

Description Valores permitidos Default value Regras configuráveis
Especifica sufixos adicionais necessários Lista de nomes de tipo (separados por |) com o sufixo necessário (separados por ->). Formatos de nome de tipo permitidos:
- Somente nome de tipo (inclui todos os tipos com o nome, independentemente do tipo ou namespace que o contém).
- Nomes totalmente qualificados no formato de ID de documentação do símbolo com um prefixo opcional T: .
Nenhuma CA1710

additional_required_generic_interfaces

Description Valores permitidos Default value Regras configuráveis
Especifica interfaces genéricas adicionais necessárias Lista de nomes de interface (separados por |) com sua interface genérica totalmente qualificada necessária (separados por ->). Formatos de interface permitidos:
- Somente nome da interface (inclui todas as interfaces com o nome, independentemente do tipo ou namespace que o contém).
- Nomes totalmente qualificados no formato de ID de documentação do símbolo com um prefixo opcional T: .
Nenhuma CA1010

Exemplos:

Valor da opção Resumo
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 Espera-se que todos os tipos que implementam ISomething , independentemente de seu namespace, também implementem System.Collections.Generic.IEnumerable\`1o .
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 Espera-se que todos os tipos de implementação System.Collections.IDictionary também implementem System.Collections.Generic.IDictionary`2.

additional_inheritance_excluded_symbol_names

Description Valores permitidos Default value Regras configuráveis
Especifica tipos ou namespaces a serem excluídos da árvore de hierarquia de herança Formatos de nome de tipo permitidos:
- Nome do tipo ou namespace (inclui todos os tipos com o nome, independentemente do tipo ou namespace que o contém, e todos os tipos cujo namespace contém o nome).
- Nome do tipo ou namespace terminado com um símbolo curinga (inclui todos os tipos cujo nome começa com o nome fornecido, independentemente do tipo ou namespace que o contém, e todos os tipos cujo namespace contém o nome).
- Nomes totalmente qualificados no formato de ID de documentação do símbolo com um prefixo opcional T: para tipos ou N: prefixo para namespaces.
- Tipo totalmente qualificado ou nome de namespace com um prefixo opcional T: para tipo ou N: prefixo para namespace e terminando com o símbolo curinga (inclui todos os tipos cujo nome totalmente qualificado começa com o nome de tipo fornecido, ou todos os tipos cujo nome totalmente qualificado começa com o nome de namespace fornecido).
N:System.* (Este valor é sempre adicionado automaticamente ao valor fornecido) CA1501

analyzed_symbol_kinds

Description Valores permitidos Default value Regras configuráveis
Especifica os tipos de símbolos a serem analisados Um ou mais campos de como uma lista separada por SymbolKind vírgula. Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

Description Valores permitidos Default value Regras configuráveis
Configura se parâmetros ou nomes de propriedades que contenham Text, Messageou Caption acionem esta regra true ou false false CA1303

additional_use_results_methods

Description Valores permitidos Default value Regras configuráveis
Especifica APIs personalizadas adicionais cujos resultados devem ser usados Nomes de métodos adicionais (separados por |). Formatos de nome de método permitidos:
- Somente nome do método (inclui todos os métodos com o nome, independentemente do tipo ou namespace que o contém).
- Nomes totalmente qualificados no formato de ID de documentação do símbolo com um prefixo opcional M: .
Nenhuma CA1806

allowed_suffixes

Description Valores permitidos Default value Regras configuráveis
Especifica sufixos permitidos Lista (separada por |) dos sufixos permitidos. Nenhuma CA1711

enable_platform_analyzer_on_pre_net5_target

Description Valores permitidos Default value Regras configuráveis
Especifica se a análise para TFMs deve ser habilitada antes do .NET 5 true ou false false CA1416

exclude_structs

Description Valores permitidos Default value Regras configuráveis
Especifica se as estruturas devem ser excluídas da análise true ou false false CA1051

additional_enum_none_names

Description Valores permitidos Default value Regras configuráveis
Especifica nomes permitidos adicionais para um campo de enumeração de valor zero Lista de nomes adicionais (separados por |). Nenhuma CA1008

enumeration_methods

Description Valores permitidos Default value Regras configuráveis
Especifica métodos personalizados adicionais que enumeram um IEnumerable Nomes totalmente qualificados de métodos adicionais (separados por |). Nenhuma CA1851

linq_chain_methods

Description Valores permitidos Default value Regras configuráveis
Especifica métodos de cadeia LINQ personalizados adicionais (ou seja, os métodos usam um IEnumerable argumento e retornam uma nova IEnumerable instância) Nomes totalmente qualificados de métodos adicionais (separados por |). Nenhuma CA1851

assume_method_enumerates_parameters

Description Valores permitidos Default value Regras configuráveis
Especifica se os métodos personalizados devem ser assumidos e enumeram seus IEnumerable parâmetros true ou false false CA1851