共用方式為


程式碼品質規則組態選項

除了設定嚴重性之外,「程式碼品質」規則還有其他組態選項。 例如,每個程式碼品質分析器都可以設定為只套用至程式碼基底的特定部分。 您可以將索引鍵/值組新增至 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

選項。

本節列出程式代碼分析器的可用組態選項。 如需詳細資訊,請參閱 Analyzer 組態

api_surface

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

以逗號 (,) 分隔多個值
public CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058fCA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

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

注意

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

exclude_single_letter_type_parameters

描述 允許的值 預設值 可設定的規則
是否要從規則中排除單一字元型別參數,例如 S 中的 Collection<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:
CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

excluded_symbol_names

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

disallowed_symbol_names

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

exclude_ordefault_methods

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

ignore_internalsvisibleto

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

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

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

數據流分析選項

本節中的選項會設定數據流分析規則。 選項包括:

如需資料串流分析的詳細資訊,請參閱 撰寫資料串流分析型分析器

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

跨程序分析類型

描述 允許的值 預設值 可設定的規則
指定是否要針對源方法調用執行跨程序分析 NoneNonContextSensitiveContextSensitive 每個可配置規則的特性 CA1062CA1303CA1508CA2000CA2100CA22213

max_interprocedural_method_call_chain

描述 允許的值 預設值 可設定的規則
指定要分析之跨程序數據流分析的方法呼叫鏈結長度上限 不帶正負號的整數 3 CA1062CA1303CA1508CA2000CA2100CA22213

最大跨程序 Lambda 或本地函數調用鏈

描述 允許的值 預設值 可設定的規則
指定用於分析跨程序數據流分析的 Lambda 表達式或本地函數呼叫鏈的最大長度。 不帶正負號的整數 3 CA1062CA1303CA1508CA2000CA2100CA22213

指向分析類型

描述 允許的值 預設值 可設定的規則
指定是否要執行 pointsToAnalysis NonePartialWithoutTrackingFieldsAndPropertiesComplete 每個規則的特定 CA1062CA1303CA1508CA2000CA2100CA22213

複製分析

描述 允許的值 預設值 可設定的規則
指定是否執行 複製分析(追蹤值和參考複本) truefalse 大部分規則為 true CA1062CA1303CA1508CA2000CA2100CA22213

為弱KDF演算法設定足夠的迭代次數

描述 允許的值 預設值 可設定的規則
在使用弱金鑰衍生函數(KDF)演算法時,設定足夠的迭代次數。 整數 大多數規則的數量為100000 CA1062CA1303CA1508CA2000CA2100CA22213