大多数浏览器和
Developer App 均支持流媒体播放。
-
使用静态分析器及早发现错误
了解 Xcode 如何在您运行 app 之前自动跟踪死循环、未使用代码和其他问题。了解 Xcode 如何通过一个单击操作来分析您的项目,发现 Objective-C、C 和 C++ 中的安全问题、逻辑错误和其他难以发现的错误。我们将展示如何使用静态分析器来节省您调查错误报告的时间并提高 app 的整体质量。
资源
相关视频
WWDC19
-
下载
♪ ♪ 我是拉维坎达戴马德哈万 在这部影片中 我会说明如何使用 Xcode中的静态分析工具 找出并修正app中的错误 首先 我会先示范如何使用 静态分析工具来找出app中的错误 并同时了解它们 接着 我会描述Xcode 13中 新的检查功能 它会帮你找到更多种程序代码中的问题 最后 我会介绍一些方法 让你可以定制化分析工具 使此工具和你的作业流程更好地整合 现在就让我们来瞧瞧 如何运用分析工具找出app中的错误 Xcode中的静态分析工具 可以发现程序代码错误 且不需要执行原始码即可进行分析 因此 它可以提早揭露程序代码错误 甚至在你测试及确认app质量之前 它也可以在程序代码路径中 找出一些罕见的 在测试阶段不会被发现的问题 它能找出C/C++和Objective-C 程序代码中的错误 甚至在混和了 Swift和Objective-C的项目也适用 让我们来瞧瞧分析工具的实际运作 以我正在开发的一个app为范本 我正试着改善一个现有的app 它是以Swift和Objective-C 写成 通过这个app可以探索太阳系 这就是该app的Xcode项目 接下来 我要执行静态分析工具 看它是否会找出任何程序代码错误 操作相当简单 只要至“Product” 接着点选“Analyze” 或使用快捷键Command+Shift+B
你可以在Xcode的状态栏 看到分析工具执行的状况 分析项目跟构建项目十分相似 分析工具会扫描进行中的项目里 所有的原始文件并找出程序代码错误 如状态所显示 分析工具在我的项目里 找到了一个问题 我可以至Xcode的问题导航器 了解更多 如我所演示 要在你的项目中 执行分析工具 只需要单击鼠标 单击鼠标 你就可以找到 各式的程序代码错误 如:安全性问题 逻辑错误、API错误以及其他 分析工具不只能找出程序代码错误 还能解释错误 让我们回到我的app中被找出的错误 并试着了解它 这里的问题是 Objective-C的方法 “positionAtDate”的回传值是nil 但不应该是这样 方法的回传值应该要是非null值 基于方法的定义 但现在 我想要了解 为什么这个方法会回传nil 你可以展开分析工具列出的问题 即可以看到一连串 导致程序代码错误的事件 这些事件也会在编辑器中 与发生错误的叙述一同显示 箭头标示出事件的次序 我认为从下至上浏览这些报告较容易 最后一个事件显示 回传值“position”是nil 前几个事件显示 会如此的原因为 方法“regularPositionAtDate” 意在初始化“position” 而方法没有被呼叫 是因为它的接收对象是nil
循着箭头看 这发生在 switch语句的默认命题中 回到报告的最开头 这里显示接收对象初始设定为nil 并一直维持到到默认命题 现在 我明白了 我还没设定好switch语句中 球状及不规则形状以外对象的条件
为了解决这个问题 我要将 默认命题变更为与球状命题完全相同 我会重新执行分析工具 确保问题有被解决了
我相当高兴 这个程序代码错误 能在我开发app的阶段被侦测出来 这是因为 一个Objective-C的方法回传nil 相当于回传一个非null的值 这会导致在执行期发生意料外的行为 当方法是从Swift语句呼叫时 如我程序代码的情况 所幸 通过执行静态分析工具 程序代码错误在我的app用户受影响前 就被发现了 在Xcode13 我们升级了分析工具 我们为你打造了新的检查功能 分析工具现在能够抓出 更多程序代码中的逻辑错误 它能够侦测无限循环和冗余代码 像是不必要的条件分支 它能够报告 断言及C++语码中的副作用 它能够抓取移动及转发运算符 使用时的错误 部分新的检查功能来自 专为Apple的Clang编译器所开发的 开源贡献资源 让我们来看几个新的检查功能 能够抓取出的程序代码错误 基本上 以断言来确认你对程序代码的期望 是很好的练习 然而 你必须确保 断言不会带来副作用 像是修改变量或内存时 举例来说 这个代码段 会遍历大量的天体 并计算出其中 有卫星的天体数量 它有一段NSAssert断言 它会确认 有卫星的对象数量 是否等于或少于星体的数量 但这个断言有一个副作用 那就是它会递增计数器针对 有卫星对象的追踪次数 这类的更新在发布版本的构建配置中 可能会遗失 在这个配置中 断言会被禁止执行 这是为了让程序代码执行快一些 程序代码因此才不会递增计数器 在发布版构建的计算次数 在开发阶段很容易忽略这类型的错误 因为它们大多 不会在调适版构建中出现 启动Xcode13后 分析工具能在你的程序代码中 找出这类问题 并报告出来 这项检查功能不只适用于NSAsserts 也适用于C和 C++语言的断言 这类程序代码错误很容易修正 只需要如此处显示的 将副作用移出断言
无限循环是另一个常见的程序代码错误 你可能在一些 逻辑较复杂的循环中见过 例如 这个巢状循环 试图通过一个值 自动增加一个二维网格中的数据 这里含有一个程序代码错误 变量“value”会经由内循环递增 而不是变量“column” 然而变量“column” 才是计算循环执行次数的程序代码 分析工具会侦测这样的错误并说明
一旦错误被注意到了 修正就很容易 将“value”替换成“column”即可 虽然这些检查功能 找出的错误相当基本 但我们确实通过此功能 找到了真正的错误 现在 你也可以在开发app时 使用此功能找出程序代码错误并修正 Xcode提供许多定制化功能 使你可以微调分析工具 以搭配你的作业流程 你可以从项目构建设定中 使你的分析工具配合每个构建去执行 为了快速筛选出相关的设定 可以善用查找功能 例如 以“analysis”为搜寻关键词 我可以筛选出与分析工具相关的选项
要启用构建“过程中进行分析” 你只需要开启构建设定 例如在递增构建中 分析功能只会在修改过的文件中执行 这会使得程序代码在经修改后 执行分析工具时变得简单及快速 此分析工具有两种模式 浅层分析及深层分析 浅层分析较快速 但会避免错误 跨越数个涵式 建议将这个模式运用在 对构建及分析次数敏感的项目中 如前面所说 分析工具有检查功能 可以找出各式的程序代码错误 其中一些为主动选择加入的功能 你可以在构建设定中微调检查功能 可以配合你的项目 选择执行或禁止执行检查功能 例如 若你的项目有安全性关键码 即可以执行安全性问题的检查功能 反之 若你认为其中的一些问题 与你的程序代码并不相关 你可以个别地禁止执行较无用的检查 但仍可以享有其他检查功能
你也可以只分析单一文件 而不必分析整个项目 从“产品”中的“执行动作”菜单 可以选择要执行分析的文件 使用此功能快速地检查你的变更 甚至不必构建项目 也能执行检查 此功能在修改标头文件时特别实用 在输入时 它不会重复分析文件 Xcode的静态分析工具 在开发阶段早期 即可以找出程序代码中的错误 只要一键就能执行分析 发现各类的错误 也别忘了配合作业流程进行定制化 Xcode13中 我们升级了分析工具 并新增了多项检查逻辑错误的功能 在用户开始使用app之前 运用分析工具修正程序代码错误吧 谢谢观看 祝你在接下来的WWDC体验愉快 [轻快的音乐]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。