Swift代碼自動格式化

1. 安裝SwiftFormat

什么是SwiftFormat

SwiftFormat 是一款用來格式化Swift代碼的命令行工具。

我們可以直接用 Homebrew 來安裝它,已經(jīng)安裝的同學可以忽略這一步:

brew install swiftformat

然后安裝 swiftformat 的 Xcode 插件:

brew install --cask swiftformat-for-xcode
open "/Applications/SwiftFormat For Xcode.app"

打開 SwiftFormat For Xcode.app 后,會自動安裝到Xcode上,需要重啟Xcode才能生效。重新打開Xcode,在 Xcode的 Editor 目錄下能看到 SwiftFormat 菜單就說明插件安裝成功了。

image.png

這里,我們可以手動選擇 Format File 菜單來格式化當前文件。 但是還是不夠方便,如果能做到像Flutter開發(fā)一樣,保存文件的時候,自動格式化代碼就好了。

2. 使用 Automator 添加自動化腳本

Automator是一款系統(tǒng)軟件,中文名是自動操作。

image.png

打開Automator,選擇快速操作(Quick Action):


image.png

然后在搜索欄搜索 Script雙擊 選擇 運行 AppleScript

image.png

然后用下面的腳本代碼替換上圖中的腳本:

on run {input, parameters}
    tell application "System Events"
        tell process "Xcode"
            set frontmost to true
            if menu item "Format File" of menu of menu item "SwiftFormat" of menu "Editor" of menu bar 1 exists then
                click menu item "Format File" of menu of menu item "SwiftFormat" of menu "Editor" of menu bar 1
            end if
            click menu item "Save" of menu "File" of menu bar 1
        end tell
    end tell
    return input
end run
復制代碼

該腳本將執(zhí)行以下操作:

  1. 檢查Xcode中Editor菜單下是否存在“SwiftFormat”>“Format File”菜單項。
  2. 如果存在,則自動觸發(fā) Format File菜單點擊,來格式化代碼。
  3. 最后,自動點擊 Save 菜單,保存文件修改。

點擊Build按鈕,里面的代碼會自動高亮:

image.png

然后,修改 工作流程收到 這一項配置為 沒有輸入,位于這里改成 Xcode。

image.png

最后 ? + S 保存,將該自動操作命名為 XcodeFormatAndSave,它會自動保存在 ~/Library/Services/ 目錄下。重新打開Xcode,我們將在 Xcode -> Services 菜單下看到它,但是目前它還是不能工作的,還需要進一步配置。

[圖片上傳失敗...(image-9041b2-1637922491632)]

3. 添加鍵盤快捷鍵

我們最終的目標是要在保存文件(? + S)的時候,自動進行代碼格式化。

打開 系統(tǒng)偏好設置 -> 鍵盤 -> 快捷鍵,選擇 左側(cè) App快捷鍵 這一項,添加一個新的快捷鍵,應用程序選擇 Xcdoe,菜單標題和剛才保存的自動操作名稱一樣:XcodeFormatAndSave,鍵盤快捷鍵設置成 ? + S,然后點擊 添加 按鈕。

image.png

最后,我們還需要為它配置運行權(quán)限,不然會報錯。

打開 系統(tǒng)偏好設置 -> 安全性與隱私 -> 隱私,在左側(cè)列表中選擇 輔助功能,授予 Xcode 控制權(quán)限。

[圖片上傳失敗...(image-65a4e3-1637922491632)]

這樣,在Xcode中保存(? + S)Swift文件的時候,就會自動觸發(fā)代碼格式化了,非常的舒適~。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容