1. 程式人生 > WINDOWS開發 >.NET API analyzer

.NET API analyzer

  微軟提供了很多分析器,今天介紹一個.NET API analyzer,.NET API分析器是Roslyn分析器,它發現不同平臺上C#API的潛在相容性風險,並檢測對不贊成使用的API的呼叫。.NET API analyzer目前在VS2017或者更高版本的VS中提供,而且還是預發行版本。經過測試.NET API analyzer工具在.NET Core專案中比較好用。

一、下載安裝

  1、開啟Visual Studio2019

  2、右鍵要執行分析器的專案,然後選擇“管理NuGet軟體包”

  3、在NuGet軟體包管理器選項卡上:選擇“ nuget.org”作為程式包源,選擇包括預釋出,搜尋Microsoft.DotNet.Analyzers.Compatibility

  技術分享圖片

  4、點選安裝

二、.NET API analyzer作用

  主要作用就是發現不推薦使用的API並給於提示,我們之前通知API已過時且不應該使用的一種方法是使用ObsoleteAttribute屬性對其進行標記,但是這種方法的缺點是,對於所有過時的API只有一個診斷ID ,這意味著:

    •   每種情況下都有專用的檔案是不可能的。
    •   禁止顯示某些類別的警告是不可能的。您可以全部或全部不顯示。
    •   為了通知使用者新的棄用,必須更新引用的程式集或目標程式包。

  總結說就是使用ObsoleteAttribute無法對單個警告作隨意處理。

  API分析器使用以DE開頭的特定於API的錯誤程式碼,該程式碼允許控制各個警告的顯示

三、.NET API analyzer的使用

  1、警告顯示

    在程式碼中使用過時的API(例如WebClient)時,API Analyzer會以綠色的波浪線突出顯示它。將滑鼠懸停在API呼叫上時,將顯示一個燈泡,其中包含有關API棄用的資訊,如以下示例所示:

技術分享圖片

    該錯誤列表視窗包含與每棄用API一個唯一的ID警告,顯示在下面的例子中(DE0004):通過單擊ID,您將轉到一個網頁,其中包含有關不贊成使用該API的原因的詳細資訊以及有關可以使用的替代API的建議。

技術分享圖片

  2、警告的處理    

    可以通過右鍵單擊突出顯示的成員並選擇抑制<diagnostic ID>來抑制任何警告

有兩種抑制警告的方法:

    (1)第一種辦法是在本地禁止警告:為了抑制區域性的警告,在部件上右鍵單擊您要為禁止警告,然後選擇快捷操作和的重構>禁止診斷ID<診斷ID>>在原始碼。該的#pragma警告前處理器指令被新增到限定的範圍你的原始碼

技術分享圖片

    (2)第二種方法:全域性禁止警告,禁止警告全球範圍內,在部件上右鍵單擊您要為禁止警告,然後選擇快捷操作和的重構>禁止診斷ID<診斷ID>>在抑制檔案。

技術分享圖片

      一個GlobalSuppressions.cs檔案會新增到專案中。新的全域性禁止都會新增到此檔案。建議使用全域性抑制來確保跨專案的API使用的一致性。

技術分享圖片

三、跨平臺中的使用

  與不推薦使用的API相似,分析器可以識別所有非跨平臺的API。例如,Console.WindowWidth在Windows上有效,但在Linux和macOS上無效。診斷ID顯示在“錯誤列表”視窗中。如果僅針對某些平臺開發程式碼,則可以對不使用的所有其他平臺禁止所有警告不打算在上面執行程式碼。為此,您只需要編輯專案檔案並新增PlatformCompatIgnore列出所有要忽略的平臺屬性。可接受的值為:LinuxmacOSWindows

<PropertyGroup>
    <PlatformCompatIgnore>Linux;macOS</PlatformCompatIgnore>
</PropertyGroup>

  如果您的程式碼針對多個平臺,並且您想利用其中某些平臺不支援的API,則可以使用以下if語句來保護程式碼的這一部分

if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
     var w = Console.WindowWidth;
     // More code
}

四、組態

  使用者決定如何對待診斷:警告,錯誤,建議或將其關閉。例如,作為一名架構師,您可以決定將相容性問題視為錯誤,對某些不贊成使用的API的呼叫將生成警告,而其他僅生成建議。您可以通過診斷ID和專案分別進行配置。為此,在Solution Explorer中,導航到專案下Dependencies節點。展開節點Dependencies>Analyzers>Microsoft.DotNet.Analyzers.Compatibility右鍵單擊診斷ID,選擇“設定規則集嚴重性”,然後選擇所需的選項。

技術分享圖片