SONARQUBE

建立 docker-compose.yml 文件

  • 創建一個名為 docker-compose.yml 的文件,並添加 SonarQube 服務的配置。
version: '3'
services:
  sonarqube:
    image: sonarqube:lts
    ports:
      - "9000:9000"
    environment:
      - SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_extensions:/opt/sonarqube/extensions

volumes:
  sonarqube_data:
  sonarqube_logs:
  sonarqube_extensions:
  1. 啟動 SonarQube 服務
  2. 在包含 docker-compose.yml 文件的目錄中,運行 docker-compose up -d 命令來啟動 SonarQube 服務。

  3. 訪問 SonarQube

  4. 打開瀏覽器,輸入 localhost:9000,使用預設帳號 admin 和密碼 admin 登錄,並按照提示更改密碼。

  5. 結合 IDE 使用

  6. 安裝 SonarLint 插件。
  7. 配置 SonarLint,添加 SonarQube 服務器,輸入 SonarQube 服務器的 URL 和生成的 token。
  8. 綁定項目到 SonarQube,選擇對應的 SonarQube 項目。

  9. 生成 SonarQube 用戶 token

  10. 登錄 SonarQube,生成 token。
  11. 配置 Maven 使用 token,在 Maven 命令中添加 -Dsonar.login 參數,並將生成的 token 作為值。
  12. 更新 pom.xml 文件(可選),將 token 配置在 pom.xml 文件中。
  13. 將 Maven build 結合本地的 SonarQube 服務器
  14. 配置 Maven 的 settings.xml 文件,添加 SonarQube 服務器的 URL 配置。
  15. 配置項目的 pom.xml 文件,添加 SonarQube 插件配置和相關屬性。
  16. 執行 Maven 命令 mvn clean verify sonar:sonar -DskipTests=true 來進行代碼分析。
  17. 查看分析結果,打開瀏覽器,訪問 localhost:9000,登錄 SonarQube 服務器,查看項目分析結果。

1. 配置 Maven 的 settings.xml

在 Maven 的 settings.xml 文件中添加 SonarQube 服務器的 URL 配置:

<settings>
  <profiles>
    <profile>
      <id>sonar</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <sonar.host.url>http://localhost:9000</sonar.host.url>
      </properties>
    </profile>
  </profiles>
</settings>
<properties>
    <!-- 其他属性配置 -->
    <sonar.host.url>http://your-sonarqube-server</sonar.host.url>
    <sonar.login>your-sonarqube-token</sonar.login>
</properties>

2. 配置項目的 pom.xml

在你的 Maven 項目的 pom.xml 文件中添加 SonarQube 插件配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.9.0.2155</version>
    </plugin>
  </plugins>
</build>