目录
- Features 特征
- Compatibility 兼容性
- Prerequisites 先决条件
- Initial Setup 初始设置
- Global Settings 全局设置
- Analyzing a Maven Project 分析Maven项目
- Configuring the SonarQube Analysis 配置SonarQube分析
- Excluding a module from SonarQube analysis 从SonarQube分析中排除一个模块
- Sample Project 示例项目
- How to Fix Version of Maven Plugin 如何修复Maven插件的版本
- Troubleshooting 故障排除
特征
建议这个分析器在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:
|
分析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