Xcode Server:启用代码诊断工具

原始文章:原始文章已发布在我的个人博客XCBlog上,继续阅读 此处 以获得更好的图形。 要阅读有关iOS DevOps和iOS CI / CD的更多有趣文章,请 在此处 访问我的博客

Xcode提供了一些很酷的工具,可以用来检测一些手动或功能自动测试难以捕获的疯狂错误。 除非它们对应用程序产生影响,否则很难找到与内存和线程相关的问题。 在我以前的有关在iOS CI上激活代码诊断工具的文章中,我们看到了如何在CI服务器上启用Apple的代码诊断工具,例如TravisCI或使用xcodebuild命令行工具的任何其他第三方CI服务器。 在这篇简短的文章中,我们如何使用Apple自己的Continuous Integration服务器(也称为Xcode Server)启用这些工具。

回顾一下代码诊断工具,Xcode具有四种不同类型的运行时工具,也称为代码诊断工具来查找问题。 这些工具是

  • 地址消毒剂

Address Sanitizer(又名ASan)报告了与内存相关的问题,例如内存损坏和其他与内存相关的安全漏洞问题。 您可以在此处阅读有关Address Sanitizer的更多信息。

  • 线程消毒剂

Thread Sanitizer aka TSan可检测数据争用问题。 它还检测其他与线程相关的问题,例如线程泄漏。 在Apple的官方文档中有关于Thread Sanitizer的详细文档。

  • 主线程检查器

主线程检查器是随Xcode 9一起推出的新工具,该工具可检测到Apple框架(如UIKit,AppKit等)的无效使用,这些框架本应在主线程中使用,但意外地在后台线程中使用。

  • 未定义的行为消毒剂

未定义行为Sanitizer aka UBSan在运行时检测代码中未定义的行为。 这些行为包括除以零,从未对齐的指针加载内存或取消引用空指针。 您可以在此处阅读有关UBSan的更多信息。

Apple在代码诊断的官方文档页面上提供了所有这些工具的简要文档。

我们可以通过“编辑方案”->“运行/测试”->“诊断”从Xcode方案设置中启用所有这些工具

您可以看到所有这些工具都可以通过使用复选框来激活。 需要注意的一件事是,您不能同时启用线程清理程序和地址清理程序。

从Xcode 9开始,Xcode Server内置了Xcode应用程序,因此无需获取macOS服务器即可启动Xcode Server。 我们可以直接从Xcode启动服务器并开始创建Bot。

在Xcode 9中,创建Bot时,我们有一个名为Arguments的选项卡,并且在arguments中,我们可以找到该部分以添加其他参数Arguments传递给xcodebuild

我们可以使用该部分来启用代码诊断工具。

我们可以传递不同的参数来启用地址清除器,线程清除器或未定义的行为清除器。 在上图中,我们启用了线程清理程序和未定义的行为清理程序。 现在,我们的运行和测试阶段启用了TSan和UBSan。

Xcode Server提供了很酷的选项,可以将其他参数传递给xcodebuild,该参数可以用于启用Xcode代码诊断工具。 即使未在方案中传递,我们也可以显式传递参数。 最好在Xcode Server的持续集成环境中启用这些工具以捕获内存和线程问题。 因此,请不要等待,如果您正在使用Xcode Server,请立即启用ASan,TSan,UBSan和Main Thread Checker!

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..

Interesting Posts