Swift 代碼格式化工具--SwiftFormat的使用

SwiftFormat
A command-line tool and Xcode Extension for formatting Swift code
用于格式化 Swift代碼的一個命令行工具和 Xcode擴展。

前言

之前的工作中,一直都是自己在維護和開發公司的 iOS項目,對于代碼格式沒有強制要求,但本著嚴格自律的工作作風,自己在寫代碼的時候,都是遵守模仿了Swift官方手冊的代碼風格。而且自己也已經習慣了閱讀這種格式的代碼。畢竟看著美觀啊!

在更換了工作之后,現在的 iOS開發工作已經不是我一個人的戰斗。于是問題來了。同事的項目代碼并沒有準守官方手冊的代碼風格,而且很多地方看起來就很不規范的樣子。在這個方面,公司也沒有做出個統一規范。這讓我在看同事代碼的時候就特別不舒服,有時甚至去主動修改同事的代碼格式。如果真的手動去更改整個項目的代碼格式風格,顯然不現實。于是就萌發了找一個簡單易通的 Swift代碼格式工具的想法...

最后找個了 SwiftFormat

這次主要解釋 Xcode Extension 的安裝和使用,可直觀較快的解決問題。

安裝與設置

SwiftFormat 用于 Xcode擴展的工具,是一個名叫 SwiftFormat for Xcode.app。
推薦使用 Homebrew 命令安裝。

brew install swiftformat-for-xcode

也可以去 github releases 頁面手動下載 app 的壓縮包。
下載地址

3a9e4491441249539fc540ba6bf239c1~tplv-k3u1fbpfcp-watermark.image.png

我們直接在頁面選擇最新發布版本的 SwiftFormat.for.Xcode.app.zip下載,下載地址

792514b1eb034b368af17987c0b2e4d5~tplv-k3u1fbpfcp-watermark.image.png

下載完成解壓,獲得 app。并將 app 拖入到左邊的應用程序,點擊運行。

安全提示可以忽略,直接打開。


458d3195bec04f0bbf9bcb076b4b9c75~tplv-k3u1fbpfcp-watermark.image.png

右上角可選擇 Swift語言的版本,默認為自動,可選為自己項目使用的語言版本。

Swift 代碼格式的規則為列表中打勾的選項,可不作調整,自行研究每個選的的作用,目前還沒有漢化。


33280210b4ab47108be623d32e8e6bc7~tplv-k3u1fbpfcp-watermark.image.png

然后在 系統偏好設置中,找到擴展,勾選 SwiftFormat.for.Xcode 下的選擇框,繼續查看 Xcode Source Editor 里的選項是否打勾,打勾后就完成了安裝設置工作。??

使用

SwiftFormat 使用很簡單,會在 Editor 菜單下增加一個 SwiftFormat 的選項。


95ba647788b44d049509705bc9d135fd~tplv-k3u1fbpfcp-watermark.image.png

Format Selection 處理選中的代碼
Format File 處理當前文件

到這里,安裝使用就已經介紹完畢,需要的小伙伴可以上手試一試啦。??

目前介紹的是 SwiftFormat界面化的 Xcode擴展,功能直接,能快速處理 Swfit代碼格式,另外app 中也提供一些格式化規則的選項,用于自定義化代碼格式化。

使用之后,感覺幾乎沒有什么學習成本,便于大家的代碼格式統一化。

最后,如果對命令感興趣的話,可以了解其命令行工具的使用,可在SwiftFormat的主頁 查看介紹。

cocoapods中的使用方式

把腳本放在build phase,會引起的問題就是build之后才整理代碼導致breakpoint失效,為了解決這個問題,把執行腳本時機放在pre-action,按下build的時候就會先格式化代碼。
(1)pod引入Swift Foramt,Podfile設置如下,然后cd到工程路徑,pod install

platform :ios, "11.0"

def app_pods
pod 'SwiftFormat/CLI', '0.40.4'
#  pod 'SwiftFormat/CLI'
end

target 'TestFormat' do
   app_pods
end

(2)Edit sheme->Build->Pre-action->New Run Script Action,添加腳本文件。【target —> Edit Scheme —> Build —> Pre-actioins —> + New Run Script Action】

11893660-f73b51fd0f0a43b2.png
[圖片上傳中...(11893660-10890503dff6e879.png-e60b27-1636358399987-0)]

11893660-10890503dff6e879.png

腳本文件內容如下:
記得將腳本中的TestFormat(demo中的項目名)換成自己的項目名

if [ "${CONFIGURATION}" = "Debug" ]; then

"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat" --disable unusedArguments,numberFormatting,redundantReturn,andOperator,anyObjectProtocol,trailingClosures,redundantFileprivate --ranges nospace --swiftversion "5.0" "${SRCROOT}/TestFormat/"

echo "format debug build swift code"

else

echo "Not Debug Env, skip format"

fi

(3)寫入不規范的代碼,按下build(Command + B)進行測試。可以看到代碼自動規范化了,再進行building。

// 格式化之前的代碼
func test(){

        let isTest = false

        if isTest {

            NSLog("testing")

        }

        else{



        }

    }

}
// 格式化之后的代碼
 func test() {
        let isTest = false

        if isTest {

            NSLog("testing")

        } else {}

    }

完整項目地址:https://github.com/jueyi1127/TestFormat

參考鏈接:http://www.lxweimin.com/p/0158144f1fe1
參考鏈接:https://juejin.cn/post/6911705237266890759

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

推薦閱讀更多精彩內容