iOS-SonarQue——使用slather生成覆盖率报告
传送门
Demo源码:https://gitee.com/hcsaaron/cssonar-demo
《iOS-SonarQue——安装及使用》
《iOS-SonarQue——展示OCLint分析结果》
当前文章:《iOS-SonarQue——使用slather生成覆盖率报告》
系统环境
Mac OS 10.15.6
前言
《iOS-SonarQue——展示OCLint分析结果》中已经成功在SonarQube
后台展示出OCLint的分析报告了,但是覆盖率依然没任何体现。
文章图片
接下来我们就要用slather
生成覆盖率报告。
关于slather
请看源码介绍:https://github.com/SlatherOrg/slather
安装slather(用于生成覆盖率报告)
sudo gem install slather
如果安装报错,需要更新ruby,请移步《Mac更新ruby版本》
【iOS-SonarQue——使用slather生成覆盖率报告】用上面命令安装完后,会出现
-bash: slather: command not found
,搞了很久都不知道为什么。最后用下面方式安装完后就可以使用slather
命令了:sudo gem install -n /usr/local/bin slather
更新脚本
编辑
run-sonar.sh
脚本,在/bin/sh sonar-scanner -X
前面增加单测编译、生成覆盖率报告的shell代码
# 运行单元测试
xcodebuild -workspace ${PROJECT_NAME} -scheme ${TEST_TARGET_NAME} -configuration Debug -enableCodeCoverage YES -destination 'platform=iOS Simulator,name=iPhone 8' test
# 生成单测覆盖率报告
slather coverage -x --output-directory sonar-reports --scheme ${TARGET_NAME} --workspace ${PROJECT_NAME} CSSonarDemo.xcodeproj# 重命名覆盖率报告(sonar-swift插件默认指定路径为`sonar-reports/coverage*.xml`)
mv sonar-reports/cobertura.xml sonar-reports/coverage.xml
由于
slather coverage
只能指定输出文件夹,默认文件名是cobertura.xml
,而SonarQube的sonar-swift
插件的覆盖率报告路径指定默认为sonar-reports/coverage*.xml
,因此将其进行重命。如果不想进行重命名操作,也可以修改SonarQube后台指定的路径及文件命名。
文章图片
最终完整脚本为:
PROJECT_NAME="CSSonarDemo.xcworkspace"
TARGET_NAME="CSSonarDemo"TEST_TARGET_NAME="CSSonarDemoTests"
UITEST_TARGET_NAME="CSSonarDemoUITests"rm -rf sonar-reportsmkdir sonar-reportsrm -rf ./build/derivedDataxcodebuild clean -UseModernBuildSystem=NOxcodebuild -workspace ${PROJECT_NAME} -scheme ${TARGET_NAME} -UseModernBuildSystem=NO -derivedDataPath ./build/derivedData -configuration Debug COMPILER_INDEX_STORE_ENABLE=NO | xcpretty -r json-compilation-database -o compile_commands.json# 生成OCLint分析报告
oclint-json-compilation-database -e Pods -- -report-type html -o oclintReport.html
oclint-json-compilation-database -e Pods -- -report-type pmd -o sonar-reports/oclint.xml \
-max-priority-1=9999 \
-max-priority-2=9999 \
-max-priority-3=9999 \# 运行单元测试
xcodebuild -workspace ${PROJECT_NAME} -scheme ${TEST_TARGET_NAME} -configuration Debug -enableCodeCoverage YES -destination 'platform=iOS Simulator,name=iPhone 8' test
# 生成单测覆盖率报告
slather coverage -x --output-directory sonar-reports --scheme ${TARGET_NAME} --workspace ${PROJECT_NAME} CSSonarDemo.xcodeproj# 重命名覆盖率报告(sonar-swift插件默认指定路径为`sonar-reports/coverage*.xml`)
mv sonar-reports/cobertura.xml sonar-reports/coverage.xml# Sonar扫描
/bin/sh sonar-scanner -X
在工程目录中再次执行以下命令:
sh run-sonar.sh
执行完成后,来看SonarQube后台,可以看到首页中的项目除了有15个异味,还呈现出覆盖率。进入具体项目,点击覆盖率,可以查看到具体覆盖情况。
文章图片
SonarQube首页
文章图片
覆盖率情况 参考资料
slather源码:https://github.com/SlatherOrg/slather
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 由浅入深理解AOP
- 低头思故乡——只是因为睡不着
- 【译】20个更有效地使用谷歌搜索的技巧
- 取名——兰