iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 4
4

https://ithelp.ithome.com.tw/upload/images/20190916/20118848YmW191Bzi4.png

現代軟體越來越強,原始程式碼也越來越龐大,加上需要不斷追趕的時程,每個軟體團隊對於兼顧程式碼品質已經日漸困難。

雖然市面上已經有多種針對原始碼品質做白箱檢測的工具軟體,可惜都價格不菲,對於缺少資金的開發團隊來說,就如一道銅牆鐵壁卡在前面,無法前進。


方案介紹

沒關係,開源方案中有個套件正好可以解決這個問題。

SonarQube 是一款基於 Java 開發的原始碼檢測與品質管理系統,因著 Java 的關係,Server 與 Client 都是跨平台的。

它同時具備有商業與開源版本,本文是以社群開源版本為主。

https://ithelp.ithome.com.tw/upload/images/20190916/20118848W4hDEsjIkp.jpg

SonarQube 提供功能豐富:

  • Web 化操作介面
  • 可分析多種程式語言,並可加購以支援更多種類
  • 檢測安全漏洞
  • 分析可靠性、重覆性、技術債務、測試覆蓋率
  • 提供問題標註資訊以及程式碼改善建議
  • 提供追蹤修訂機制,可以了解問題改善歷程
  • 支援團隊協作,以及權限機制
  • 可以細部調整程式分析的策略
  • 整合 GitHub、Gitlab、LDAP、AD 等驗證機制
  • 成熟的更新中心,可方便的升級系統與安裝外掛套件
  • 中文操作介面 (目前簡體,據稱繁體中文快要出來了)

安裝方式

SonarQube 支援跨平台,安裝方式也相單簡單,至官方 GitHub 專案位置下載並解壓縮後,執行啟動指令檔即可運作起來。

# on linux
bin/linux-x86-64/sonar.sh start 
# on macOS
bin/macosx-universal-64/sonar.sh start
# on Windows
bin\windows-x86-64\StartSonar.bat 

接著,使用瀏覽器連接至 http://localhost:9000 即可進入使用。

在此強烈提醒,請不要使用 Firefox 瀏覽器操作 SonarQube,會發生一些匪夷所思的事,它浪費了我好幾個夜晚。


主要功能

透過更新中心,可以快速的安裝需要的功能外掛,系統與外掛升級也是在此簡單點選就可以完成。不過要特別注意外掛的授權,有些是商業套件。

https://ithelp.ithome.com.tw/upload/images/20190916/20118848AoxPzNvTYW.png
更新中心

使用者可以自己決定什麼程式語言要用那些特徵做檢測,內建了非常多的規則,依據需求可以更嚴格或者更寬鬆。

https://ithelp.ithome.com.tw/upload/images/20190916/20118848bGOvn6gVJt.png
規則設定

對於各種程式語言以及品質檢測的分數,可以自訂每一個項目的細節,以做為軟體品質的把關。

https://ithelp.ithome.com.tw/upload/images/20190916/20118848xKMGbpOlN4.png
品質設定

Scanner

基本設定完成後,第二個階段是配置 Client 端使用 Scanner 程式,依據不同的作業系統下載相對應的 Scanner。

將 Scanner 下載並解壓縮後,需要設定 conf 與 project 裡的設定檔,請參考官網文件。

設定完成後,在想要檢測的專案路徑下,執行 sonar-scanner 即可開始分析專案,並會把檢測結果送到伺服器上。

若您的環境中建立有 CI,您也可以把 SonarQube 掛接進去成為自動檢測的一個環節。

查看報告

最重點的時刻來了,所有分析完的結果會用非常直覺的資訊看板、圖表、數字呈現。

https://ithelp.ithome.com.tw/upload/images/20190916/20118848yyawb2dI8E.png
專案總覽

https://ithelp.ithome.com.tw/upload/images/20190916/20118848c0d9pobZ2U.png
安全性指標

https://ithelp.ithome.com.tw/upload/images/20190916/20118848nTwmW48Pzw.png
技術債指標

https://ithelp.ithome.com.tw/upload/images/20190916/20118848YlATwNQnpO.png
重覆率指標

https://ithelp.ithome.com.tw/upload/images/20190916/20118848sJTUQtr7Mc.png
問題清單

SonarQube 不僅僅是幫我們找出原始碼的各種問題,還會儘可能的提供我們問題資訊,描述原因,甚至是改善建議,這將為我們節省大量的程式修正時間。

如圖中所述,在一段 HTML 裡它建議我們把 < b > 改為較新的 < strong > 標籤。

https://ithelp.ithome.com.tw/upload/images/20190916/201188484JQdHDdaku.png
問題改善建議


結論

SonarQube 雖然是開源軟體,但它所提供的功能並不簡單,已經俱備許多商業軟體才能擁有的進階功能,對於軟體開發團隊來說,大大節省經費,也大大節省時間。

如果您所使用的語言不在 SonarQube 支援之列,它也提供選購模組的方式來增加支援能力。


參考資料


上一篇
開源 App 安全檢測平台:MobSF
下一篇
開源弱點檢測管理平台:OpenVAS
系列文
突破困境:資安開源工具應用33

尚未有邦友留言

立即登入留言