Categories: 免費工具

SonarQube 程式碼品質分析工具使用教學

介紹如何使用 SonarQube 這套程式碼品質分析工具,掃瞄並偵測程式碼的品質、安全性問題。

SonarQube 是一套程式碼品質分析工具,可用於系統開發階段,協助程式設計者維持程式碼品質、偵測安全性漏洞、減少技術債的累積。

快速安裝 SonarQube 伺服器

標準的 SonarQube 的安裝方式是要搭配 PostgreSQL 等資料庫以及具備高速存取的儲存設備,但若只是簡單的個人使用,可以參考以下的簡易安裝方法。
Step 1
SonarQube 官方網站下載最新版的 SonarQube Community 版本。

# 下載最新版 SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.8.0.42792.zip

unzip 解壓縮之後,放置於適當的位置:

# 解壓縮
unzip sonarqube-8.8.0.42792.zip

# 放置於適當位置
sudo mv sonarqube-8.8.0.42792 /opt/

Step 2
從 SonarQube 所下載的 ZIP 壓縮檔中,包含了 Windows、Mac OS X 與 Linux 平台的執行檔,若在 Linux 系統下則執行對應 Linux 平台的 SonarQube 伺服器:

# 執行對應 Linux 平台的 SonarQube 伺服器
/opt/sonarqube-8.8.0.42792/bin/linux-x86-64/sonar.sh console

SonarQube 伺服器啟動之後,預設會開啟一個網頁伺服器在 http://localhost:9000/,以瀏覽器開啟這個網址,即可看到 SonarQube 伺服器的登入畫面。

SonarQube 伺服器登入畫面

Step 3
SonarQube 伺服器預設的帳號與密碼為:

帳號:admin
密碼:admin

登入並重新設定密碼之後,就可以看到這樣的 SonarQube 專案畫面。

SonarQube 伺服器

新增 SonarQube 專案

安裝好 SonarQube 伺服器之後,在進行程式碼掃描之前,要先新增一個專案。
Step 1
點選「Create new project」新增一個專案。

新增 SonarQube 專案

Step 2
在 SonarQube Community 版本中,專案類型只支援手動的「Manually」。

選擇「Manually」

Step 3
設定專案的 key,也就是設定一個識別專案用的 ID,可以使用英文、數字、下底線(_)、連字線(-)、句點(.)或冒號(:)。

設定專案 Key

Step 4
設定一個 token 名稱,按下「Generate」產生一個新的 token。

產生 token

這個新產生的 token 就相當於專案的密碼,要保護好,不要任意外洩。

產生 token

Step 5
選擇自己的專案類型與作業系統,產生掃描程式碼用的指令。

產生掃描指令

下載 SonarScanner 掃描工具

實際要掃描專案的程式碼時要使用 SonarScanner 這個工具,需要另外下載:

# 下載最新版 SonarScanner
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip

解壓縮之後,放在適當位置:

# 解壓縮
unzip sonar-scanner-cli-4.6.0.2311-linux.zip

# 放置於適當位置
sudo mv sonar-scanner-4.6.0.2311-linux /opt/

SonarScanner 掃描工具的執行檔位於 bin 目錄之下的 sonar-scanner,建議可將這個路徑加入 ~/.bashrc 中的 $PATH 設定,方便後續使用:

# 在 ~/.bashrc 中加入 $PATH 設定
export PATH=$PATH:/opt/sonar-scanner-4.6.0.2311-linux/bin

將此設定寫入 ~/.bashrc 之後,在下次登入系統時設定就會自動生效。若要讓設定立即生效,可以手動重新載入設定:

# 重新載入 ~/.bashrc 設定
source ~/.bashrc

掃描專案程式碼

這裡我們採用 sonar-scanning-examples 所提供的測試程式碼來進行掃描測試,首先下載 sonar-scanning-examples 測試程式碼:

# 下載 sonar-scanning-examples 測試程式碼
git clone https://github.com/SonarSource/sonar-scanning-examples.git

s

# 進入專案目錄
cd sonar-scanning-examples/sonarqube-scanner

# 以 SonarScanner 進行程式碼掃描
sonar-scanner \
  -Dsonar.projectKey=my:testproj \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=6aef2abc6969d35040cc1447a53ca4d0d567371a

查看 SonarQube 報告

在使用 SonarScanner 掃描專案程式碼之後,會自動將掃描結果上傳至剛剛架設好的 SonarQube 伺服器,我們可以直接從 SonarQube 專案畫面中看到最新的程式碼掃描結果。

首先是掃描結果摘要,這裡包含基本的資訊,例如臭蟲(bugs)數量、漏洞(vulnerabilities)數量、安全性問題(Security Hotspots)數量、技術債修正時間(Debt)評估、程式碼異味(Code Smells)數量,以及可靠性(Reliability)、安全性(Security)、可維護性(Maintainability)等級評估等。

SonarQube 掃描結果摘要

這是 SonarQube 所列出來待解決的議題(Issues)。

待解決議題(Issues)

每一筆待解決議題都會詳細標註程式碼的位置,以及相關的說明。

待解決議題(Issues)

這是安全性問題頁面,同樣會標示問題程式碼的位置以及如何修正的說明。

安全性問題(Security Hotspots)頁面

這一頁是技術債的評估圖,圈圈的顏色代表可靠度或安全性的評定等級(可以看成嚴重程度),而圈圈的大小則代表程式碼的行數(可以看成修正的難度或工程規模)。

技術債評估圖

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago