SAP Hybris Suite附带集成的PMD插件,可运行自定义PMD代码规则集。
通过Hybris ANT构建脚本调用PMD插件。
但我想知道是否有办法将Hybris Suite与SonarQube集成
答案 0 :(得分:4)
根据您的hybris版本,已有一个sonar
Ant任务将指标发送给Sonar。
首先到你的平台回家:
cd $HYBRIS_HOME/hybris/bin/platform
然后,正确初始化Ant:
. ./setantenv.sh
执行测试:
ant unittests
将结果发送给Sonar:
ant sonar
可以在config/local.properties
文件中的平台内配置Sonar Runner。例如:
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实例结果的地方。
答案 1 :(得分:1)
假设这是我们正在谈论的Java代码,您可以轻松地分析"它与SonarQube。至于"整合"它是,如果你的意思是你想运行"自定义PMD代码规则集"通过SonarQube,这应该只是安装SonarQube PMD插件并设置质量配置文件。
答案 2 :(得分:0)
sonar
目标已弃用。相反,您应该使用 sonarcheck
目标。默认情况下,此目标会扫描添加到 localextensions.xml
文件的所有扩展名,但您可以覆盖此列表。可以使用 local.properties
文件或通过系统属性(以 -D
为前缀的参数)传递它们来配置所有参数。
假设您在 bin/modules/custom
目录中有 4 个扩展。它们被命名为 ext1
、ext2
、ext3
和 ext4
。下面是执行具有测试代码覆盖率的 SonarScanner 分析的步骤。
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
SAP Hybris 套件提供两个任务来执行测试:
两者都必须使用附加参数执行才能生成测试代码覆盖率报告。
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
alltests
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 格式。
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
有几个参数需要设置:
sonar.host.url
- SonarQube/SonarCloud 服务器 URLsonar.login
- 用于向服务器授权的用户令牌sonar.projectKey
- 项目标识符sonar.projectName
- 项目显示名称sonar.projectVersion
- 项目版本sonar.java.source
- 运行软件所需的 Java 版本(仅 2105 之前的版本需要)sonar.extensions
- 应分析的扩展(仅 2105 之前的版本需要)sonar.junit.reportPaths
- 测试结果的路径sonar.test.exclusions
- SonarScanner 应该排除的测试sonar.coverage.jacoco.xmlReportPaths
- JaCoCo XML 报告的路径ant sonarcheck
-Dsonar.host.url=https://example.org/ \
-Dsonar.login=1234567890abcdefghijk \
-Dsonar.projectKey=my.company:custom-extensions \
-Dsonar.projectName="Custom Extensions" \
-Dsonar.projectVersion=1.0.0-SNAPSHOT \
-Dsonar.java.source=11 \
-Dsonar.extensions=ext1,ext2,ext3,ext4 \
-Dsonar.junit.reportPaths=/tmp/alltests,/tmp/allwebtests \
-Dsonar.test.exclusions= \
-Dsonar.coverage.jacoco.xmlReportPaths=/tmp/jacocoTestReport.xml