使用 .NET Compiler Platform (Roslyn) 分析器的程式碼分析

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

分析器會分成下列群組:

分析器的嚴重性層級

每個 Roslyn 分析器規則或診斷都有預設嚴重性和隱藏狀態,可針對專案自訂。

嚴重性等級包括:錯誤、警告、建議、無訊息、無和預設。 如需詳細資訊和行為,請參閱<設定嚴重性等級>(機器翻譯)。

規則違規

如果分析器發現任何分析器規則違規,它會在 [錯誤清單] 視窗和程式碼編輯器中回報。

下列螢幕擷取畫面顯示了 [錯誤清單] 視窗中回報的規則違規。 錯誤清單中回報的分析器違規符合規則的嚴重性等級設定

螢幕擷取畫面顯示 [錯誤清單] 視窗中分析器違規。

分析器規則違規也會在程式碼編輯器中以波形曲線形式顯示在違規程式碼下方。 例如,以下螢幕擷取畫面顯示三個違規:一個錯誤 (紅色波形曲線)、一個警告 (綠色波形曲線) 和一條建議 (三個灰色點):

螢幕擷取畫面顯示程式碼編輯器中錯誤、警告和建議標記。

程式碼修正

許多診斷都有一或多個相關聯的程式碼修正,可套用來修正規則違規。 程式碼修正會顯示在燈泡圖示功能表中,並顯示其他類型的快速動作。 如需程式碼修正的詳細資訊,請參閱<一般的快速動作>(英文)。

螢幕擷取畫面顯示程式碼編輯器中分析器違規和快速動作程式碼修正。

設定分析器嚴重性層級

可以從 EditorConfig 檔案或是燈泡功能表設定分析器規則的嚴重性。

還可以將分析器設定為在組建階段檢查程式碼,以及在輸入時即時檢查程式碼。 您可以設定即時程式碼分析的範圍:只針對目前文件、所有開啟的文件,或是整個解決方案。 如需詳細資訊,請參閱<設定 .NET 的即時程式碼分析>。

提示

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

安裝外部程式碼分析器

Visual Studio 包含一組一律為作用中的核心 Roslyn 分析器。 如果需要更多的程式碼分析器,可以透過 NuGet 套件為每個專案安裝外部分析器。 有些分析器也會以 Visual Studio .vsix 延伸模組的形式提供,在此情況下,這些分析器會套用至在 Visual Studio 中開啟的任何解決方案。 如需安裝這兩種不同類型分析器的相關資訊,請參閱<安裝程式碼分析器>(英文)。

範圍

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

注意

第一方分析器會隨附在 .NET SDK 內。 最好從 .NET SDK 啟用這些分析器,而不是將它們安裝為 Microsoft.CodeAnalysis.NetAnalyzersNuGet 套件。 從 .NET SDK 啟用分析器,可確保當更新 SDK 時,會自動取得分析器錯誤修正和新的分析器。 如需分析器的詳細資訊,請參閱<啟用或安裝第一方 .NET 分析器>。

建置錯誤

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

  • 建立 .NET 5.0 或更新版本專案,預設會啟用程式碼分析。 若要啟用以舊版 .NET 版本為目標的專案上程式碼分析,可將 EnableNETAnalyzers 屬性設為 true

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

下列螢幕擷取畫面顯示命令列建置輸出,其中所建置的專案包含了分析器違規:

螢幕擷取畫面顯示開發人員命令提示字元中違反規則的 MSBuild 輸出。

規則嚴重性

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

下一步