Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
Note
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.
Âmbitos de opções
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:
| Syntax | Example |
|---|---|
| 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:
| Syntax | Example |
|---|---|
| dotnet_code_quality.<RegraCategoria.><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:
| Syntax | Example |
|---|---|
| dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Opções
Esta seção lista as opções de configuração disponíveis para analisadores de código. Para mais informações, consulte a Configuração do Analyzer .
- additional_enum_none_names
- additional_inheritance_excluded_symbol_names
- additional_required_generic_interfaces
- additional_required_suffixes
- additional_use_results_methods
- additional_string_formatting_methods
- allowed_suffixes
- analyzed_symbol_kinds
- api_surface
- assume_method_enumerates_parameters
- opções de análise de fluxo de dados
- disallowed_symbol_names
- enable_platform_analyzer_on_pre_net5_target
- enum_values_prefix_trigger
- enumeration_methods
- exclude_aspnet_core_mvc_controllerbase
- exclude_indirect_base_types
- exclude_structs
- exclude_async_void_methods
- exclude_extension_method_this_parameter
- exclude_ordefault_methods
- exclude_single_letter_type_parameters
- excluded_symbol_names
- excluded_type_names_with_derived_types
- ignore_internalsvisibleto
- linq_chain_methods
- null_check_validation_methods
- output_kind
- points_to_analysis_kind
- required_modifiers
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- use_naming_heuristic
api_surface
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Qual parte da superfície da API deve ser analisada |
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 |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
exclude_async_void_methods
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Se os métodos assíncronos que não retornam um valor devem ser ignorados | truefalse |
false |
CA2007 |
Note
Esta opção foi nomeada skip_async_void_methods em uma versão anterior.
exclude_single_letter_type_parameters
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
Se os parâmetros de tipo de caractere único devem ser excluídos da regra, por exemplo, S em Collection<S> |
truefalse |
false |
CA1715 |
Note
Esta opção foi nomeada allow_single_letter_type_parameters em uma versão anterior.
output_kind
| Description | Valores permitidos | Valor predefinido | 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 | CA1515, CA1516, CA2007 |
required_modifiers
| Description | Valores permitidos | Valor predefinido | 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 | Summary |
|---|---|
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 | Valor predefinido | Regras configuráveis |
|---|---|---|---|
Se deve pular a análise do parâmetro this de métodos de extensão |
truefalse |
false |
CA1062 |
null_check_validation_methods
| Description | Valores permitidos | Valor predefinido | 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: |
None | CA1062 |
additional_string_formatting_methods
| Description | Valores permitidos | Valor predefinido | 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: |
None | CA2241 |
excluded_type_names_with_derived_types
| Description | Valores permitidos | Valor predefinido | 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: |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
| Description | Valores permitidos | Valor predefinido | 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 |
None | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
disallowed_symbol_names
| Description | Valores permitidos | Valor predefinido | 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 |
None | CA1031 |
exclude_ordefault_methods
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
Exclui FirstOrDefault e LastOrDefault métodos de análise. |
true ou false |
false |
CA1826 |
ignore_internalsvisibleto
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Inclui assemblagens marcadas com InternalsVisibleToAttribute em análise. |
true ou false |
true |
CA1812CA1852 |
try_determine_additional_string_formatting_methods_automatically
| Description | Valores permitidos | Valor predefinido | 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 | Valor predefinido | 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 | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Exclua ASP.NET Core MVC ControllerBase ao considerar CSRF |
true ou false |
true |
CA5391 |
enum_values_prefix_trigger
| Description | Valores permitidos | Valor predefinido | 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 | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Excluir tipos de base indiretos |
true ou false |
true |
CA1710 |
additional_required_suffixes
| Description | Valores permitidos | Valor predefinido | 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: . |
None | CA1710 |
additional_required_generic_interfaces
| Description | Valores permitidos | Valor predefinido | 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: . |
None | CA1010 |
Examples:
| Valor da opção | Summary |
|---|---|
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 |
Espera-se que todos os tipos que implementam ISomething, independentemente do seu namespace, também implementem System.Collections.Generic.IEnumerable\`1. |
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 |
É esperado que todos os tipos que implementam System.Collections.IDictionary também implementem System.Collections.Generic.IDictionary`2. |
additional_inheritance_excluded_symbol_names
| Description | Valores permitidos | Valor predefinido | 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 um prefixo opcional N: para namespaces.
- Nome totalmente qualificado de tipo ou namespace com um prefixo opcional T: para tipo ou N: para namespace, 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 | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica os tipos de símbolos a serem analisados | Um ou mais campos de SymbolKind como uma lista separada por vírgulas. | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
use_naming_heuristic
| Description | Valores permitidos | Valor predefinido | 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 | Valor predefinido | 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: . |
None | CA1806 |
allowed_suffixes
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica sufixos permitidos | Lista (separada por |) dos sufixos permitidos. | None | CA1711 |
enable_platform_analyzer_on_pre_net5_target
| Description | Valores permitidos | Valor predefinido | 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 | Valor predefinido | 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 | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica nomes permitidos adicionais para um campo de enumeração de valor zero | Lista de nomes adicionais (separados por |). | None | CA1008 |
enumeration_methods
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica os métodos personalizados adicionais que enumeram um IEnumerable | Nomes totalmente qualificados de métodos adicionais (separados por |). | None | CA1851 |
linq_chain_methods
| Description | Valores permitidos | Valor predefinido | 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 |). | None | CA1851 |
assume_method_enumerates_parameters
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
Especifica se deve-se presumir que os métodos personalizados enumeram os seus IEnumerable parâmetros |
true ou false |
false |
CA1851 |
Opções de análise de fluxo de dados
As opções nesta seção configuram regras de análise de fluxo de dados. As opções são:
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- interprocedural_analysis_kind
- max_interprocedural_lambda_or_local_function_call_chain
- max_interprocedural_method_call_chain
- copy_analysis
- sufficient_IterationCount_for_weak_KDF_algorithm
Para obter mais informações sobre análise de fluxo de dados, consulte Escrevendo analisadores baseados em análise de fluxo de dados.
dispose_analysis_kind
| Description | Valores permitidos | Valor predefinido | 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 faltas no descarte em todos os caminhos (caminhos não-exceção e de 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ções. 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 | Valor predefinido | 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 | Valor predefinido | 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 |
interprocedural_analysis_kind
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica se a análise interprocessual deve ser executada para invocações de método de origem |
None, NonContextSensitive, ContextSensitive |
Específico para cada regra configurável | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
max_interprocedural_method_call_chain
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica o comprimento máximo da cadeia de chamadas do método a ser analisado para análise de fluxo de dados interprocessual | Inteiro não assinado | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
max_interprocedural_lambda_or_local_function_call_chain
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica o comprimento máximo da cadeia de chamadas de lambda ou de funções locais para a análise de fluxo de dados interprocessual. | Inteiro não assinado | 3 | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
points_to_analysis_kind
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica se deve executar PointsToAnalysis |
None, PartialWithoutTrackingFieldsAndProperties, Complete |
Específico para cada regra | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
copy_analysis
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Especifica se deve ser executada de análise de cópia (rastreia o valor e as cópias de referência) |
true ou false |
true para a maioria das regras |
CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |
sufficient_IterationCount_for_weak_KDF_algorithm
| Description | Valores permitidos | Valor predefinido | Regras configuráveis |
|---|---|---|---|
| Configura uma contagem de iteração suficiente ao usar um algoritmo fraco de função de derivação de chave (KDF) | Integer | 100000 para a maioria das regras | CA1062, CA1303, CA1508, CA2000, CA2100, CA2213 |