Xcode 配置 Swift Lint 規(guī)范代碼風格

由于種種原因,簡書等第三方平臺博客不再保證能夠同步更新,歡迎移步 GitHub:https://github.com/kingcos/Perspective/。謝謝!

Swift Lint is a tool to enforce Swift style and conventions.

Date Notes Swift Xcode
2017-04-30 首次提交 3.1 8.3.2

前言

最近一個月荡陷,文章的更新速度慢了下來,原因一是并不是所有內容都值得發(fā)表迅涮。有些純粹熟練度的問題废赞,大可不必浪費時間和精力作文。二是最近找了不少外文的資料叮姑,需要消化一陣子才行唉地。另外,博客(http://maimieng.com)基本上閑置了下來传透,其中有多說不再支持的原因耘沼,另外 Hexo 有時也會抽風(主要是 node),而博客的主要目的在于文章朱盐,而非這些形式群嗤。所以未來會著重在簡書,有些有深度的文章會發(fā)布到掘金專欄兵琳。而類似本文的記錄型文章僅發(fā)布在此狂秘,目的主要是為了給自己提醒骇径。另外有些文章可能會隨著時間而有一些內容變更,因此從今往后的文章開頭會有文章迭代的版本信息者春。以往的文章會在后續(xù)若有更新時進行調整破衔,另外也會保證掘金和簡書文章內容的同步。其實也有意向在未來更新英文版于 Medium钱烟。

realm/SwiftLint 是 Realm 開源的一個加強檢查 Swift 語言規(guī)范的庫晰筛,滿足強迫癥的所有「幻想」。代碼風格規(guī)范在協作開發(fā)中的重要性不言而喻拴袭。不過读第,由于其官方 GitHub 為英文敘述,可能對我們有一些阻礙稻扬。那么本文就簡單通俗地描述一下 Swift Lint 的基本配置卦方。

安裝

  • 在官方文檔中羊瘩,Swift Lint 提供了四種安裝方式泰佳。
  • 若要全局安裝(即一次安裝,所有項目均可使用)建議選擇下載最新的 Release 包(.pkg)并安裝尘吗。因為經我個人測試 Homebrew 的安裝途中可能會出現問題逝她,且沒有找到好的解決方法,但大家也可嘗試直接 brew install swiftlint睬捶。
  • 全局安裝之后黔宛,可以在 Terminal 輸入 swiftlint version 測試是否安裝成功。
  • 若要針對某個項目安裝擒贸,可以在 Xcode 項目的 Podfile 中加上 pod 'SwiftLint' 并 install 即可臀晃。(推薦)
Podfile
pod 操作

使用

  • 為方便演示配置過程,新建一個 Swift-Lint-Demo 項目介劫。
Swift-Lint Demo
  • 選擇全局或 Pod 安裝 Swift Lint(為演示后續(xù)操作徽惋,本機全局安裝了 Swift Lint,也在項目中 Pod 安裝座韵,后續(xù)會指出兩者配置的不同)险绘。

  • 為 Xcode 添加運行腳本(Run Script Phase)。

找到如圖的加號并點擊
選擇 New Run Script Phase
  • 在圖中黑色編輯區(qū)域添加腳本(選擇一種即可)誉碴。
添加腳本
  • 全局安裝添加以下腳本
if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
  • 若安裝有問題宦棺,Xcode 找不到全局的 Swift Lint 就會出現「warning: SwiftLint not installed...」的警告,那么你就需要檢查是否成功的全局安裝了 Swift Lint黔帕。
全局腳本
  • Pod 安裝添加以下腳本
"${PODS_ROOT}/SwiftLint/swiftlint"
Pod 腳本
  • 添加完腳本之后代咸,重新編譯即可(Cmd + B),默認的空項目其實已經暗含了很多與 Swift Style 不符合的風格成黄,如果你也受不了這么多警告和錯誤呐芥,那就去一個個修復它吧白华。
滿屏的 Warning

配置

  • Swift Lint 在完成上述操作之后,便已經生效贩耐。但是弧腥,如果覺得默認的風格過于嚴格,或者項目組有另外的要求潮太,Swift Lint 也可以定制相應的風格管搪,或者禁用某些規(guī)則。
  • Swift Lint 的全部規(guī)則可以在:Source/SwiftLintFramework/Rules 目錄內找到铡买。

禁用/開啟規(guī)則

Code

  • 若要禁用規(guī)則更鲁,需要首先拿到某個規(guī)則的 ID。全局安裝的 Swift Lint 可以在 Terminal 輸入 swiftlint rules 查看所有可獲得的規(guī)則以及對應的 ID奇钞;未全局安裝的 Swift Lint 也可以直接在警告或錯誤提示末尾的小括號中找到其對應的 ID澡为。
  • 在代碼中即可使用以下注釋禁用或開啟相應的規(guī)則。
// 作用于該文件該行以下(除非遇到同一規(guī)則的 enable景埃,disable)
// swiftlint:disable <rule1> [<rule2> <rule3>...]
// swiftlint:enable <rule1> [<rule2> <rule3>...]

// eg:
// swiftlint:disable trailing_whitespace vertical_whitespace
// swiftlint:enable trailing_whitespace

// 作用于下一(next)媒至,這一(this),上一(previous)行
// swiftlint:disable:next force_cast
let noWarning = NSNumber() as! Int
let hasWarning = NSNumber() as! Int
let noWarning2 = NSNumber() as! Int // swiftlint:disable:this force_cast
let noWarning3 = NSNumber() as! Int
// swiftlint:disable:previous force_cast

配置文件

  • 上述的代碼中禁用/開啟規(guī)則只對其文件內有效谷徙,只能用于臨時的情況拒啰,若想針對項目進行自定義配置,就需要額外的配置文件 .swiftlint.yml完慧,直接放在項目根目錄即可谋旦。
# eg:
disabled_rules: # rule identifiers to exclude from running
  - trailing_whitespace

參考

也歡迎您關注我的微博 @萌面大道V & 簡書

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末屈尼,一起剝皮案震驚了整個濱河市册着,隨后出現的幾起案子,更是在濱河造成了極大的恐慌脾歧,老刑警劉巖甲捏,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異涨椒,居然都是意外死亡摊鸡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門蚕冬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來免猾,“玉大人,你說我怎么就攤上這事囤热×蕴幔” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵旁蔼,是天一觀的道長锨苏。 經常有香客問我疙教,道長,這世上最難降的妖魔是什么伞租? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任贞谓,我火速辦了婚禮,結果婚禮上葵诈,老公的妹妹穿的比我還像新娘裸弦。我一直安慰自己,他們只是感情好作喘,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布理疙。 她就那樣靜靜地躺著,像睡著了一般泞坦。 火紅的嫁衣襯著肌膚如雪窖贤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天贰锁,我揣著相機與錄音赃梧,去河邊找鬼。 笑死李根,一個胖子當著我的面吹牛槽奕,可吹牛的內容都是我干的。 我是一名探鬼主播房轿,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼所森!你這毒婦竟也來了囱持?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤焕济,失蹤者是張志新(化名)和其女友劉穎纷妆,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體晴弃,經...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡掩幢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了上鞠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片际邻。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芍阎,靈堂內的尸體忽然破棺而出世曾,到底是詐尸還是另有隱情,我是刑警寧澤谴咸,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布轮听,位于F島的核電站骗露,受9級特大地震影響,放射性物質發(fā)生泄漏血巍。R本人自食惡果不足惜萧锉,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望述寡。 院中可真熱鬧驹暑,春花似錦、人聲如沸辨赐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掀序。三九已至帆焕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間不恭,已是汗流浹背叶雹。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留换吧,地道東北人折晦。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像沾瓦,于是被迫代替她去往敵國和親满着。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內容