只有累積,沒有奇蹟

2019年2月20日 星期三

[VisualStudio].NET 程式碼品質分析利器 SonarLint

前言 
前陣子部門導入 SonarQube 來分析程式碼品質的工具,會定期掃描當前 GIT 上前後端程式碼分析其代碼質量、Code Smell、找到可能潛在的問題、安全漏洞、單元測試涵蓋率,並可透過視覺化 Dashboard 介面查看目前分析代碼的狀態,且支援分析 25 種以上程式語言,可以說是整合性相當高的程式碼分析工具。今天與同事討論提到 SonarQube 有出擴充工具 SonarLint 與 Visual Studio IDE 做整合,可以在開發時即時做程式碼分析與弱點掃描,不用等到 Commit 後在進行分析,SonarLint 圖片 LOGO 設計十分有趣右下角是紅色波浪提示訊息,今天就來分享 SonarLint 在 Visual Studio 2017 的安裝及基本操作說明。

安裝 SonarLint 
Step 1 : 選擇 Tools > Extension and Updates
Step 2 : 搜尋 sonarlint > 點擊 SonarLint for Visual Studio 2017 > 安裝
Step 3 : 會跳出下載視窗下載檔案,接著關閉 Visual Studio IDE 才會開始執行安裝程式
Step 4 : 會執行 SonarLint for VS 2017 安裝檔案,瘋狂按下一部結束這回合
Step 5 : 安裝完畢之後,重新啟動 Visual Studio > Tools > Extension and Updates 
發現 SonarLint for Viaual Studio 已安裝完成

SonarSource 分析程式碼 
在安裝完畢之後,我們開始簡單寫一段代碼測試看 SonalSource 是否會提示
private void MethodTest2(int param)
{
    if (param != null)
    {
        // todo
    }
}
以上述 Sample Code 為例,在安裝完 SonarLint 之後會提示這段 Code 程式碼有問題,將滑鼠移至綠色提示線上會顯示 param != null 這段代碼會永遠成立,因此會判斷會永遠為 true,
另外在下方 Error List 視窗,也會一併提醒分析整個專案後發現可能的問題清單,讓開發者可以清楚地了解異常的原因與發生時機

Sonarsource Rules
透過上述簡單的範例,可以知道 sonalLint 工具是即時的掃描與分析靜態程式碼,在掃描靜態程式碼時是根據甚麼 Rule 來定義正常或異常呢 ? 在 SonarQube 有提供一份規則清單(Sonarsource rules),其中涵蓋了支援程式語言的程式碼品質相關 Rule,主要分為三大項 Code Smells、Bugs、Vulnerability,以 C# 為例截至目前為止支援的 rules (或者可以說建議項目) 有 373 種,其中都有詳細的 
(1) 項目名稱 
(2) 項目詳細說明搭配 Sample code 範例讓你更容易了解原因
更多詳細的內容可以參考 sonarsource rules 

簡單比較 Before&After
或許到這邊還沒有感覺,接下來在 Sonarsource Rules 中隨便找出兩項 Rule 並簡單比較其畫面的差異,可以更有感覺知道安裝後的差異,以下面兩者安裝 sonarLint 套件之後的 sample code 為例,如果發現有更好程式碼寫法時,會有提示告知(個人覺得很明顯 XD),滑鼠移上去也會有提示說明建議的原因,相當實用。

提示 : try catch 沒寫 catch 處理
Generic exceptions should not be ignored

提示 : if 判斷重複時
手誤輸入兩個if 判斷重複

心得
工欲善其事,必先利其器;在過去幫團隊 Code Review 時往往都是透過人工的方式進行,但只要有人就會有江湖遺漏的可能發生,但如果透過工具來輔助可以更有效率,針對有爭議的項目看說明與 sample code 做討論,更有效的達到團隊的共識與提供程式碼的品質,甚至掃到潛在的安全性議題,針對問題盡早發現並排除,才會是比較有效的方式

參考
sonarlint

0 意見:

張貼留言

Copyright © m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com