译 | 使用Roslyn分析器高效编写更好的代码
原文:Mika Dumont
翻譯:汪宇杰
Roslyn 是 .NET 編譯器平臺,即使在運行代碼之前,它也能幫助您捕獲 Bug。例如內置于 Visual Studio 中的Roslyn 拼寫檢查分析器。
假設您正在創建一個靜態方法,并將 static 單詞拼錯為 statc。在運行代碼之前,您將能夠看到此拼寫錯誤。因為 Roslyn 可以在鍵入代碼時生成警告,甚至在您完成行之前。換句話說,您不必編譯代碼之后才發現您犯了一個錯誤。
Roslyn 分析儀還可以通過 Visual Studio 燈泡圖標顯示自動代碼修復,從而允許您立即修復代碼。
但是,如果你能捕捉到更多的錯誤呢?
讓我向您介紹 Roslyn 分析器包。這些分析器集合提供了更詳細的分析,但隨 Visual Studio 默認工具發布。要了解有關我們最喜歡的 Roslyn 分析儀的詳細信息,請訪問我們的 Roslyn 分析器 GitHub 倉庫。此倉庫包括仍然適用于現代軟件開發的 FxCop,但現在以基于 Roslyn 的現代代碼分析平臺為目標。讓我們繼續,安裝這個包,以提高工作效率,更快地編寫更好的代碼!
譯者注:Roslyn 分析器 https://github.com/dotnet/roslyn-analyzers
將 FxCop 分析器作為 NuGet 包安裝
假設您使用的是 Visual Studio 2017 15.8 或更高版本,請選擇最新版本的 Microsoft.CodeAnalysis.FxCopAnalyzers。
使用包管理器 UI 在 Visual Studio 中安裝包。
安裝包后,只需從解決方案資源管理器自定義分析器診斷。分析器節點將顯示在解決方案資源管理器中的"引用"或"依賴項"節點下。如果展開分析器,然后展開其中一個分析器程序集,則可以在程序集中看到所有診斷。
您可以在屬性窗口中查看診斷的屬性,包括其描述和默認嚴重性。要查看屬性,請右鍵單擊規則并選擇"屬性",或選擇規則后按 Alt+Enter。
解決方案資源管理器中每個診斷項旁邊的圖標對應于您在編輯器中打開規則集時看到的圖標:
圓圈中的"i"表示信息
三角形中的"!" 表示警告
圓圈中的"x"表示嚴重
淺色背景上圓圈中的"i"表示隱藏的嚴重
圓圈中的"*"表示忽略的診斷
然后,可以從解決方案資源管理器設置規則集嚴重性。在解決方案資源管理器中,展開依賴項和分析器。展開包含要為其設置嚴重性的規則的程序集。右鍵單擊規則并選擇"設置規則集嚴重性",并在彈出的菜單中選擇一個嚴重性選項。
如果將規則嚴重性設置為警告,則會在代碼中收到該特定規則集的警告。
現在,您已經了解了分析器的工作原理,您可以提高工作效率,更快地編寫更好的代碼!
Q&A問:此警告顯示在 Visual Studio 中:"運行代碼分析已棄用為 FxCop 分析器,該分析器在生成期間運行。請參閱https://aka.ms/fxcopanalyzers遷移到 FxCop 分析儀"。這是什么意思?
答:FxCop 是比 Roslyn 早近十年的代碼分析引擎。就像我們推進編譯器(例如介紹 Roslyn)一樣,我們也在將代碼分析技術推進到 Roslyn 平臺。由于它由 .NET 編譯器平臺提供支持,因此在鍵入代碼時,它可以在代碼中生成警告。換句話說,您不必并編譯代碼才能發現您犯了一個錯誤。
問:FxCop分析儀和舊版FxCop分析器有什么區別?
答:FxCop 分析器在編譯過程中實時分析源代碼,而舊版 FxCop 是靜態代碼分析,并在生成完成后分析二進制文件。有關詳細信息,請參閱 Roslyn 分析器與靜態代碼分析(1)和 FxCop 分析器常見問題解答(2)。
問:我可以編寫自定義分析器嗎?
答:當然可以!有關如何編寫分析器的文檔,請參閱此處(3)。
問:我應該使用 Roslyn 分析器還是 .editorconfig 規范代碼樣式?
答:Roslyn 分析器和 .editorconfig 文件是齊頭并進的。在 .editorconfig 文件或文本編輯器選項頁上定義代碼樣式時,實際上正在配置內置于 Visual Studio 中的 Roslyn 分析器。
問:分析器在持續集成 (CI) 生成中工作嗎?
答:是的,分析器作為NuGet包可以 CI 中約束編譯。
問:在哪里可以請求更多分析器或報告錯誤?
答:您可以在 GitHub 上的 Roslyn 倉庫上請求更多分析器并報告 Bug。
譯者注:
(1)https://docs.microsoft.com/visualstudio/code-quality/roslyn-analyzers-overview?view=vs-2019#roslyn-analyzers-vs-static-code-analysis
(2) https://docs.microsoft.com/visualstudio/code-quality/fxcop-analyzers-faq?view=vs-2019
(3)https://docs.microsoft.com/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix
(4)https://github.com/dotnet/roslyn/issues
英文原文可點擊“閱讀原文”查看
總結
以上是生活随笔為你收集整理的译 | 使用Roslyn分析器高效编写更好的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 3.0之深入源码理解
- 下一篇: Visual Studio 支持 Jav