Apple近期在WWDC 2017大會(huì)上宣布,已經(jīng)開源在了Xcode 9中提供的的Swift 4 Migrator。
Swift Migrator現(xiàn)已完全重寫,業(yè)已成為編譯器的一個(gè)組成部分,而不再是一個(gè)獨(dú)立的工具,并對(duì)Swift 3和Swift 4提供同等優(yōu)秀的支持。Migrator的工作是通過下面一系列的測(cè)試(Pass)完成的:
Pre-fix-it測(cè)試。在編譯器不能對(duì)主輸入文件做類型檢查時(shí),執(zhí)行該測(cè)試。在此情況下,Migrator會(huì)應(yīng)用編譯器給出的所有fix-it建議,該過程至多重新嘗試兩次,目的在于生成代碼的抽象語法樹(AST)表示。
AST測(cè)試。如果開發(fā)人員需要遷移Swift 4之前的代碼,那么需要在Pre-fix-it測(cè)試之后開展AST測(cè)試。測(cè)試包括考慮所有以前的SDK在API層次上的改進(jìn),使得源代碼能匹配新的SDK API。
Post-fix-it測(cè)試。該測(cè)試嘗試去應(yīng)用所有Swift 4模式編譯器給出的fix-it建議。這一步驟最多執(zhí)行七次,因?yàn)樵诿總€(gè)fix-it測(cè)試過程中可能會(huì)出現(xiàn)新的問題。
在Pre-fix-it和Post-fix-it測(cè)試階段,對(duì)于所有關(guān)聯(lián)到錯(cuò)誤的fix-it,Migrator是默認(rèn)應(yīng)用的;而對(duì)于關(guān)聯(lián)到警告的fix-it,Migrator是選擇性使用的。
值得注意的是,雖然Apple鼓勵(lì)項(xiàng)目遷移到Swift 4,但代碼遷移并非是嚴(yán)格要求的,因?yàn)镾wift 3.2和4的編譯目標(biāo)可以共存并鏈接到一起。此外,開發(fā)人員不應(yīng)該期待被遷移的代碼塊會(huì)自動(dòng)生成一個(gè)可編譯項(xiàng)目,遷移后的代碼也無法保證是正確的,或是符合語言習(xí)慣的。一系列遷移到Swift 4的已知問題,以及所有可用的解決方案,都以文檔形式提供于Xcode 9的發(fā)行說明中,文檔對(duì)所有注冊(cè)的開發(fā)人員可用。
查看英文原文: Apple Open-sources the Swift Language Migrator