sonarqube 混合 obj-c swift 项目,如何扫描代码覆盖率
Posted
技术标签:
【中文标题】sonarqube 混合 obj-c swift 项目,如何扫描代码覆盖率【英文标题】:sonarqube mixed obj-c swift project, how scan is done for code coverage 【发布时间】:2019-05-21 15:31:01 【问题描述】:根据文档,swift 和 Obj-C 声纳扫描仪都需要代码覆盖率数据并且以不同的方式(build-wrapper 与 xccov)。但这让我想到,代码覆盖范围是针对 xcode 中的整个目标/项目,而不仅仅是特定语言的文件。因此,对于混合的 Obj-C 和 swift 项目,SonarQube 是否需要两次相同的整个项目 xcode 生成的覆盖数据(每个扫描仪一次)?如果不是,它如何关联声纳项目中特定语言的代码覆盖率,或者它根本不关心?
之所以问这个问题,是因为这两个扫描仪的文档再次列出了不同的代码覆盖率说明,这让我很惊讶,这让用户怀疑每个扫描仪是否不会像使用 xcode 那样将数据混合在一起和一个混合的 obj-c swift 项目(即它的 same 数据)
【问题讨论】:
【参考方案1】:即使我面临同样的扫描。我们目前正在做的是我们设置 build-wrapper 实用程序,如 https://docs.sonarqube.org/latest/analysis/languages/cfamily/ 所示。 所以,最初它工作了一个月左右。后来,我们开始收到以下错误:
================================================ ====================================== 02:36:25.658 信息:-------------------------------------------- ----------------------------------------- 02:36:25.658 错误:SonarQube 扫描仪执行期间出错 java.lang.IllegalStateException:找到了“build-wrapper-dump.json”文件,但分析了 0 个 C/C++/Objective-C 文件。请确保: * 您正在使用最新版本的 build-wrapper 和 SonarCFamily 分析器 * 您使用正确的配置正确调用扫描仪 * 支持您的编译器 * 你正在正确地包装你的构建 * 你正在包装一个完整/干净的构建 * 您提供了正确的构建包装器输出目录的路径
================================================ ======================================
所以,我们决定在我们的声纳服务器(企业版)上安装一个 backelite 插件/jar(处理 Swift 和 Objective-C 混合的声纳覆盖率报告),但是,它导致了以下错误:
error message screenshot
所以,基本上你可以设置 uo build wrapper 实用程序并尝试执行声纳扫描。确保安装了 sonar-scanner 并且您正在将相关开关传递给 sonar-scanner 命令。
【讨论】:
您可以在 SonarSource 社区论坛community.sonarsource.com获得帮助以上是关于sonarqube 混合 obj-c swift 项目,如何扫描代码覆盖率的主要内容,如果未能解决你的问题,请参考以下文章
如何在同一框架内访问 Objective-C 中的内部 Swift 类?