ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java集成SonarQube

2022-01-11 09:30:41  阅读:290  来源: 互联网

标签:集成 Java SonarQube Dsonar Maven sonar java jacoco


Java工程集成SonarQube

针对目前Java工程集成SonarQube,主要有两种方式。一种是在Java工程自身是Maven工程的情况下,可直接使用Maven中的sonar插件,快速完成对接。如果不是Maven工程或者工程无法用sonar插件完成分析,那么可以使用Sonar Scanner来完成对接。下面将对两种对接方式进行详细介绍:

准备工作

向SonarQube管理员申请用户账号和对应的token,后续的登录SonarQube系统和执行代码扫描都会用到账号和token。

Maven sonar 插件

  1. 切换工作目录到工程的pom.xml文件所在目录,后续的Maven命令都是在该目录下执行。

  2. 首先进行工程的清理。

    mvn clean
  3. 对项目进行编译。

    mvn compile
  4. 对项目执行测试用例(测试用例例如UT,如果不存在测试用例,该步可以跳过)。

    mvn test jacoco:report -Dmaven.test.failure.ignore=true

    jacoco:report 表示在执行测试的过程中生成jacoco覆盖率报告,如果工程未集成jacoco,可以跳过。

    -Dmaven.test.failure.ignore=true 表示在执行测试用例过程,忽略失败的用例,如果去掉这个参数,表示不忽略,那么当有测试用例失败时,该步将会执行失败。

  5. 对项目进行sonar扫描并上传报告。

    mvn sonar:sonar -Dsonar.host.url={SonarQube服务地址} -Dsonar.login={token} -Dsonar.branch.name={当前分支}

    -Dsonar.branch.name={当前分支} 这个参数不是必须的,如果不加这个参数,那么分支默认为master。

Sonar scanner

Sonar scanner适合于非Maven工程或者无法使用Maven sonar插件进行扫描的工程(例如无父工程存在的多模块工程),但是Sonar scanner需要配置很多配置项,使用起来会比Maven sonar插件的方式略微繁琐一些。

  1. 首先参考SonarScanner | SonarQube Docs进行Sonar scanner的安装。

  2. 执行“Maven sonar 插件”章节中的1到4步。

  3. 执行Sonar scanner来扫描代码并上传报告。

    {Sonar scanner安装路径}/sonar-scanner -Dsonar.host.url={SonarQube服务地址} -Dsonar.login={token} -Dsonar.branch.name={当前分支} -Dsonar.projectKey={projectKey} -Dsonar.coverage.jacoco.xmlReportPaths={jacocoReportPaths} -Dsonar.java.binaries={javaBinaries} -Dsonar.java.test.binaries={javaTestBinaries} -Dsonar.java.libraries={javaLibraries} -Dsonar.java.test.libraries={javaTestLibraries} -Dsonar.tests={javaTests} -Dsonar.sources={javaSources}

    -Dsonar.projectKey={projectKey} 表示当前工程的唯一标识。

    -Dsonar.sources={javaSources} 表示源码的路径,多个目录可以用逗号分隔。

    -Dsonar.java.binaries={javaBinaries} 表示源码编译后class文件所在的目录,多个目录可以用逗号分隔。

    -Dsonar.java.libraries={javaLibraries} 表示工程依赖的jar包所在的目录,多个目录可以用逗号分隔。

    -Dsonar.coverage.jacoco.xmlReportPaths={jacocoReportPaths} 表示jacoco xml报告所在文件路径,多个文件路径可以用逗号分隔,非必传,存在jacoco时传递该参数即可。

    -Dsonar.tests={javaTests} 表示测试代码的路径,多个目录可以用逗号分隔,非必传,存在测试代码时传递该参数即可。

    -Dsonar.java.test.binaries={javaTestBinaries} 表示测试代码编译后class文件所在的目录,多个目录可以用逗号分隔,非必传,存在测试代码时传递该参数即可。

    -Dsonar.java.test.libraries={javaTestLibraries} 表示测试代码依赖的jar包所在的目录,多个目录可以用逗号分隔,非必传,存在测试代码时传递该参数即可。

标签:集成,Java,SonarQube,Dsonar,Maven,sonar,java,jacoco
来源: https://blog.csdn.net/csflying/article/details/122424186

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有