目录
-
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:
<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> </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