程式碼分析的組態選項

程式碼分析規則具有各種組態選項。 其中一些選項會使用 語法 <option key> = <option value> ,在分析器組態檔中指定為索引鍵/值組。 其他設定程式碼分析整體的選項可作為專案檔中的屬性。

您將設定的最常見選項是 規則的嚴重性。 您可以設定任何規則的嚴重性層級,包括 程式碼品質規則程式碼樣式規則。 例如,若要啟用規則作為警告,請將下列機碼/值組新增至 分析器組態檔

dotnet_diagnostic.<rule ID>.severity = warning

您也可以設定其他選項來自訂規則行為:

  • 程式碼品質規則有 設定行為的選項 ,例如應套用規則的方法名稱。
  • 程式碼樣式規則有 選項 可定義樣式喜好設定,例如需要新行的位置。
  • 協力廠商分析器規則可以使用自訂索引鍵名稱和值格式來定義自己的組態選項。

一般選項

這些選項適用于整個程式碼分析。 它們不能只套用至特定規則。

如需其他選項,請參閱 程式碼分析屬性

啟用程式碼分析

預設會針對以 .NET 5 和更新版本為目標的專案啟用程式碼分析。 如果您有 .NET 5+ SDK,但您的專案以不同的 .NET 實作為目標,您可以將專案檔中的 EnableNETAnalyzers 屬性設定為 true ,以手動啟用程式碼分析。

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

分析模式

雖然 .NET SDK 包含所有程式碼分析規則,但預設只會啟用其中一些規則。 分析模式會決定啟用哪一組規則。 您可以選擇啟用大部分或所有規則的更積極分析模式,或停用大部分或所有規則的較保守分析模式,然後視需要加入宣告特定規則。 將 AnalysisMode 屬性新增至專案檔,以設定您的分析模式。

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

排除產生的程式碼

.NET 程式碼分析器警告不適用於產生的程式碼檔案,例如設計工具產生的檔案,使用者無法編輯以修正任何違規。 在大部分情況下,程式碼分析器會略過產生的程式碼檔案,而且不會回報這些檔案的違規。

根據預設,具有特定副檔名或自動產生的檔頭的檔案會被視為產生的程式碼檔案。 例如,結尾為 .designer.cs.generated.cs 的檔案名會被視為產生的程式碼。 此組態選項可讓您指定要視為產生的程式碼的其他命名模式。 您可以將專案 generated_code = true | false 新增至組 態檔,以設定其他檔案和資料夾。 例如,若要將所有名稱結尾為 .MyGenerated.cs 的檔案視為產生的程式碼,請新增下列專案:

[*.MyGenerated.cs]
generated_code = true

規則特定選項

規則特定選項可以套用至單一規則、一組規則或所有規則。 規則特定選項包括:

嚴重性層級

下表顯示您可以針對所有分析器規則設定的不同規則嚴重性,包括程式碼品質和程式碼樣式規則。

嚴重性設定值 編譯時間行為
error 違規會顯示為建置 錯誤 ,並導致組建失敗。
warning 除非您可以選擇將警告視為) 錯誤,否則違規會顯示為建置 警告, 但不會造成建置失敗 (。
suggestion 違規會顯示為建置訊息,以及Visual Studio IDE 中的建議。
silent 使用者看不到違規。
none 規則已完全隱藏。
default 會使用規則的預設嚴重性。 每個 .NET 版本的預設嚴重性都會列在 roslyn-analyzers 存放庫中。 在該資料表中,「Disabled」 對應至 none 、[隱藏] 對應至 silent ,而 「Info」 對應至 suggestion

提示

如需規則嚴重性如何在Visual Studio中呈現的資訊,請參閱嚴重性層級

範圍

  • 單一規則

    若要設定單一規則的規則嚴重性,請使用下列語法。

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • 規則類別

    若要設定規則類別的預設規則嚴重性,請使用下列語法。 不過,此嚴重性設定只會影響預設啟用該類別中的規則。

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    不同的類別會列示並在 規則類別中描述。 此外,您可以在其參考頁面上找到特定規則的類別,例如 CA1000

  • 所有規則

    若要設定所有分析器規則的預設規則嚴重性,請使用下列語法。 不過,此嚴重性設定只會影響預設啟用的規則。

    dotnet_analyzer_diagnostic.severity = <severity value>
    

重要

當您針對具有單一專案之多個規則設定嚴重性層級時,無論是針對規則 類別所有 規則,嚴重性只會套用至 預設啟用的規則。 若要啟用預設停用的規則,您必須:

注意

設定單一規則 dotnet_diagnostic 嚴重性前置詞與透過類別或所有規則 dotnet_analyzer_diagnostic 設定嚴重性前置詞稍有不同。

優先順序

如果您有多個可套用至相同規則識別碼的嚴重性設定專案,則會依下列順序選擇優先級:

  • 依識別碼指定個別規則的專案優先于類別的專案。
  • 類別的專案優先于所有分析器規則的專案。

請考慮下列範例,其中 CA1822 具有類別 「效能」:

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

在上述範例中,這三個嚴重性專案都適用于 CA1822。 不過,使用指定的優先順序規則,第一個規則識別碼型專案會優先于下一個專案。 在此範例中,CA1822 將具有 的有效嚴重性 error 。 「效能」類別內所有其他規則的嚴重性 warning 為 。

如需如何決定檔案間優先順序的詳細資訊,請參閱 組態檔一文的優先順序一節