#資安工具
![[軟體操作手冊/SonarQube_Photo/image.png| center]]
### 壹、[[#^9e18ca | 簡介]]
### 貳、[[#^6f6739 | 安裝流程]]
### 參、[[#^15edbe | 掃描實作]]
### 肆、[[#^45010f | 擴充套件]]
### 伍、[[#^f2434f | 常見問題]]
---
#### <center> **壹、簡介**</center>
^9e18ca
- 一個開源程式碼品質和安全分析平台,能夠自動偵測程式碼中的錯誤、技術債務和安全漏洞,並提供即時回饋與報告。
- 支援多種主流程式語言,並能與 CI/CD工具 整合,協助開發團隊持續監控和改善程式碼品質,提升軟體的穩定性和可維護性。
- 簡單來說,他的優勢如下:
> [!ABSTRACT] **如下所列**
> - [ ] 靜態程式碼分析
> - [ ] 程式碼品質管理
> - [ ] 安全漏洞檢測
> - [ ] 多語言支援與可擴展性
> - [ ] 與CI/CD 流程整合
> - [ ] 開發者體驗
> - [ ] Freeeee(Community版本)
---
#### <center> **貳、 安裝流程**<center>
^6f6739
- 那麼,接著開始安裝吧:
官網在這:
```
https://www.sonarsource.com/products/sonarqube/
```
- 本章節會以Windows 作為安裝環境,下載連結下收:
```
https://www.sonarsource.com/products/sonarqube/downloads/
```
- 首先映入眼簾的是可下載版本,目前拿Community版本來作介紹。
> <img src="軟體操作手冊/SonarQube_Photo/image-1.png" style="width:600; text-align:LiArrowLeftToLine:">
- 在下載之後解壓縮,會得到這樣的檔案內容:
> <img src="軟體操作手冊/SonarQube_Photo/image-2.png" style="width:600; text-align:LiArrowLeftToLine:">
- 接下來要啟動她,這邊以windows為例,把目錄切到bin/windows-x86-64
點開StartSonar.bat,他會自動執行。
> [!WARNING] **是否已安裝java?**
> ([JRE latest version](https://www.java.com/zh-TW/download/manual.jsp)、[JDK latest version](https://www.oracle.com/tw/java/technologies/downloads/))
- 啟動成功時cmd會跟你說SonarQube is operational,就可以開始操作了:
> <img src="軟體操作手冊/SonarQube_Photo/image-4.png" style="width:600; text-align:LiArrowLeftToLine:">
---
#### <center> 參、掃描實作 </center>
^15edbe
- 接著打開(任一)瀏覽器,輸入127.0.0.1:9000,會出現:
> <img src="軟體操作手冊/SonarQube_Photo/image-5.png" style="width:600; text-align:LiArrowLeftToLine:">
- 預設帳/密皆為admin,首次登入後需改密碼。
> <img src="軟體操作手冊/SonarQube_Photo/image-6.png" style="width:400; text-align:LiArrowLeftToLine:">
- 更改後就會進到歡迎畫面,會說一些新功能的tutorial。
> <img src="軟體操作手冊/SonarQube_Photo/image-7.png" style="width:600; text-align:LiArrowLeftToLine:">
- 再來就是設定掃描專案了,這邊直接點選Add Project,接著這次會拿本機端進行說明,所以直接選Create a local project。
> <img src="軟體操作手冊/SonarQube_Photo/image-8.png" style="width:600; text-align:LiArrowLeftToLine:">
- 輸入自訂的名稱跟分支項目:
> <img src="軟體操作手冊/SonarQube_Photo/image-9.png" alt="center" style="width:400; text-align:LiArrowLeftToLine:">
- 再來是程式碼的判定規則設定,這邊先用預設,意思為"每一次變更都是一個新版本"
> <img src="軟體操作手冊/SonarQube_Photo/image-10.png" alt="center" style="width:500; text-align:LiArrowLeftToLine:">
- 接著點選Create(忘記截圖了),下一個畫面會詢問分析工具,這邊也先選取Locally:
> <img src="軟體操作手冊/SonarQube_Photo/image-11.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 就會跳到Generate Token的部分,這是給專案使用的,可以設定到期天數。
(真的不小心忘記也可以重新設定。)
> <img src="軟體操作手冊/SonarQube_Photo/image-12.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 產生後會出現這樣,這個token要自己記好:
> <img src="軟體操作手冊/SonarQube_Photo/image-13.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 記下來後,會詢問你的project是用什麼語言開發?
這邊以.NET Core為例,呈現如下,會需要安裝SonarQube的擴充模組,
可以用他的指令(橘框處)安裝,或是從visual studio自己手動載。
安裝好之後,在專案的根目錄底下用cmd執行(藍框處)的指令。
<img src="軟體操作手冊/SonarQube_Photo/image-14.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 藍框的環境設定完之後,跑dotnet build讓他編譯,提供指令如下:
> ```
> 1. dotnet tool install --global sonarscanner
> 2. dotnet sonarscanner begin /k: "你的專案名稱"
> 3. /d:sonar.host.url=http://127.0.0.1:9000 /d:sonar.token="你的token"
> 4. dotnet build
> 5. dotnet sonarscanner end /d:sonar.token="你的token"
> ```
- 接著就會呈現結果,像下圖,就是一個不太理想的檢測結果。
> <img src="軟體操作手冊/SonarQube_Photo/image-16.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
> [!CAUTION] 注意!
> - 如果掃描之後,**OverView沒有出現任何資訊**(如Measures、Security HotSpots..等,可能是專案被定義為測試程式(TEST-code)而非正式程式,如下圖:
> <img src="軟體操作手冊/SonarQube_Photo/image-15.png" alt="center" style="width:400; text-align:LiArrowLeftToLine:">
> 如果要調整,需要從專案檔(Visual Studio)去進行調整,詳細資訊可以參考:
> [https://github.com/SonarSource/sonar-scanner-msbuild/wiki/Analysis-of-product-projects-vs.-test-projects](https://github.com/SonarSource/sonar-scanner-msbuild/wiki/Analysis-of-product-projects-vs.-test-projects)
---
#### <center> 肆、擴充套件 </center>
^45010f
- 不論檢測結果如何,產生一個檢測報表還是比較方便閱讀,
而Community版本,就必須得使用額外的套件進行報表功能的擴充,
目前測下來,CNES Report還蠻方便使用,github記錄於此,[https://github.com/cnescatlab/sonar-cnes-report](https://github.com/cnescatlab/sonar-cnes-report)
- 若安裝成功,將會顯示於選單列表上。
- 此報表套件還提供了多種產製格式。
> <img src="軟體操作手冊/SonarQube_Photo/image-17.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 以docx格式為例,會產生下圖的報告:
> <img src="軟體操作手冊/SonarQube_Photo/image-18.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
<img src="軟體操作手冊/SonarQube_Photo/image-19.png" alt="center" style="width:700; text-align:LiArrowLeftToLine:">
- 還有各項問題的詳細說明,但不好截圖就不截了。
---
##### <center>伍、常見問題:</center>
^f2434f
- 安裝時,若出現
```
java.lang.Error: A command line option has attempted to allow or enable the Security Manager. Enabling a Security Manager is not supported
```
<img src="軟體操作手冊/SonarQube_Photo/image-3.png" style="width:700; text-align:LiArrowLeftToLine:">
- 代表你的JDK版本太新>=24,主要是**Security Manager**這個工具已經被棄用,詳細可以參考這篇說明:
```
https://docs.oracle.com/en/java/javase/24/security/security-manager-is-permanently-disabled.html
```
-
> [!CAUTION] 處理方式
> **解決方式就是降版,寫這個說明文件的時候,sonarqube-25.5.0.107428 Community還不支援JDK 24。(2525/06/03)**