目录

特征

建议这个分析器在Java的Maven项目中启动分析器

兼容性

 

Maven Version

2.x

3.x

兼容性



 

从maven-sonar-plugin 3.4.0.905开始, 不支持小于5.6的SonarQube

如果你使用5.6之前的SonarQube实例,你应该使用maven-sonar-plugin 3.3.0.603

从maven-sonar-plugin 3.1开始, 不支持小于小于3.0的SonarQube

如果你使用3.0之前的SonarQube实例,你应该使用maven-sonar-plugin 3.0.2

 

前提条件

  • Maven 3.x
  • 已安装SonarQube
  • 您的SonarQube服务器支持的最小Java版本正在使用中(java8用于最新的LTS)
  • 您要分析的每一种语言的插件已经安装
  • 您已经阅读分析代码源Analyzing Code Source

 

初始配置

全局配置

编辑位于$MAVEN_HOME/conf or ~/.m2下的settings.xml file文件,设置插件前缀和SonarQube服务器URL

Example:

 

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- 选择URL连接服务器. 默认值是:http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

 

分析Maven项目

分析Maven项目包括云心一个Maven目标:sonar:sonar 在pom文件所在的目录

 

mvn clean verify sonar:sonar
  
# 一些情况,你也许想要运行sonar:sonar goal 作为专门的步骤,确定使用install作为多模块项目安装的第一步
mvn clean install
mvn sonar:sonar

 

# 指定sonar-maven-plugin的版本而不是最新的,另请参阅下面的“如何修复Maven插件”

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

如果获取测试覆盖率信息,你需要在分析之前自动生成覆盖率报告,有关更多的信息,请参阅Code Coverage by Unit Tests for Java Project 。

 

配置SonarQube分析

分析“分析参数页Analysis Parameters page”列表中的参数,你必须在你的pom文件中配置它们

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

安全

任何被授予执行分析权限的用户可以运行分析操作 Execute Analysis

如果任何组没有被授予执行分析权限或者如果EonarQube是安全的( sonar.forceAuthentication属性设置为true),用户执行分析权限的token必须被sonar.login属性提供,例如:sonar-scanner -Dsonar.login=[my analysis token]

 

从SonarQube分析中排除模块

你可以:

  • 在想排除模块的pom中定义属性<sonar.skip>true</sonar.skip> 
  • 使用构建文件执行排除的一些模块(例如继承测试)
  • 使用 Advanced Reactor Options (例如 "-pl"). 例如mvn sonar:sonar -pl !module2

 

示例项目

为了帮助你开始,一个简单的示例项目在这里可以获取:

https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

 

 

如何修复Maven插件版本

建议锁定Maven插件的版本:lock down versions of Maven plugins:

使用Maven3分析版本

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

 

故障排除

如果你遇到java.lang.OutOfMemoryError, 你可以设置MAVEN_OPTS环境变量,像这样:

export MAVEN_OPTS="-Xmx512m"
在Windows中,请不要使用双引号,因为他们会被误解
set MAVEN_OPTS=-Xmx512m