当前位置:新闻中心行业动态 → 正文

Apple开源了Swift Migrator

责任编辑:editor004 作者: Sergio De Simone |来源:企业网D1Net  2017-07-13 11:14:07 本文摘自:INFOQ

Apple近期在WWDC 2017大会上宣布,已经开源在了Xcode 9中提供的的Swift 4 Migrator。

Swift Migrator现已完全重写,业已成为编译器的一个组成部分,而不再是一个独立的工具,并对Swift 3和Swift 4提供同等优秀的支持。Migrator的工作是通过下面一系列的测试(Pass)完成的:

Pre-fix-it测试。在编译器不能对主输入文件做类型检查时,执行该测试。在此情况下,Migrator会应用编译器给出的所有fix-it建议,该过程至多重新尝试两次,目的在于生成代码的抽象语法树(AST)表示。

AST测试。如果开发人员需要迁移Swift 4之前的代码,那么需要在Pre-fix-it测试之后开展AST测试。测试包括考虑所有以前的SDK在API层次上的改进,使得源代码能匹配新的SDK API。

Post-fix-it测试。该测试尝试去应用所有Swift 4模式编译器给出的fix-it建议。这一步骤最多执行七次,因为在每个fix-it测试过程中可能会出现新的问题。

在Pre-fix-it和Post-fix-it测试阶段,对于所有关联到错误的fix-it,Migrator是默认应用的;而对于关联到警告的fix-it,Migrator是选择性使用的。

值得注意的是,虽然Apple鼓励项目迁移到Swift 4,但代码迁移并非是严格要求的,因为Swift 3.2和4的编译目标可以共存并链接到一起。此外,开发人员不应该期待被迁移的代码块会自动生成一个可编译项目,迁移后的代码也无法保证是正确的,或是符合语言习惯的。一系列迁移到Swift 4的已知问题,以及所有可用的解决方案,都以文档形式提供于Xcode 9的发行说明中,文档对所有注册的开发人员可用。

查看英文原文: Apple Open-sources the Swift Language Migrator

关键字:SwiftMigratorApple

本文摘自:INFOQ

x Apple开源了Swift Migrator 扫一扫
分享本文到朋友圈
当前位置:新闻中心行业动态 → 正文

Apple开源了Swift Migrator

责任编辑:editor004 作者: Sergio De Simone |来源:企业网D1Net  2017-07-13 11:14:07 本文摘自:INFOQ

Apple近期在WWDC 2017大会上宣布,已经开源在了Xcode 9中提供的的Swift 4 Migrator。

Swift Migrator现已完全重写,业已成为编译器的一个组成部分,而不再是一个独立的工具,并对Swift 3和Swift 4提供同等优秀的支持。Migrator的工作是通过下面一系列的测试(Pass)完成的:

Pre-fix-it测试。在编译器不能对主输入文件做类型检查时,执行该测试。在此情况下,Migrator会应用编译器给出的所有fix-it建议,该过程至多重新尝试两次,目的在于生成代码的抽象语法树(AST)表示。

AST测试。如果开发人员需要迁移Swift 4之前的代码,那么需要在Pre-fix-it测试之后开展AST测试。测试包括考虑所有以前的SDK在API层次上的改进,使得源代码能匹配新的SDK API。

Post-fix-it测试。该测试尝试去应用所有Swift 4模式编译器给出的fix-it建议。这一步骤最多执行七次,因为在每个fix-it测试过程中可能会出现新的问题。

在Pre-fix-it和Post-fix-it测试阶段,对于所有关联到错误的fix-it,Migrator是默认应用的;而对于关联到警告的fix-it,Migrator是选择性使用的。

值得注意的是,虽然Apple鼓励项目迁移到Swift 4,但代码迁移并非是严格要求的,因为Swift 3.2和4的编译目标可以共存并链接到一起。此外,开发人员不应该期待被迁移的代码块会自动生成一个可编译项目,迁移后的代码也无法保证是正确的,或是符合语言习惯的。一系列迁移到Swift 4的已知问题,以及所有可用的解决方案,都以文档形式提供于Xcode 9的发行说明中,文档对所有注册的开发人员可用。

查看英文原文: Apple Open-sources the Swift Language Migrator

关键字:SwiftMigratorApple

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^