使用SonarQube Scanner for Maven 分析

特徵

建議使用此分析器啓動Java Maven項目的分析。html

兼容性

Maven版本java

2.Xreact

3.Xgit

兼容性 (出錯) (滴答)

 

從maven-sonar-plugin 3.4.0.905開始,再也不支持SonarQube <5.6。github

若是使用5.6以前的SonarQube實例,則應該使用maven-sonar-plugin 3.3.0.603。apache

從maven-sonar-plugin 3.1開始,再也不支持Maven <3.0。安全

若是在3.0以前使用Maven,你應該使用maven-sonar-plugin 3.0.2。服務器

先決條件

  • Maven 3.x
  • SonarQube已  安裝
  • 至少SonarQube服務器支持的Java最低版本正在使用中(Java 8用於最新的LTS)
  • 您但願分析的每種語言的語言插件都已安裝
  • 您已閱讀  分析代碼源。 

初始設置

全局設置

編輯位於$ MAVEN_HOME / conf〜/ .m2中的  settings.xml文件,以設置插件前綴和可選的SonarQube服務器URL。maven

例:單元測試

<settings>

    <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項目包括運行Maven目標:sonar:sonar在pom.xml文件所在的目錄中。

mvn clean verify sonar:sonar

# In some situation you may want to run sonar:sonar goal as a dedicated step. Be sure to use install as first step for multi-module projects

mvn clean install

mvn sonar:sonar


# Specify the version of sonar-maven-plugin instead of using the latest. See also 'How to Fix Version of Maven Plugin' below.

mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar

要得到覆蓋信息,您須要在分析以前生成覆蓋率報告。有關更多信息,請參閱  Java項目的單元測試代碼覆蓋率

配置SonarQube分析

分析參數列在分析參數頁面上。你必須像這樣在你的pom.xml的<properties>部分配置它們:

<properties>

  <sonar.exclusions> [...] </sonar.exclusions>

</properties>

安全

任何被授予執行分析  權限的用戶都  能夠運行分析。

若是「  任何人」 組未得到「  執行分析」  權限,或者SonarQube實例受到保護(該  sonar.forceAuthentication 屬性設置爲  true),則 必須經過該 屬性提供具備「 執行分析」權限  的用戶的分析標記  sonar.login。 sonar-scanner -Dsonar.login=[my analysis token]

 

從SonarQube分析中排除模塊

你能夠:

  • 在要排除的模塊的pom.xml中定義屬性<sonar.skip> true </sonar.skip>

  • 使用構建配置文件來排除某些模塊(如用於集成測試)
  • 使用高級反應堆選項(如「-pl」)。例如mvn sonar:sonar -pl!module2

示例項目

爲了幫助您開始,您能夠在這裏找到一個簡單的項目示例:https :  //github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

如何修復Maven插件的版本

建議  鎖定Maven插件的版本

項目使用Maven 3進行分析

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

故障排除

若是你獲得一個java.lang.OutOfMemoryError,你能夠在* nix環境中設置MAVEN_OPTS環境變量:

export MAVEN_OPTS="-Xmx512m"

在Windows環境中,避免使用雙引號,由於它們會被誤解。

set MAVEN_OPTS=-Xmx512m

相關文章
相關標籤/搜索