51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1570|回复: 1
打印 上一主题 下一主题

Maven结合SonarQube的使用笔记

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-15 13:28:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前提: 1,SonarQube已经安装好且已经安装了sonar-php-plugin,并且在测试服务器上也安装并配置好了sonar-scanner 2,安装了Maven 这个非常简单,直接从官网上下载Maven的zip包,解开然后配置下面这个配置文件即可
  1. export MAVEN_HOME=/usr/local/maven333
  2. export PATH=$MAVEN_HOME/bin:$PATH
复制代码

一,Maven简单项目

配置pom.xml,使之产生Junit单元测试报告

  1. <build>
  2.     <plugins>
  3.             <plugin>
  4.                 <groupId>org.apache.maven.plugins</groupId>
  5.                 <artifactId>maven-surefire-plugin</artifactId>
  6.                 <version>2.19.1</version>
  7.               <configuration>
  8.                   <skip>false</skip>
  9.                   <!--<reportsDirectory>${project.basedir}/target/junit</reportsDirectory> -->
  10.                 </configuration>
  11.             </plugin>
  12.     </plugins>
  13.   </build>
复制代码

默认就是产生在target目录下面的surefire-reports目录里,所以不需要配置reportsDirectory。

配置pom.xml ,使之产生代码测试覆盖率报告,在这里使用Jacoco工具来产生。

  1. <build>
  2.            <plugins>
  3.                 <plugin>
  4.                      <groupId>org.jacoco</groupId>
  5.                      <artifactId>jacoco-maven-plugin</artifactId>
  6.                      <version>0.7.2.201409121644</version>
  7.                      <executions>
  8.                             <execution>
  9.                                 <id>default-prepare-agent</id>
  10.                                 <goals>
  11.                                      <goal>prepare-agent</goal>
  12.                                 </goals>
  13.                            </execution>
  14.                            <execution>
  15.                                 <id>default-report</id>
  16.                                 <phase>prepare-package</phase>
  17.                                 <goals>
  18.                                      <goal>report</goal>
  19.                                 </goals>
  20.                            </execution>
  21.                            <execution>
  22.                                 <id>default-check</id>
  23.                                 <goals>
  24.                                      <goal>check</goal>
  25.                                 </goals>
  26.                                 <configuration>
  27.                                      <rules>
  28.                                             <!-- implementation is needed only for Maven 2 -->
  29.                                            <rule implementation ="org.jacoco.maven.RuleConfiguration" >
  30.                                                 <element>BUNDLE</element>
  31.                                                 <limits>
  32.                                                       <!-- implementation is needed only for Maven 2 -->
  33.                                                      <limit implementation ="org.jacoco.report.check.Limit" >
  34.                                                           <counter>COMPLEXITY</counter>
  35.                                                           <value>COVEREDRATIO</value>
  36.                                                           <minimum>0.60</minimum>
  37.                                                      </limit>
  38.                                                 </limits>
  39.                                            </rule>
  40.                                      </rules>
  41.                                 </configuration>
  42.                            </execution>
  43.                      </executions>
  44.                 </plugin>
  45.            </plugins>
  46.      </build>
复制代码

默认就产生在target目录下,覆盖率报告文件名为jacoco.exec

在项目的根目录下创建一个配置文件sonar-project.properties

  1. sonar.projectKey=org.sonarqube:parent
  2. sonar.projectName=Java :: JaCoco Multi Modules :: Parent
  3. sonar.projectVersion=1.0-SNAPSHOT

  4. sonar.sources=src/main/java
  5. sonar.tests=src/test/java
  6. sonar.binaries=target/classes

  7. sonar.language=java

  8. #Tells SonarQube where the unit tests execution reports are
  9. sonar.junit.reportsPath=target/surefire-reports

  10. #Tells SonarQube where the integration tests code coverage report is
  11. #sonar.jacoco.itReportPath=target/jacoco-it.exec
  12. sonar.jacoco.reportPath=target/jacoco.exec

  13. # Encoding of the source files
  14. sonar.sourceEncoding=UTF-8
复制代码

注意,一定要配置这个sonar.binaries,否则会报: INFO: No JaCoCo analysis of project coverage can be done since there is no class files.

另外,配置sonar.jacoco.itReportPath或sonar.jacoco.reportPath视产生的覆盖率报告文件而定

二,Maven多模块项目

配置pom.xml,使之产生Junit单元测试报告,同“Maven简单项目 ”的配置方法。

配置pom.xml ,使之产生代码测试覆盖率报告 ,同“Maven简单项目 ”的配置方法。

在项目的根目录下创建一个配置文件sonar-project.properties

  1. sonar.projectKey=com.dangdang:elastic-job
  2. sonar.projectName=elastic-job
  3. sonar.projectVersion=1.1.0


  4. # Set modules IDs
  5. sonar.modules=elastic-job-api-core,elastic-job-console,elastic-job-core,elastic-job-spring

  6. # Modules inherit properties set at parent level
  7. sonar.sources=src/main/java
  8. sonar.tests=src/test/java
  9. sonar.java.binaries=target/classes

  10. sonar.language=java

  11. #Tells SonarQube where the unit tests execution reports are
  12. sonar.junit.reportsPath=target/surefire-reports

  13. #Tells SonarQube where the integration tests code coverage report is
  14. sonar.jacoco.reportPath=target/jacoco.exec

  15. # Encoding of the source files
  16. sonar.sourceEncoding=UTF-8
复制代码

elastic-job-api-core.sonar.projectBaseDir=elastic-job-api/elastic-job-api-core

这里,需要注意的就是配置sonar.modules,这样下面的sonar.sources,sonar.tests等配置项就是指各个模块下面的相对目录。

指定代码的目录的目的是为了把代码文件上传到Sonar服务器上。

模块必须是非父模块,也就是不再包含子模块了,只有这样,统计代码质量才有意义。

在这里,elastic-job-api-core这个子项目的目录不是在当前目录下面,而是又深入了一级目录,就可以使用elastic-job-api-core.sonar.projectBaseDir来指定这个完整的相对路径。

三,测试步骤都一样:

1,在顶级目录下执行

  1. mvn clean test
复制代码

这时候就会在顶级目录下得到一个文件夹reports,里面有两个测试报文文件,分别是测试报告和测试覆盖率报告

2,在顶级目录下执行以下命令,就会将两个测试报告文件和src和tests目录下的文件都提交给SonarQube服务器(前提是Sonar已经都配置好了) (D:\sonar-scanner-2.6.1\bin\sonar-scanner.bat这个路径或者在linux就放入PATH环境变量中)

  1. sonar-scanner
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-19 18:18 , Processed in 0.070095 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表