原始程式碼分析概觀

適用于:是Visual Studio否Visual Studio for Mac否Visual Studio Code

.NET Compiler Platform (Roslyn) Analyzers 會檢查 C# 或 Visual Basic 程式碼的樣式、品質、可維護性、設計和其他問題。 此檢查或分析會在所有開啟的檔案的設計階段進行。

分析器分成下列群組:

分析器的嚴重性層級

每個分析器都有下列其中一個嚴重性層級:

嚴重性 (方案總管) EditorConfig 檔案 (嚴重性) 編譯時間行為 編輯器行為
錯誤 error 違規會顯示為 [錯誤清單] 和命令列建置輸出中的 [錯誤 ],並導致組建失敗。 違規程序代碼會加上紅色波浪線,並在捲軸中以小紅色方塊標示。
警告 warning 違規會顯示為錯誤清單和命令列建置輸出中的 警告 ,但不會造成組建失敗。 違規程序代碼會加上綠色波浪線加上底線,並在捲軸中以小綠色方塊標示。
Info suggestion 違規會顯示為 [錯誤清單] 中的 [訊息 ],而不是在命令列建置輸出中。 違規程序代碼會加上灰色波浪線,並在捲軸中以小灰色方塊標示。
Hidden silent 使用者看不到。 使用者看不到。 不過,診斷會回報給 IDE 診斷引擎。
none 完全隱藏。 完全隱藏。
預設 default 對應至規則的預設嚴重性。 若要判斷規則的預設值為何,請查看屬性視窗。 對應至規則的預設嚴重性。

如果分析器發現規則違規,則會在程式碼編輯器中回報為違規程序代碼和 [錯誤清單] 視窗中的 波浪線

[錯誤清單] 視窗中的分析器違規

錯誤清單中回報的分析器違規符合規則的 嚴重性層級設定 。 分析器違規也會在程式碼編輯器中顯示為違反程式碼下的波浪線。 下圖顯示三個違規:一個錯誤 (紅色波浪線) 、一個警告 (綠色波浪線) ,另一個建議 (三個灰色點) :

Visual Studio 程式碼編輯器中的波浪線

許多分析器規則或 診斷都有一或多個相關聯的程式 代碼修正 ,您可以套用以更正規則違規。 程式碼修正會顯示在燈泡圖示功能表中,並顯示其他類型的快速動作。 如需這些程式碼修正的資訊,請參閱一般的快速動作

分析器違規和快速動作程式碼修正

設定分析器嚴重性層級

您可以在EditorConfig 檔案燈泡功能表中設定分析器規則或診斷的嚴重性。

分析器也可以設定為在您輸入時檢查建置時間和即時程式碼。 您可以設定即時程式碼分析的範圍,只針對目前檔、所有開啟的檔或整個方案執行。 請參閱 如何:設定即時程式碼分析的範圍

提示

只有在將分析器作為 NuGet 套件安裝時,才會顯示程式碼分析器的建置期間錯誤和警告。 內建分析器 (例如,IDE0067 和 IDE0068) 永遠不會在建置期間執行。

NuGet 套件與 VSIX 延伸模組

您可以透過 NuGet 套件為每個專案安裝外部分析器。 有些也可以 Visual Studio 延伸模組的形式提供,在此情況下,它們會套用至您在 Visual Studio 中開啟的任何解決方案。 這兩種安裝分析器的方法之間有一些重要的行為差異。

影響範圍

如果您將分析器安裝為 Visual Studio 延伸模組,它們會套用至方案層級,並套用至 Visual Studio 的所有實例。 如果您將分析器安裝為 NuGet 套件 (這是慣用方法),則只會套用至安裝 NuGet 套件的專案。 在小組環境中,安裝為 NuGet 套件的分析器會將範圍限制在處理該專案的「所有開發人員」

注意

第一方分析器也會隨附于 .NET SDK 內。 建議您盡可能從 .NET SDK 啟用這些分析器,而不是安裝 Microsoft.CodeAnalysis.NetAnalyzersNuGet 套件。 從 .NET SDK 啟用分析器可確保在您更新 SDK 時,立即自動取得分析器錯誤修正和新的分析器。 如需詳細資訊,請參閱 啟用或安裝第一方 .NET 分析器

建置錯誤

若要在建置階段強制執行規則,包括透過命令列或作為持續整合的一部分, (CI) 組建,請選擇下列其中一個選項:

  • 建立 .NET 5.0 或更新版本專案,此專案預設會在 .NET SDK 中包含分析器。 根據預設,以 .NET 5.0 或更新版本為目標的專案會啟用程式碼分析。 您可以將 EnableNETAnalyzers 屬性設定為 true,在以舊版 .NET 為目標的專案上啟用程式碼分析。

  • 將分析器安裝為 NuGet 套件。 如果您將分析器安裝為延伸模組,則分析器警告和錯誤不會顯示在組建報告中。

下圖顯示建置包含分析器規則違規之專案的命令列建置輸出:

包含違規的 MSBuild 輸出

規則嚴重性

您無法從安裝為 Visual Studio 延伸模組的分析器設定規則嚴重性。 若要設定規則嚴重性,請將分析器安裝為 NuGet 套件。

下一步

另請參閱