如何将SonarQube与SAP Hybris集成
SAP Hybris套件附带集成PMD插件,并运行自定义PMD代码规则集 PMD插件是通过Hybris ANT构建脚本调用的如何将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
但我想知道是否有一种方法可以将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
ant unittests
- alltests-主类路径中类的测试
- allwebtests-web上下文中类的测试
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"
exec
文件转换为XML格式
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
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
-SonarQube/SonarCloud服务器urlsonar.host.url
-用于向服务器授权的用户令牌sonar.login
-项目标识符sonar.projectKey
-项目显示名称sonar.projectName
-项目版本sonar.projectVersion
-运行软件所需的java版本(仅适用于早于2105的版本)sonar.java.source
-应分析的扩展(仅适用于早于2105的版本)sonar.extensions
-测试结果的路径sonar.junit.reportPaths
-sonar扫描仪应排除的测试sonar.test.excludes
-指向jacoco XML报告的路径sonar.coverage.jacoco.xmlReportPaths
在
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。