Xcode12中SonarQube覆盖率转换失败,遇加载结果包报错求助
解决Xcode 12转换覆盖率数据给SonarQube时的"Failed to load result bundle"错误
我之前在适配Xcode 12做SonarQube覆盖率解析的时候,也踩过这个坑!咱们来拆解下问题和解决办法:
错误原因
这个报错的核心是:Xcode 12不再支持旧版v1 API生成的结果包,你当前要加载的xcresult文件是用旧版Xcode或者未指定API版本的命令生成的,格式不兼容导致加载失败。
可行解决方案
生成兼容Xcode 12的结果包
用xcodebuild命令生成测试结果包时,显式指定-resultBundleVersion 2参数,强制生成v2格式的结果包,这样Xcode12就能正常识别了。示例命令:xcodebuild test -workspace YourProject.xcworkspace -scheme YourAppScheme -destination 'platform=iOS Simulator,name=iPhone 14' -resultBundlePath ./TestResults.xcresult -resultBundleVersion 2之后再用这个新生成的
xcresult文件去做SonarQube的覆盖率转换就没问题了。避免跨版本混用结果包
如果你的结果包是用Xcode 11及更早版本生成的,别尝试用Xcode12去解析它——直接用Xcode12重新跑一遍测试生成新的结果包,这是最稳妥的方式。检查SonarQube插件版本
确保你用的SonarQube相关插件(比如SonarSwift、SonarObjective-C)是支持Xcode12的最新版本,旧插件可能对新格式的覆盖率数据处理有兼容问题,升级后大概率能解决一些隐性问题。
内容的提问来源于stack exchange,提问作者Renato Souza
相关产品推荐
相关产品推荐

