如何将SonarQube与SAP Hybris集成

如何将SonarQube与SAP Hybris集成,sonarqube,hybris,Sonarqube,Hybris,SAP Hybris套件附带集成PMD插件,并运行自定义PMD代码规则集 PMD插件是通过Hybris ANT构建脚本调用的 但我想知道是否有一种方法可以将Hybris套件与SonarQube集成假设这是我们正在讨论的Java代码,您可以轻松地用SonarQube“分析”它。就“集成”而言,如果您的意思是希望通过SonarQube运行“自定义PMD代码规则集”,那么只需安装SonarQube PMD插件并设置质量配置文件即可。取决于您的hybris版本,有一个已经存在的sonarAnt任务将向s

SAP Hybris套件附带集成PMD插件,并运行自定义PMD代码规则集

PMD插件是通过Hybris ANT构建脚本调用的


但我想知道是否有一种方法可以将Hybris套件与SonarQube集成

假设这是我们正在讨论的Java代码,您可以轻松地用SonarQube“分析”它。就“集成”而言,如果您的意思是希望通过SonarQube运行“自定义PMD代码规则集”,那么只需安装SonarQube PMD插件并设置质量配置文件即可。

取决于您的hybris版本,有一个已经存在的
sonar
Ant任务将向sonar发送度量

首先进入您的平台主页:

cd $HYBRIS_HOME/hybris/bin/platform
然后,要正确初始化Ant:

. ./setantenv.sh
执行测试:

ant unittests
将结果发送到声纳:

ant sonar
Sonar Runner可以在平台内部的
config/local.properties
文件中进行配置。例如:

sonar.java.source=8
sonar.projectName=Example
sonar.projectKey=example
sonar.exclusions=file:**/gensrc/**, **/ws/axis/*
sonar.login=secret
sonar.password=evenmoresecret
sonar.excludedExtensions=core,testweb,scripting,paymentstandard,mediaweb,maintenanceweb,deliveryzone,commons,processing,impex,validation,catalog,europe1,platformservices,workflow,hac,comments,advancedsavedquery,springintegrationlibs,ldap,hmc,virtualjdbc,cockpit,admincockpit,reportcockpit,platformhmc,productcockpit,customerreview,sapcoretest,sapcoreodata,sapcore,sapcorejco,sapcorejcorec,sapcorebol,advancedexport,backoffice,datahubbackoffice,mcc,wishlist,mediaconversion,solrfacetsearch,solrfacetsearchhmc,voucher,promotions,basecommerce,ticketsystem,cms2,cms2lib,btg,cmscockpit,btgcockpit,b2bcommerce,payment,commerceservices,b2bapprovalprocess,commercewebservicescommons,cscockpit,acceleratorservices,b2bacceleratorservices,acceleratorcms,commercefacades,acceleratorfacades,acceleratorstorefrontcommons,b2bacceleratorfacades,addonsupport,sapcoreaddon,captchaaddon,liveeditaddon,commercesearch,commercesearchhmc,commercesearchbackoffice,datahubadapter,sapcoreconfiguration,sapmodel,sapproductavailability,sapproductavailabilityhmc,b2bsapproductavailability,sappricingbol,sappricinghmc,sappricing,sappricingproductcarouseladdon,b2bsappricing,sapcustomerb2c,sapcustomerb2b,sapmodelhmc,saporderexchange,saporderexchangeb2b,sapcoreconfigurationhmc,sapproducthmc,sapcoreconfigurationbackoffice,multipaymentmode,amazonpay,codpayment,bspay,paypalservice

这也是您可能要配置Sonar实例结果需要发送到的位置。

Sonar目标已弃用。相反,您应该使用
声纳检查
目标。默认情况下,此目标扫描添加到
localextensions.xml
文件的所有扩展名,但您可以覆盖此列表。所有参数都可以通过使用
local.properties
文件或通过系统属性(参数前缀为
-D
)进行配置

ant extensionsxml \
      -Dplatform.extensionsgen.filename=${HYBRIS_HOME}/hybris/config/localextensions.xml \
      -Dplatform.extensions=ext1,ext2,ext3,ext4
假设您在
bin/modules/custom
目录中有4个扩展名。它们被命名为
ext1
ext2
ext3
ext4
。以下是在测试代码覆盖范围内执行声纳扫描仪分析时应执行的步骤

构建软件 SonarScanner要求构建项目(需要二进制文件)

  • 配置蚂蚁
    cd ${HYBRIS_HOME}/hybris/bin/platform
    . ./setantenv.sh
    
  • 创建
    localextensions.xml
    ant extensionsxml \
          -Dplatform.extensionsgen.filename=${HYBRIS_HOME}/hybris/config/localextensions.xml \
          -Dplatform.extensions=ext1,ext2,ext3,ext4
    
  • 构建软件
    ant all
    
  • 执行测试(+JaCoCo) SAP Hybris套件提供两个任务来执行测试:

    ant unittests
    
    • alltests-主类路径中类的测试
    • allwebtests-web上下文中类的测试
    两者都必须使用附加参数来执行,以生成测试代码覆盖率报告

  • 下载JaCoCo代理
    cd /tmp
    wget https://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.6/org.jacoco.agent-0.8.6-runtime.jar -O jacocoAgent.jar
    cd ${HYBRIS_HOME}/hybris/bin/platform
    
  • 执行
    所有测试
    ant alltests \
          -Dtestclasses.extensions=ext1,ext2,ext3,ext4 \
          -Dtestclasses.reportdir=/tmp/alltests \
          -Dstandalone.javaoptions="-Djava.locale.providers=COMPAT,CLDR -javaagent:/tmp/jacocoAgent.jar=destfile=/tmp/jacocoAlltests.exec"
    
    java.locale.providers
    参数必须不中断在
    impex
    文件中使用非ASCII字符的测试。只有在添加JaCoCo代理时才需要它
  • 执行
    allwebtests
    ant allwebtests \
          -Dtestclasses.extensions=ext1,ext2,ext3,ext4 \
          -Dtestclasses.reportdir=/tmp/allwebtests \
          -Dstandalone.javaoptions="-Djava.locale.providers=COMPAT,CLDR -javaagent:/tmp/jacocoAgent.jar=destfile=/tmp/jacocoAllwebtests.exec"
    
  • 完成所有测试后,我们必须将JaCoCo
    exec
    文件转换为XML格式

  • 下载JaCoCo cli
    cd /tmp
    wget https://repo1.maven.org/maven2/org/jacoco/org.jacoco.cli/0.8.6/org.jacoco.cli-0.8.6-nodeps.jar -O jacocoCli.jar
    cd ${HYBRIS_HOME}/hybris/bin/platform
    
  • 创建XML报告
    java -jar /tmp/jacocoCli.jar report \
           /tmp/jacocoAlltests.exec \
           /tmp/jacocoAllwebtests.exec \
           --classfiles ${HYBRIS_HOME}/hybris/bin/modules/custom/ext1 \
           --classfiles ${HYBRIS_HOME}/hybris/bin/modules/custom/ext2 \
           --classfiles ${HYBRIS_HOME}/hybris/bin/modules/custom/ext3 \
           --classfiles ${HYBRIS_HOME}/hybris/bin/modules/custom/ext4 \
           --xml /tmp/jacocoTestReport.xml
    
  • 执行声纳扫描仪 应设置以下几个参数:

    • sonar.host.url
      -SonarQube/SonarCloud服务器url
    • sonar.login
      -用于向服务器授权的用户令牌
    • sonar.projectKey
      -项目标识符
    • sonar.projectName
      -项目显示名称
    • sonar.projectVersion
      -项目版本
    • sonar.java.source
      -运行软件所需的java版本(仅适用于早于2105的版本)
    • sonar.extensions
      -应分析的扩展(仅适用于早于2105的版本)
    • sonar.junit.reportPaths
      -测试结果的路径
    • sonar.test.excludes
      -sonar扫描仪应排除的测试
    • sonar.coverage.jacoco.xmlReportPaths
      -指向jacoco XML报告的路径

    config/local.properties
    中。我已经更新了上面的代码段以显示它。嗨,Nicolas..因此根据您的评论,我应该能够将Sonar.URL参数添加到config/local.properties文件..我还想知道Hybris是否编写了任何自定义PMD规则..如果是,那么我如何将这些规则迁移到sonarqube实例。嗨,Nicolas,当我多年前尝试此操作时,它试图分析所有的Hybris开箱即用扩展以及我的新定制扩展。还是这样吗?最后我写了一个非常复杂的自定义ant任务,只分析我的扩展…嗨,卡巴迪沙,你能告诉我你在哪里配置了Sonar.URL吗。它是否在nicolas提到的config/local.properties文件中。对我来说,它表示无法执行Sonar-由两个具有相同id的模块引起:“”。每个模块都必须有一个唯一的id。我没有得到它作为副本获得的模块id。