本文遷移自本人簡書帳號醬油蔥, 後續不會再在簡書更新文章, 具體緣由能夠查看簡書CEO盛讚程序員出軌率高「真實、新鮮、多元」 ,對不起打擾了git
這是個永恆的話題, 每一個程序員都有本身的見解和習慣. 可是行業裏總會有些公認的規則, 公司裏也須要一個統一的標準. 因此這個話題直接略過, 重點談如何用工具保證一個團隊輸出內容風格的一致性.程序員
簡書上已有很多相關的內容, 例如葉孤城的這篇文章. 目前, 本人使用的也是Square公司開源的"Clang-Format"進行代碼規範. 一直以來用的都挺好.github
可是自從Swift出世後, 問題就來了. Square公司的spacecommander項目不支持Swift文件的處理. 並且Square公司暫時也沒有開源關於Swift的Format工具. 因此只能另尋它法.swift
還好, 這邊有一個牛人開發了相應的Swift格式化工具SwiftFormat. 並且一樣流暢的命令行操做, 可讓咱們的工做變得輕鬆.bash
支持Homebrew安裝app
brew update brew install swiftformat工具
也支持項目編譯安裝. 這個比較麻煩, 大夥須要的話就直接去github上看README文檔吧ui
因爲工具開發者本人實現了XCode 8的Extension, 因此但願使用菜單項或者Hot Key的朋友能夠嘗試一下. 文檔已經描述的很詳細了.spa
本人用的是直接Hooks到倉庫git上, 步驟以下:命令行
cd *** //***爲項目路徑 vi .git/hooks/pre-commit
git status --porcelain | grep -e '^[AM]\(.*\).swift$' | cut -c 3- | while read line; do
swiftformat ${line};
git add $line;
done
複製代碼
若是有童鞋沒有將.gitignore
文件對Pods
或Carthage
目錄進行過濾*(雖然通常人都不會這麼作ORZ)*, 那麼能夠考慮換成如下內容
git status --porcelain | grep -v 'Pods/' | grep -v 'Carthage/' | grep -e '^[AM]\(.*\).swift$' | cut -c 3- | while read line; do
swiftformat ${line};
git add $line;
done
複製代碼
#!/bin/bash
git status --porcelain | grep -e '^[AM]\(.*\).swift$' | cut -c 3- | while read line; do
swiftformat ${line};
git add $line;
done
複製代碼
chmod +x .git/hooks/pre-commit
很簡單, 首先先使用Square公司的spacecommander項目工具腳本setup-repo.sh
對項目進行初始化. 這個腳本會自動幫你在項目的.git/hooks
目錄下建立pre-commit
文件並填入腳本內容.
而後, 在第二行插入如下內容(就是上面說起的SwiftFormat腳本):
git status --porcelain | grep -e '^[AM]\(.*\).swift$' | cut -c 3- | while read line; do
swiftformat ${line};
git add $line;
done
複製代碼
考慮到咱們團隊可能須要保留未使用的參數, 因此能夠修改成以上內容爲:
git status --porcelain | grep -e '^[AM]\(.*\).swift$' | cut -c 3- | while read line; do
swiftformat --disable unusedArguments ${line};
git add $line;
done
複製代碼
保存退出. 今後你就能滿地圖的亂寫OC/Swift代碼了. 媽媽不再用擔憂個人格式問題了!
目前還真沒有比較好的辦法. 正如spacecommander項目說起的: You may wish to fork [ Space Commander] to apply your team's particular set of formatting rules (more details below), or clone to enjoy Square's flavor of Objective-C formatting.
若是大家團隊但願使用本身的規範, 基本只能考慮fork項目, 而後在本地進行修改生成新的pods, 再作導出.
而SwiftFormat項目則提供了命令行參數的方式進行部分風格設置項:
目前SwiftFormat的版本爲0.24.6
, 但願能在將來的版本中看到更多的改進內容.
以上內容, 若有問題或錯誤, 能夠隨時與本人聯繫. 感謝閱讀!