程式碼品質規則組態選項
除了設定嚴重性之外,「程式碼品質」規則還有其他組態選項。 例如,每個程式碼品質分析器都可以設定為只套用至程式碼基底的特定部分。 您可以將索引鍵/值組新增至 EditorConfig 檔案來指定這些選項,該檔案也是您指定規則嚴重性和一般編輯器喜好設定的位置。
注意
本文不會詳細說明如何設定規則的嚴重性。 設定規則嚴重性之 .editorconfig 選項的前置詞 (dotnet_diagnostic
),與此處所述選項的前置詞 (dotnet_code_quality
) 不同。 此外,此處所述的選項僅適用於程式碼品質規則,但嚴重性選項還適用於程式碼樣式規則。 作為快速參考,您可以使用下列選項語法來設定規則的嚴重性:
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
- 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 |
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 |
不需要修飾元 |
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 檢查驗證方法名稱 | 允許的方法名稱格式 (以 | 分隔): - 僅方法名稱 (包含具有該名稱的所有方法,無論包含類型或命名空間為何) - 符號文件識別碼格式的完整名稱,可選擇性地在前面加上 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
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
從分析中排除 FirstOrDefault 和 LastOrDefault 方法。 |
true 或 false |
false |
CA1826 |
ignore_internalsvisibleto
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
包括在分析中標示 InternalsVisibleToAttribute 的組件。 | true 或 false |
true |
CA1812 CA1852 |
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
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定其他必要的尾碼 | 類型名稱清單 (以 | 分隔) 及其必要的尾碼 (以 -> 分隔)。 允許的類型名稱格式:- 僅限類型名稱 (包含該名稱的所有類型,無論包含的類型或命名空間為何)。 - 以符號的文件識別碼為格式的完整名稱,具有選用的 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
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
設定參數或屬性名稱包含 Text 、Message 或 Caption 的項目是否會觸發此規則 |
true 或 false |
false |
CA1303 |
additional_use_results_methods
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定必須使用其結果的其他自訂 API | 其他方法的名稱 (以 | 分隔)。 允許的方法名稱格式: - 僅限方法名稱 (包含具有該名稱的所有方法,無論包含的類型或命名空間為何)。 - 以符號的文件識別碼為格式的完整名稱,具有選用的 M: 首碼。 |
無 | CA1806 |
allowed_suffixes
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定允許的尾碼 | 允許尾碼的清單 (以 | 分隔)。 | 無 | CA1711 |
enable_platform_analyzer_on_pre_net5_target
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定是否要在 .NET 5 之前啟用 TTFM 的分析 | true 或 false |
false |
CA1416 |
exclude_structs
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定是否要從分析中排除結構 | true 或 false |
false |
CA1051 |
additional_enum_none_names
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定零值列舉欄位的其他允許名稱 | 其他名稱的清單 (以 | 分隔)。 | 無 | CA1008 |
enumeration_methods
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定列舉 IEnumerable 的其他自訂方法 | 其他方法的完整名稱 (以 | 分隔)。 | 無 | CA1851 |
linq_chain_methods
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定其他自訂的 LINQ 鏈結方法 (即方法會採用 IEnumerable 引數並傳回新的 IEnumerable 執行個體) |
其他方法的完整名稱 (以 | 分隔)。 | 無 | CA1851 |
assume_method_enumerates_parameters
描述 | 允許的值 | 預設值 | 可設定的規則 |
---|---|---|---|
指定是否要假設自訂方法會列舉其 IEnumerable 參數 |
true 或 false |
false |
CA1851 |