原始程式碼分析概觀
適用於: Visual Studio
Visual Studio for Mac
Visual Studio Code
.NET 編譯器平台 (Roslyn) 分析器會檢查 C# 或 Visual Basic 程式碼以找出樣式、品質、可維護性、設計和其他問題。 這項檢查或分析會在所有開啟檔案的設計階段進行。
分析器會分成下列群組:
程式碼樣式分析器內建於 Visual Studio 中。 分析器的診斷識別碼或程式碼格式為 IDExxxx,例如 IDE0001。 您可以在文字編輯器選項頁面或 EditorConfig 檔案中設定喜好設定。 從 .NET 5.0 開始,程式碼樣式分析器會隨附於 .NET SDK 中,且可作為建置警告或錯誤嚴格強制執行。 如需詳細資訊,請參閱 .NET 原始程式碼分析概觀。
程式碼品質分析器現在隨附於 .NET 5 SDK 中,且預設為啟用。 分析器的診斷識別碼或程式碼格式為 CAxxxx,例如 CA1822。 如需詳細資訊,請參閱 .NET 程式碼品質分析概觀。
您可以安裝外部分析器,例如 StyleCop、Roslynator、XUnit Analyzers 和 Sonar Analyzer,作為 NuGet 套件或 Visual Studio 延伸模組。
分析器的嚴重性層級
每個分析器都有下列其中一個嚴重性層級:
嚴重性 (方案總管) | 嚴重性 (EditorConfig 檔案) | 建置時間行為 | 編輯器行為 |
---|---|---|---|
錯誤 | error |
違規會顯示為錯誤清單和命令列建置輸出中的錯誤,並導致建置失敗。 | 違規程式碼會以紅色波浪線加上底線,並以捲軸中的紅色小方塊標示。 |
警告 | warning |
違規會顯示為錯誤清單和命令列建置輸出中的警告,但不會導致建置失敗。 | 違規程式碼會以綠色波浪線加上底線,並以捲軸中的綠色小方塊標示。 |
資訊 | suggestion |
違規會顯示為錯誤清單中的訊息,但不會顯示在命令列建置輸出中。 | 違規程式碼會以灰色波浪線加上底線,並以捲軸中的灰色小方塊標示。 |
已隱藏 | silent |
使用者不可見。 | 使用者不可見。 不過,診斷會回報給 IDE 診斷引擎。 |
無 | none |
已完全隱藏。 | 已完全隱藏。 |
預設 | default |
對應至規則的預設嚴重性。 若要判斷規則的預設值為何,請查看 [屬性] 視窗。 | 對應至規則的預設嚴重性。 |
如果分析器發現規則違規,就會在程式碼編輯器視窗和 [錯誤清單] 中回報這些違規,在違規程式碼下方顯示為「波形曲線」。
錯誤清單中回報的分析器違規符合規則嚴重性層級設定。 分析器違規也會在程式碼編輯器中,於違規程式碼下方顯示波形曲線。 下圖顯示三個違規 — 一個錯誤 (紅色波浪線)、一個警告 (綠色波浪線) 和一個建議 (三個灰色點):
許多分析器規則或診斷都有一或多個相關聯的程式碼修正,可套用以修正規則違規。 程式碼修正會顯示在燈泡圖示功能表中,並顯示其他類型的快速動作。 如需這些程式碼修正的資訊,請參閱一般的快速動作。
設定分析器嚴重性層級
您可以從 EditorConfig 檔案或是燈泡功能表設定分析器規則的嚴重性或診斷。
分析器也可以設定為在組建階段檢查程式碼,以及在您輸入時即時檢查程式碼。 您可以設定即時程式碼分析的範圍:只針對目前文件、所有開啟的文件,或是整個解決方案。 請參閱操作說明:設定即時程式碼分析的範圍。
提示
只有在將分析器作為 NuGet 套件安裝時,才會顯示程式碼分析器的建置期間錯誤和警告。 內建分析器 (例如,IDE0067 和 IDE0068) 永遠不會在組建期間執行。
NuGet 套件與 VSIX 延伸模組
您可以透過 NuGet 套件為每個專案安裝外部分析器。 有些分析器也會以 Visual Studio 延伸模組的形式提供,在此情況下,這些分析器會套用至您在 Visual Studio 中開啟的任何解決方案。 這兩種安裝分析器的方法之間有一些重要的行為差異。
範圍
如果您將分析器安裝為 Visual Studio 延伸模組,則會在解決方案層級套用,並套用至 Visual Studio 的所有執行個體。 如果您將分析器安裝為 NuGet 套件 (這是慣用方法),則只會套用至安裝 NuGet 套件的專案。 在小組環境中,安裝為 NuGet 套件的分析器會將範圍限制在處理該專案的「所有開發人員」。
注意
第一方分析器也會隨附在 .NET SDK 內。 建議您盡可能從 .NET SDK 啟用這些分析器,而不是安裝 Microsoft.CodeAnalysis.NetAnalyzers
NuGet 套件。 從 .NET SDK 啟用分析器,可確保當您更新 SDK 時,會自動取得分析器錯誤修正和新的分析器。 如需詳細資訊,請參閱 啟用或安裝第一方 .NET 分析器。
建置錯誤
若要在組建階段強制執行規則 (包括透過命令列或作為持續整合 (CI) 組建的一部分),請選擇下列其中一個選項:
建立 .NET 5.0 或更新版本的專案,在 .NET SDK 中預設會包含分析器。 根據預設,以 .NET 5.0 或更新版本為目標的專案會啟用程式碼分析。 您可將 EnableNETAnalyzers 屬性設為 true 來啟用以舊版 .NET 版本為目標的專案上程式碼分析。
將分析器安裝為 NuGet 套件。 如果您將分析器安裝為延伸模組,則分析器警告和錯誤不會顯示在組建報告中。
下列影像顯示命令列建置輸出,其中所建置的專案包含了分析器違規:
規則嚴重性
安裝為 Visual Studio 延伸模組的分析器無法設定規則嚴重性。 若要設定規則嚴重性,請將分析器安裝為 NuGet 套件。