ios ,jenkins执行后,坏味道,单测覆盖率sonarqube,又是好几天

 

 

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod update
projectworkspace=APP.xcworkspace

proj=APP.xcodeproj
scheme=APP
sonarkey=APP
sonarprojectName=sonar_APP
projectname=APP
source=APP
testsource=APPTests

if [[ ! (-d "sonar-reports") ]]; then
    mkdir sonar-reports
fi
1.clean

xcodebuild -workspace ${projectworkspace} -scheme ${scheme} -configuration Debug clean

2.build,注意COMPILER_INDEX_STORE_ENABLE=NO
xcodebuild -workspace ${projectworkspace} -scheme ${scheme} -configuration Debug build COMPILER_INDEX_STORE_ENABLE=NO | xcpretty -r json-compilation-database -o compile_commands.json
oclint-json-compilation-database -e Pods -v -- -rc=LONG_LINE=150 -rc=NCSS_METHOD=60 -report-type pmd -o sonar-reports/lizard-report.xml -max-priority-1 300000  -max-priority-2 300000  -max-priority-3 300000

3.删除生成json里的一些警告
python /Users/dealtest/Documents/jenkins/rm_clang.py

4.执行测试,xpretty 的参数记得report前面是2个-
xcodebuild test -workspace ${projectworkspace} -scheme ${scheme} -configuration Debug -destination 'platform=iOS Simulator,OS=11.4,name=iPhone 6' -destination-timeout 360 -enableCodeCoverage Yes | xcpretty -t --report junit

5.注意命名,一定是TEST-开头,否则sonar不识别
mv build/reports/junit.xml sonar-reports/TEST-report.xml

6.把profdata格式化为xml格式,sonar可识别
slather coverage --input-format profdata --cobertura-xml --output-directory sonar-reports --workspace ${projectworkspace} --scheme ${scheme}  ${proj}
mv sonar-reports/cobertura.xml sonar-reports/coverage.xml

7.导入sonar,记得-Dsonar.tests=${testsource}一定要加上,-Dsonar.junit.reportsPath=sonar-reports/就是到目录即可
sonar-scanner -Dsonar.host.url=http:/127.0.0.1:9000 -Dsonar.login=admin -Dsonar.password=admin -Dsonar.projectKey=${sonarkey} -Dsonar.projectName=${sonarprojectName} -Dsonar.projectVersion=1.0 -Dsonar.language=objc -Dsonar.sources=${source} -Dsonar.tests=${testsource} -Dsonar.objectivec.workspace=${projectworkspace} -Dsonar.objective.appScheme=${scheme} -Dsonar.objectivec.oclint.report=sonar-reports/lizard-report.xml -Dsonar.junit.reportsPath=sonar-reports/ -Dsonar.objectivec.coverage.reportPattern=sonar-reports/coverage*.xml -Dsonar.sourceEncoding=UTF-8
rm -rf compile_commands.json
rm -rf xcodebuild.log
rm -rf .scannerwork
rm -rf sonar-reports

 

各种坑呀,命令行加-Dsonar-exclusions=**/*Test*/**后,后台配置的排除源文件不起作用, 他俩是只能有一个生效

还有一个问题,当source和testsource的目录包含相同的文件时会报错,这时候,应该

sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值