天天看點

【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質

        作為碼農,日常幹得最多的事兒就是coding(小聲:debugging),那完成功能後,一般流程我們需要code review(衡量代碼品質的一種方式便是會議上sh*t的數量了)。那為了減少code review時被噴的次數,減小我們幼小心靈的創傷,我們最好提前消滅掉醜陋的代碼。

        正好前兩天閱讀Teams的一款應用源代碼的時候,想着能拿着它掃描一把,看會不會發現一些可以改進的地方,順便介紹下我使用的方法和工具。

        環境準備(在Mac上操作,win上大家自行變通,玩法相通):

  1. dotnet core環境:.NET Core SDK 3.1.101
  2. visual studio code:1.44.0
  3. docker(基于docker運作sonarqube鏡像):version 19.03.5, build 633a0ea(docker desktop version 2.1.0.5)
  4. java:version "13-ea" 2019-09-17

        以上便是需要的環境。接下來簡單介紹下具體步驟(我們省略掉寫代碼的過程,直接分析代碼),今天直接分析開源Teams項目lucky draw的源代碼(https://github.com/Office365DevOps/lucky-draw-bot,自行克隆,如有興趣,也可PR,歡迎大家推廣使用這款Teams應用,自己用過,感覺很香)

  • 安裝sonarqube的dotnet版本scanner,戳這裡。确認安裝成功。
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • docker拉取sonarqube鏡像(預設latest tag就可以)
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • docker中運作sonarqube的鏡像:
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
    網頁中打開sonarqube的portal
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • 使用者名密碼都為admin,登入。
  • 【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • 點選右上角建立項目
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • 輸入key和項目名稱(這裡就輸入lucky-draw-bot)
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
  • 輸入名稱(init-token)生成token,使用者後續sonarqube分析資料并上傳到sonarqube的portal(localhost:8888)
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質

生成token後,點選continue按鈕,進入下一步,準備分析項目(大家忽略sonarqube的端口,我自己啟了兩個,大家玩的時候,用一個就好了),如下:

【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質

當然這裡是針對msbuild生成的腳本語句,對于我們的dotnetcore項目,使用我們第一步安裝的dotnetcore版本的scanner,是以對應的語句應該依次為:

1)

dotnet-sonarscanner begin /k:"bot" /d:sonar.host.url="http://localhost:8888" /d:sonar.login="8587694913910d903290a98a75607f2e7bf1c642"
           

2) 

dotnet build
           

3) 

dotnet-sonarscanner end /d:sonar.login="8587694913910d903290a98a75607f2e7bf1c642"
           
  • run完以上語句後,重新整理sonarqube的項目,則會出現對應的分析資料,包括code smells,test coverage(如果有的話),還有其他相關名額
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質
    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質

    上面分析結果我們可以看出很多問題,及時修複。比如代碼的複雜度也可以通過已有規則掃描出來(也可以自定義規則,自行某度),這樣我們就可以在code review時少被diss,其實code review是大家一起審視代碼,這裡隻是将表明顯的問題提前暴露出來,及時fix,并不能完全代替code review。

    其實,通過sonarqube的scanner,會在根目錄下生成一系列分析檔案,也就是說,不用sonarqube也能看出來一系列warning,sonarqube的portal可以分析這些讀起來不怎麼友好的檔案,再生成report/便于檢視的形式,提高fix的效率。

    【Teams】如何使用sonarqube(docker版)掃描dotnet core版本的Teams項目的代碼品質

總結:今天主要跟大家介紹這個掃描工具,日後大家如果開發Teams應用,也可以及時使用它來掃描代碼品質,對日後疊代可以起到很重要的作用。後續還有什麼工具可以幫助我們開發Teams應用,我也會分享出來。