概述
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*/**
最后
以上就是开朗期待为你收集整理的ios ,jenkins执行后,坏味道,单测覆盖率sonarqube,又是好几天的全部内容,希望文章能够帮你解决ios ,jenkins执行后,坏味道,单测覆盖率sonarqube,又是好几天所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复