### 簡介 SonarQube 是一套開源的程式碼檢測,可以進行 CodeReview 查出潛在的風險 ### 部署 採用 Docker Compose 部署 ```yaml= # 這是 Docker Compose 檔案,用於定義 SonarQube 和 PostgreSQL 資料庫的部署配置。 # 版本號碼。 version: "3.6" # 定義服務。 services: # PostgreSQL 資料庫服務。 db: # 使用 PostgreSQL postgres:15.6-alpine 映像。 image: postgres:15.6-alpine # 設定容器名稱。 container_name: postgres # 暴露資料庫埠 5432。 ports: - "5432:5432" # 容器重啟策略:始終重啟。 restart: always # 設定環境變數。 environment: # 資料庫名稱。 POSTGRES_DB: sonar # 資料庫使用者名稱。 POSTGRES_USER: sonar # 資料庫密碼。 POSTGRES_PASSWORD: sonar # 掛載資料卷。 volumes: # 掛載本地資料夾 D:\postgresql\data 到容器的 /var/lib/postgresql/data 目錄,用於儲存資料庫資料。 - D:\sonarqube\postgresql\data:/var/lib/postgresql/data # SonarQube 服務。 sonarqube: # 使用 sonarqube:latest 映像。 image: sonarqube:latest # 設定容器名稱。 container_name: sonarqube # 暴露 SonarQube 埠 9000。 ports: - "9000:9000" # 容器重啟策略:始終重啟。 restart: always # 設定環境變數。 environment: # SonarQube JDBC URL,指向 PostgreSQL 資料庫。 SONARQUBE_JDBC_URL: jdbc:postgresql://db:5432/sonar # 依存關係:SonarQube 必須在 PostgreSQL 資料庫啟動後才能啟動。 depends_on: # 依存關係服務:db。 - db # 掛載資料卷。 volumes: # 掛載本地資料夾 D:\sonarqube\conf 到容器的 /opt/sonarqube/conf 目錄,用於儲存 SonarQube 設定檔。 - D:\sonarqube\conf:/opt/sonarqube/conf # 掛載本地資料夾 D:\sonarqube\data 到容器的 /opt/sonarqube/data 目錄,用於儲存 SonarQube 資料。 - D:\sonarqube\data:/opt/sonarqube/data # 掛載本地資料夾 D:\sonarqube\logs 到容器的 /opt/sonarqube/logs 目錄,用於儲存 SonarQube 日誌。 - D:\sonarqube\logs:/opt/sonarqube/logs # 掛載本地資料夾 D:\sonarqube\extensions 到容器的 /opt/sonarqube/extensions 目錄,用於儲存 SonarQube 擴充套件。 - D:\sonarqube\extensions:/opt/sonarqube/extensions ``` ### 本機 SonarScanner 安裝 [官方文件說明](https://docs.sonarsource.com/sonarqube/10.4/analyzing-source-code/scanners/sonarscanner-for-dotnet/#iInstallation) Scanner 在本機跑會需要 Java,記得安裝(目前 SonarQube 到 JDK17 版): [Download](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) 下面是幾個比較常用的 Scanner,可以到官網查看介紹並下載對應的工具 * [CLI](https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner/) * [.Net Core](https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/scanners/sonarscanner-for-dotnet/) 上面兩個的工具裡面的 bin 資料夾,記得加到環境變數裡面的 path 裡 * .Net FrameWork (同 .Net Core) * FrameWork 版本比較特殊直接指定到 scanner 資料夾裡面執行即可,加到 path 也吃不到 * 如: <folder>\SonarScanner.MSBuild.exe * 記得把 vs 的 MSBuild 加到 Path 裡 執行的使用上也是蠻容易的,產生完專案後接著到專案的跟目錄打開 CMD 依序執行即可 ### 其它 目前 SonarQube 在免費版裡面,OWASP Top10 只有到 2021 年。假如需要完整的支援就需要額外付費的 Plugin 處理。 ### 參考 [windows docker部署sonarqube](https://blog.csdn.net/xunye_dream/article/details/124238659) [sonar-scanner的使用](https://www.cnblogs.com/Uni-Hoang/p/15207178.html) [白箱掃描工具_Sonarqube_Windows環境版本作業方式](https://coolmandiary.blogspot.com/2022/01/sonarqubewindows.html)