コード品質ルールの構成オプション
コード品質ルールには、重大度を構成するオプションの他に、追加の構成オプションが用意されています。 たとえば、各コード品質アナライザーを、コードベースの特定の部分にのみ適用するように構成できます。 これらのオプションは、ルールの重大度や全般的なエディターの基本設定を指定するために使用する、同一の EditorConfig ファイルにキーと値のペアを追加して指定します。
Note
この記事では、規則の重大度を構成する方法については詳しく説明しません。 ルールの重大度を設定する .editorconfig オプションには、ここで説明するオプション (dotnet_code_quality
) とは異なるプレフィックス (dotnet_diagnostic
) があります。 さらに、ここで説明するオプションは、コード品質規則のみに関連しますが、重大度オプションはコード スタイル規則にも適用されます。 クイック リファレンスとして、次のオプション構文を使用して規則の重大度を構成できます。
dotnet_diagnostic.<rule ID>.severity = <severity value>
しかし、規則の重要度の構成について詳しくは、「重大度レベル」を参照してください。
オプションのスコープ
各調整オプションは、すべてのルール、ルールのカテゴリ ("セキュリティ" や "デザイン" など)、または特定のルールに対して構成できます。
すべてのルール
"すべて" のルールに対してオプションを構成するための構文は、次のとおりです。
構文 | 例 |
---|---|
dotnet_code_quality.<OptionName> = <OptionValue> | dotnet_code_quality.api_surface = public |
<OptionName>
の値は Options の下に一覧表示されます。
ルールのカテゴリ
ルールの "カテゴリ"に対してオプションを構成するための構文は、次のとおりです。
構文 | 例 |
---|---|
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue | dotnet_code_quality.Naming.api_surface = public |
次の表に、<RuleCategory>
に使用できる値を示します。
Design
Documentation
Globalization
Interoperability
Maintainability
Naming
Performance
SingleFile
Reliability
Security
Usage
特定のルール
"特定" のルールに対してオプションを構成するための構文は、次のとおりです。
構文 | 例 |
---|---|
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
[オプション]
このセクションでは、使用可能なオプションの一部を一覧で示します。 使用可能なオプションの完全な一覧については、「Analyzer Configuration」(Analyzer の構成) を参照してください。
- api_surface
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
api_surface
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析する API サーフェイスの部分 | public (public および protected API に適用)internal または friend (internal および private protected APIに適用)private (private API に適用)all (すべての API に適用)複数の値はコンマ (,) で区切ります |
public |
CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234 |
exclude_async_void_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
値を返さない非同期メソッドを無視するかどうか | true false |
false |
CA2007 |
Note
このオプションは、以前のバージョンでは skip_async_void_methods
という名前でした。
exclude_single_letter_type_parameters
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
1 文字の型パラメーターをそのルールから除外するかどうか (例: S の Collection<S> ) |
true false |
false |
CA1715 |
Note
このオプションは、以前のバージョンでは allow_single_letter_type_parameters
という名前でした。
output_kind
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
この型のアセンブリを生成するプロジェクト内のコードは、分析する必要があることを指定します | OutputKind 列挙型の 1 つまたは複数のフィールド 複数の値はコンマ (,) で区切ります |
すべての出力の種類 | CA2007 |
required_modifiers
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析する必要がある API の必須の修飾子を指定します | 下記の表 (「許可される修飾子」) の 1 つ以上の値 複数の値はコンマ (,) で区切ります |
ルールごとに異なる | CA1802 |
許可される修飾子 | まとめ |
---|---|
none |
修飾子の要件なし |
static または Shared |
static (Visual Basic では Shared ) として宣言する必要があります |
const |
const として宣言する必要があります |
readonly |
readonly として宣言する必要があります |
abstract |
abstract として宣言する必要があります |
virtual |
virtual として宣言する必要があります |
override |
override として宣言する必要があります |
sealed |
sealed として宣言する必要があります |
extern |
extern として宣言する必要があります |
async |
async として宣言する必要があります |
exclude_extension_method_this_parameter
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
拡張メソッドの this パラメーターの分析をスキップするかどうか |
true false |
false |
CA1062 |
null_check_validation_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
null チェック検証メソッドの名前。メソッドに渡された引数が null 値でないことを検証します | 許可されるメソッド名の形式 (| 区切り): - メソッド名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのメソッドが含まれます) - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで M: プレフィックスも使用可) |
なし | CA1062 |
additional_string_formatting_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
追加の文字列書式設定メソッドの名前 | 許可されるメソッド名の形式 (| 区切り): - メソッド名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのメソッドが含まれます) - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで M: プレフィックスも使用可) |
なし | CA2241 |
excluded_type_names_with_derived_types
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
型の名前 (その型と、そこから派生するすべての型が分析から除外されます) | 許可されるシンボル名の形式 (| 区切り): - 型の名前のみ (包含する型または名前空間に関係なく、その名前が指定されたすべての型が含まれます) - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで T: プレフィックスも使用可) |
なし | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
excluded_symbol_names
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析から除外されるシンボルの名前 | 許可されるシンボル名の形式 (| 区切り): - シンボル名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのシンボルが含まれます) - そのシンボルのドキュメント ID 形式の完全修飾名。 各シンボル名には、メソッドには M: プレフィックス、型には T: プレフィックス、名前空間には N: プレフィックスのように、シンボルの種類のプレフィックスが必要です。- コンストラクターには .ctor 、静的コンストラクターには .cctor |
なし | CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400 |
disallowed_symbol_names
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析のコンテキストで禁止されているシンボルの名前 | 許可されるシンボル名の形式 (| 区切り): - シンボル名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのシンボルが含まれます) - そのシンボルのドキュメント ID 形式の完全修飾名。 各シンボル名には、メソッドには M: プレフィックス、型には T: プレフィックス、名前空間には N: プレフィックスのように、シンボルの種類のプレフィックスが必要です。- コンストラクターには .ctor 、静的コンストラクターには .cctor |
なし | CA1031 |
exclude_ordefault_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析から FirstOrDefault メソッドと LastOrDefault メソッドを除外します。 |
true または false |
false |
CA1826 |
ignore_internalsvisibleto
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
InternalsVisibleToAttribute とマークされたアセンブリが分析に含まれます。 | true または false |
true |
CA1812CA1852 |
try_determine_additional_string_formatting_methods_automatically
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
追加の文字列書式設定メソッドのヒューリスティック検出を有効にするブール型のオプション。string format パラメーターの後に params object[] パラメーターが指定されているメソッドは、文字列書式指定メソッドと見なされます。 |
true または false |
false |
CA2241 |
unsafe_DllImportSearchPath_bits
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
DllImportSearchPath のどの値が分析に対して安全でないかを構成できます |
System.Runtime.InteropServices.DllImportSearchPath の整数値 |
770 (つまり、AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory ) |
CA5393 |
exclude_aspnet_core_mvc_controllerbase
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
CSRF を考慮する際に ASP.NET Core MVC ControllerBase を除外します | true または false |
true |
CA5391 |
dispose_analysis_kind
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
破棄違反を分析するパスを指定します | - AllPaths - すべてのパス (非例外パスと例外パス) で不足している破棄違反を追跡して報告します。 さらに、破棄漏れを引き起こす可能性がある、推奨されていない破棄パターンの使用にもフラグを設定します。- AllPathsOnlyNotDisposed - すべてのパス (非例外パスと例外パス) で不足している破棄違反を追跡して報告します。 破棄漏れを引き起こす可能性がある、推奨されていない破棄パターンの使用にフラグを設定しません。- NonExceptionPaths - 非例外プログラム パスのみで不足している破棄違反を追跡して報告します。 さらに、破棄漏れを引き起こす可能性がある、推奨されていない破棄パターンの使用にもフラグを設定します。- NonExceptionPathsOnlyNotDisposed - 非例外プログラム パスのみで不足している破棄違反を追跡して報告します。 破棄漏れを引き起こす可能性がある、推奨されていない破棄パターンの使用にフラグを設定しません。 |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
コンストラクターの呼び出しに渡される引数に関する破棄所有権の譲渡を構成します | true または false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
メソッドの呼び出しに引数として渡される破棄可能なオブジェクトに関する破棄所有権の譲渡を構成します | true または false |
false |
CA2000 |
enum_values_prefix_trigger
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
列挙値の名前付けルールをトリガーするしきい値を指定します | - AnyEnumValue - 列挙値の "いずれか" が列挙型の名前で始まる場合、ルールがトリガーされます。- AllEnumValues - 列挙値の "すべて" が列挙型の名前で始まる場合、ルールがトリガーされます。- Heuristic - ルールは、既定の FxCop ヒューリスティックを使用してトリガーされます (つまり、列挙値の 75% 以上が列挙型の名前で始まる場合に発生します)。 |
Heuristic |
CA1712 |
exclude_indirect_base_types
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
間接基本型を除外する | true または false |
true |
CA1710 |
additional_required_suffixes
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
追加の必要なサフィックスを指定します | 型名のリスト (| で区切られます) とその必要なサフィックス (-> で区切られます)。 許可されている型名の形式: - 型名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべての型が含まれます)。 - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで T: プレフィックスも使用可)。 |
なし | CA1710 |
additional_required_generic_interfaces
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
追加の必須ジェネリック インターフェイスを指定します | 必須のジェネリック完全修飾インターフェイス (| で区切られます) を使用して、インターフェイス名 (-> で区切られます) のリスト。 許可されているインターフェイスの形式: - インターフェイスの名前のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのインターフェイスが含まれます)。 - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで T: プレフィックスも使用可)。 |
なし | CA1010 |
例 :
オプション値 | まとめ |
---|---|
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 |
名前空間に関係なく ISomething を実装するすべての型は、System.Collections.Generic.IEnumerable\`1 を実装することも期待されます。 |
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 |
System.Collections.IDictionary を実装するすべての型は、System.Collections.Generic.IDictionary`2 を実装することも期待されます。 |
additional_inheritance_excluded_symbol_names
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
継承階層ツリーから除外する型または名前空間を指定します | 許可されている型名の形式: - 型または名前空間の名前 (包含する型または名前空間に関係なく、その名前が指定されたすべての型、および名前空間にその名前を含むすべての型が含まれます)。 - ワイルドカード記号で終わる型名または名前空間名 (包含する型または名前空間に関係なく、指定された名前で始まる名前のすべての型、およびその名前を含む名前空間のすべての種類が含まれます)。 - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで型の T: プレフィックスまたは名前空間の N: プレフィックスも使用可)。- 型のオプションの T: プレフィックスまたは名前空間の N: プレフィックスを使用し、ワイルドカード記号で終わる完全修飾型または名前空間の名前 (完全修飾名が指定された型名で始まるすべての型、または完全修飾名が指定された名前空間名で始まるすべての型を含みます)。 |
N:System.* (この値は常に指定された値に自動的に追加されます) |
CA1501 |
analyzed_symbol_kinds
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析するシンボルの種類を指定します | コンマ区切りリストとして SymbolKind の 1 つ以上のフィールド。 | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
use_naming_heuristic
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
Text 、Message 、または Caption を含むパラメーターまたはプロパティ名でこのルールがトリガーされるかどうかを構成します |
true または false |
false |
CA1303 |
additional_use_results_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
結果を使用する必要がある追加のカスタム API を指定します | 追加のメソッドの名前 (| で区切られます)。 許可されているメソッド名の形式: - メソッド名のみ (包含する型または名前空間に関係なく、その名前が指定されたすべてのメソッドが含まれます)。 - そのシンボルのドキュメント ID 形式の完全修飾名 (オプションで M: プレフィックスも使用可)。 |
なし | CA1806 |
allowed_suffixes
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
許可されるサフィックスを指定します | 許可されるサフィックスの一覧 (| で区切られます)。 | なし | CA1711 |
enable_platform_analyzer_on_pre_net5_target
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
.NET 5 より前の TFM の分析を有効にするかどうかを指定します | true または false |
false |
CA1416 |
exclude_structs
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
分析から構造体を除外するかどうかを指定します | true または false |
false |
CA1051 |
additional_enum_none_names
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
値が 0 の列挙フィールドに対して許可される追加の名前を指定します | 追加の名前の一覧 (| で区切られます)。 | なし | CA1008 |
enumeration_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
IEnumerable を列挙する追加のカスタム メソッドを指定します | 追加のメソッドの完全修飾名 (| で区切られます)。 | なし | CA1851 |
linq_chain_methods
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
追加のカスタマイズされた LINQ チェーン メソッドを指定します (つまり、メソッドは IEnumerable 引数を受け取り、新しい IEnumerable インスタンスを返します) |
追加のメソッドの完全修飾名 (| で区切られます)。 | なし | CA1851 |
assume_method_enumerates_parameters
説明 | 使用できる値 | 規定値 | 構成可能なルール |
---|---|---|---|
カスタマイズされたメソッドが IEnumerable パラメーターを列挙することを想定するかどうかを指定します |
true または false |
false |
CA1851 |
.NET