分享方式:


程式碼品質規則組態選項

除了設定嚴重性之外,「程式碼品質」規則還有其他組態選項。 例如,每個程式碼品質分析器都可以設定為只套用至程式碼基底的特定部分。 您可以將索引鍵/值組新增至 EditorConfig 檔案來指定這些選項,該檔案也是您指定規則嚴重性和一般編輯器喜好設定的位置。

注意

本文不會詳細說明如何設定規則的嚴重性。 用於設定規則嚴重性的 .editorconfig 選項具有與此處所述的選項 (dotnet_code_quality) 不同的首碼 (dotnet_diagnostic)。 此外,此處所述的選項僅適用於程式碼品質規則,但嚴重性選項還適用於程式碼樣式規則。 作為快速參考,您可以使用下列選項語法來設定規則的嚴重性:

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

不過,如需設定規則嚴重性的詳細資訊,請參閱嚴重性等級

選項範圍

每個精簡選項都可以針對所有規則、某個類別的規則 (例如「安全性」或「設計」) 或特定規則進行設定。

所有規則

針對「所有」規則設定選項的語法如下:

語法 範例
dotnet_code_quality.<選項名稱> = <選項值> dotnet_code_quality.api_surface = public

選項底下會列出 <OptionName> 的值。

某個類別的規則

針對某個「類別」的規則設定選項的語法如下:

語法 範例
dotnet_code_quality.<規則類別>.<選項名稱> = 選項值 dotnet_code_quality.Naming.api_surface = public

下表列出 <RuleCategory> 的可用值。

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

特定規則

針對「特定」規則設定選項的語法如下:

語法 範例
dotnet_code_quality.<規則識別碼>.<選項名稱> = <選項值> dotnet_code_quality.CA1040.api_surface = public

選項。

本節列出一些可用的選項。 若要查看可用選項的完整清單,請參閱分析器組態 (英文)。

api_surface

描述 允許的值 預設值 可設定的規則
要分析的 API 介面部分 public (適用於 publicprotected API)
internalfriend (適用於 internalprivate protected API)
private (適用於 private API)
all (適用於所有 API)

以逗號 (,) 分隔多個值
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

描述 允許的值 預設值 可設定的規則
是否忽略未傳回值的非同步方法 true
false
false CA2007

注意

此選項在舊版中的名稱為 skip_async_void_methods

exclude_single_letter_type_parameters

描述 允許的值 預設值 可設定的規則
是否要從規則中排除單一字元型別參數,例如 Collection<S> 中的 S true
false
false CA1715

注意

此選項在舊版中的名稱為 allow_single_letter_type_parameters

output_kind

描述 允許的值 預設值 可設定的規則
指定應分析專案中產生此類型組件的程式碼 OutputKind 列舉的一或多個欄位

以逗號 (,) 分隔多個值
所有輸出種類 CA2007

required_modifiers

描述 允許的值 預設值 可設定的規則
指定 API 中應分析的必要修飾元 以下「允許的修飾元」表格中的一或多個值

以逗號 (,) 分隔多個值
取決於每個規則 CA1802
允許的修飾元 摘要
none 不需要修飾元
staticShared 必須宣告為 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 檢查驗證方法名稱 允許的方法名稱格式 (以 | 分隔):
- 僅方法名稱 (包含具有該名稱的所有方法,無論包含類型或命名空間為何)
- 符號文件識別碼格式的完整名稱,可選擇性地在前面加上 M:
CA1062

additional_string_formatting_methods

描述 允許的值 預設值 可設定的規則
其他字串格式方法的名稱 允許的方法名稱格式 (以 | 分隔):
- 僅方法名稱 (包含具有該名稱的所有方法,無論包含類型或命名空間為何)
- 符號文件識別碼格式的完整名稱,可選擇性地在前面加上 M:
CA2241

excluded_type_names_with_derived_types

描述 允許的值 預設值 可設定的規則
要在分析中排除本身類型及其所有衍生類型的類型名稱 允許的符號名稱格式 (以 | 分隔):
- 僅類型名稱 (包含具有該名稱的所有類型,無論包含類型或命名空間為何)
- 符號文件識別碼格式的完整名稱,可選擇性地在前面加上 T:
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

描述 允許的值 預設值 可設定的規則
要在分析中排除的符號名稱 允許的符號名稱格式 (以 | 分隔):
- 僅符號名稱 (包含具有該名稱的所有符號,無論包含類型或命名空間為何)
- 符號文件識別碼格式的完整名稱。 每個符號名稱都需要符號種類前置詞,例如 M: 代表方法、T: 代表類型,而 N: 則代表命名空間。
- .ctor 代表建構函式,而 .cctor 則代表靜態建構函式
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

描述 允許的值 預設值 可設定的規則
分析內容中不允許的符號名稱 允許的符號名稱格式 (以 | 分隔):
- 僅符號名稱 (包含具有該名稱的所有符號,無論包含類型或命名空間為何)
- 符號文件識別碼格式的完整名稱。 每個符號名稱都需要符號種類前置詞,例如 M: 代表方法、T: 代表類型,而 N: 則代表命名空間。
- .ctor 代表建構函式,而 .cctor 則代表靜態建構函式
CA1031

exclude_ordefault_methods

描述 允許的值 預設值 可設定的規則
從分析中排除 FirstOrDefaultLastOrDefault 方法。 truefalse false CA1826

ignore_internalsvisibleto

描述 允許的值 預設值 可設定的規則
包括在分析中標示 InternalsVisibleToAttribute 的組件。 truefalse true CA1812 CA1852

try_determine_additional_string_formatting_methods_automatically

描述 允許的值 預設值 可設定的規則
布林值選項,可啟用其他字串格式方法的啟發學習偵測。
如果方法具有 string format 參數,後面接著 params object[] 參數,則會將方法視為字串格式方法。
truefalse 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 truefalse true CA5391

dispose_analysis_kind

描述 允許的值 預設值 可設定的規則
指定要分析以處置違規的路徑 - AllPaths - 追蹤和報告所有路徑上遺失的處置違規(非例外狀況和例外狀況路徑)。 此外,也標記使用可能導致潛在處置流失的非建議處置模式。
- AllPathsOnlyNotDisposed - 追蹤和報告所有路徑上遺失的處置違規 (非例外狀況和例外狀況路徑)。 請勿標記使用可能導致潛在處置流失的非建議處置模式。
- NonExceptionPaths - 只追蹤和報告非例外狀況程式路徑上遺失的處置違規。 此外,也標記使用可能導致潛在處置流失的非建議處置模式。
- NonExceptionPathsOnlyNotDisposed - 只追蹤和報告非例外狀況程式路徑上遺失的處置違規。 請勿標記使用可能導致潛在處置流失的非建議處置模式。
NonExceptionPaths CA2000

dispose_ownership_transfer_at_constructor

描述 允許的值 預設值 可設定的規則
針對傳遞至建構函式引動過程的引數設定處置擁有權轉移 truefalse false CA2000

dispose_ownership_transfer_at_method_call

描述 允許的值 預設值 可設定的規則
針對當做引數傳遞至方法呼叫的可處置物件設定處置擁有權轉移 truefalse false CA2000

enum_values_prefix_trigger

描述 允許的值 預設值 可設定的規則
指定要觸發列舉值命名規則的閾值 - AnyEnumValue - 如果 任何 列舉值的開頭是列舉型別名稱,就會觸發規則。
- AllEnumValues - 如果 所有 列舉值的開頭是都是列舉型別名稱,就會觸發規則。
- Heuristic - 系統會使用預設 FxCop 啟發學習法觸發規則 (也就是至少 75% 的列舉值開頭是列舉型別名稱時)。
Heuristic CA1712

exclude_indirect_base_types

描述 允許的值 預設值 可設定的規則
排除間接基底類型 truefalse true CA1710

additional_required_suffixes

描述 允許的值 預設值 可設定的規則
指定其他必要的尾碼 類型名稱清單 (以 | 分隔) 及其必要的尾碼 (以 -> 分隔)。 允許的類型名稱格式:
- 僅限類型名稱 (包含該名稱的所有類型,無論包含的類型或命名空間為何)。
- 以符號的文件識別碼為格式的完整名稱,具有選用的 T: 首碼。
CA1710

additional_required_generic_interfaces

描述 允許的值 預設值 可設定的規則
指定其他必要的泛型介面 介面名稱的清單 (以 | 分隔),當中包含其必要的泛型完整介面 (以 -> 分隔)。 允許的介面格式:
- 僅限介面名稱 (包括包含名稱的所有介面,無論包含的類型或命名空間為何)。
- 以符號的文件識別碼為格式的完整名稱,具有選用的 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

描述 允許的值 預設值 可設定的規則
指定要從繼承階層樹狀結構中排除的類型或命名空間 允許的類型名稱格式:
- 類型或命名空間名稱 (包含該名稱的所有類型,無論包含的類型或命名空間為何,以及命名空間包含名稱的所有類型)。
- 以萬用字元符號結尾的類型或命名空間名稱 (包括名稱開頭為指定名稱的所有類型,不論包含類型或命名空間爲何,以及命名空間包含名稱的所有類型)。
- 以符號的文件識別碼為格式的完整名稱,具有類型選用的 T: 首碼或命名空間選用的 N: 首碼。
- 以符號的文件識別碼為格式的完整名稱,具有類型選用的 T: 首碼或命名空間選用的 N: 首碼,並以萬用字元符號結尾 (包括其完整名稱以指定類型名稱開頭的所有類型,或其完整名稱以指定命名空間名稱開頭的所有類型)。
N:System.* (此值一律會自動新增至所提供的值) CA1501

analyzed_symbol_kinds

描述 允許的值 預設值 可設定的規則
指定要分析的符號種類 一或多個 SymbolKind 欄位做為逗號分隔清單。 Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

描述 允許的值 預設值 可設定的規則
設定參數或屬性名稱包含 TextMessageCaption 的項目是否會觸發此規則 truefalse false CA1303

additional_use_results_methods

描述 允許的值 預設值 可設定的規則
指定必須使用其結果的其他自訂 API 其他方法的名稱 (以 | 分隔)。 允許的方法名稱格式:
- 僅限方法名稱 (包含具有該名稱的所有方法,無論包含的類型或命名空間為何)。
- 以符號的文件識別碼為格式的完整名稱,具有選用的 M: 首碼。
CA1806

allowed_suffixes

描述 允許的值 預設值 可設定的規則
指定允許的尾碼 允許尾碼的清單 (以 | 分隔)。 CA1711

enable_platform_analyzer_on_pre_net5_target

描述 允許的值 預設值 可設定的規則
指定是否要在 .NET 5 之前啟用 TTFM 的分析 truefalse false CA1416

exclude_structs

描述 允許的值 預設值 可設定的規則
指定是否要從分析中排除結構 truefalse false CA1051

additional_enum_none_names

描述 允許的值 預設值 可設定的規則
指定零值列舉欄位的其他允許名稱 其他名稱的清單 (以 | 分隔)。 CA1008

enumeration_methods

描述 允許的值 預設值 可設定的規則
指定列舉 IEnumerable 的其他自訂方法 其他方法的完整名稱 (以 | 分隔)。 CA1851

linq_chain_methods

描述 允許的值 預設值 可設定的規則
指定其他自訂的 LINQ 鏈結方法 (即方法會採用 IEnumerable 引數並傳回新的 IEnumerable 執行個體) 其他方法的完整名稱 (以 | 分隔)。 CA1851

assume_method_enumerates_parameters

描述 允許的值 預設值 可設定的規則
指定是否要假設自訂方法會列舉其 IEnumerable 參數 truefalse false CA1851