Tag: Devop

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 我们可以使用该部分来启用代码诊断工具。 我们可以传递不同的参数来启用地址清除器,线程清除器或未定义的行为清除器。 […]