SonarScanner掃描Maven項目使用說明


最近在學習使用sonar掃描代碼,已經成功掃描python項目,而掃描java代碼不成功。

在網上找到的掃描java項目文章,經過嘗試之后也沒有成功。

本人自己研究了sonar官方的使用說明文章,將其翻譯成中文。

前言

建議將用於Maven的SonarScanner作為Maven項目的默認掃描程序。

通過常規Maven目標執行SonarQube分析的能力使得它可以在任何Maven可用的地方使用(開發人員構建、CI服務器等),不需要手動下載、安裝和維護SonarQube Runner安裝。Maven構建已經擁有SonarQube成功分析項目所需的許多信息。通過基於這些信息預先配置分析,手動配置的需求大大減少。

前提條件

  • 使用Maven 3.0及以上版本
  • 至少使用了您的SonarQube服務器支持的最小版本的Java(其實就是要注意jdk的版本,這里可能要注意一下,現在sonarqube最低要求的jdk版本是11,而SonarScanner最低要求的版本是8,最好就使用11版本吧)

全局設置

編輯setting.xml文件,位置在$MAVEN_HOME/conf或者~/.m2,來設置插件前綴和可選的SonarQube服務器URL。按我的理解,需要把“http://myserver:9000”改成是自己所搭建的sonarqube服務器地址,其他地方應該不需要改動。

    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

掃描

掃描Maven項目包括運行一個Maven目標路徑:這是從保存主項目pom.xml的目錄中獲取。 你需要在掃描命令中加入認證token,如下:
mvn clean verify sonar:sonar -Dsonar.login=myAuthenticationToken

在某些情況下,您可能想運行sonar:sonar作為專用步驟。對於多模塊項目,第一步是安裝。如下:

mvn clean install
mvn sonar:sonar -Dsonar.login=myAuthenticationToken

要指定snoar-maven插件的版本而不是使用最新版本,如下:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar

要獲得掃描覆蓋率信息,您需要在分析之前生成覆蓋率報告。

配置分析

大多數分析屬性將從項目中讀取。如果您想覆蓋指定附加參數的默認值,請配置pom.xml文件的 部分,如下:

<properties>
  <sonar.buildString> [...] </sonar.buildString>
</properties>

示例項目

為了幫助你開始,可以使用這個簡單的示例項目:https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

可在下面地址直接下載壓縮包:https://github.com/SonarSource/sonar-scanning-examples

排除掃描的模塊

  • 在pom.xml文件的 <sonar.skip>true</sonar.skip> 定義要排除的模塊的屬性
  • 使用構建概要文件排除某些模塊(如集成測試)
  • 使用前置的選項(例如“-pl”)。如mvn sonar:sonar -pl !module2

如何修復Maven插件的版本

建議鎖定Maven插件的版本:

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

故障排除

如果你遇到java.lang.OutOfMemoryError,設置MAVEN_OPTS環境變量,就像在*nix環境中這樣:
export MAVEN_OPTS="-Xmx512m"

在Windows環境中,避免使用雙引號,因為它們會被誤解。
set MAVEN_OPTS=-Xmx512m

原文鏈接

本篇文章基於20210926的官網文章,翻譯之中可能有不夠恰當的地方,推薦直接閱讀官方文檔。

原文鏈接如下:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM