一大堆的你爲何要用swiftlint,你爲何要codereview,swiftlint到底在作什麼,就很少說了,沒意義,他就是幫助你寫出規範漂亮代碼的神器!git
官方提供了三種安裝的方式github
brew install swiftlint
pod 'SwiftLint'
https://github.com/realm/SwiftLint/releases/tag/0.24.2swift
整合 SwiftLint 到 Xcode 體系中去從而可使警告和錯誤顯示到 IDE 上,只須要在 Xcode 中添加一個新的「Run Script Phase」而且包含以下代碼便可:bash
if which swiftlint >/dev/null; then swiftlint else echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint" fi
或者,腳本看起來應該像這樣若是你已經經過 CocoaPods 安裝了 SwiftLint:app
"${PODS_ROOT}/SwiftLint/swiftlint"
swiftlint整合了大約70中的代碼規範,你能夠選擇性的在代碼中使用;框架
咱們將目錄切換到工程的根目錄之下,而後敲擊以下命令:編輯器
swiftlint autocorrect
而後咱們就會發現,全部的空格符Warning都消失了。這都得益於咱們剛剛所進行的命令行操做,它會將已知的可以自動修復的Error和Warning都自動修復,大大的減輕了咱們的工做量。ide
可是又出現了一個問題,在項目的根目錄之下執行自動糾正,SwiftLint會將Pods文件夾中的Swift文件也一塊兒糾正了,第三方的框架原則上能不動就不動,那麼咱們該怎麼辦呢?spa
這個時候就須要.swiftlint.yml文件了。那麼這是一個什麼文件呢?在使用SwiftLint的時候,不少時候咱們會碰到一些自定義的規則需求,這個時候就須要.swiftlint.yml來解決問題了。命令行
.swiftlint.yml
所謂的.swiftlint.yml其實就是SwiftLint的一個配置文件,咱們能夠經過這個配置文件來修改約束的規則,以此達到自定義的效果。
建立.swiftlint.yml必須嚴格按照命名建立,Mac能夠直接使用文本編輯器建立,Mac默認不容許建立以.開頭的文件名,因此建議你們使用命令行建立文件,而後編輯便可:
touch .swiftlint.yml
建立好以後是不可見的,咱們須要設置隱藏文件的可見:
顯示:defaults write com.apple.finder AppleShowAllFiles -bool true 隱藏:defaults write com.apple.finder AppleShowAllFiles -bool false
設置好以後重啓finder便可看到咱們建立的.swiftlint.yml 文件;
使用的時候,將.swiftlint.yml 放在須要執行swiftlint工程的根目錄中,整個工程會執行.swiftlint.yml的配置;若是在二級目錄一樣配置了.swiftlint.yml文件,則會執行二級目錄下的配置;
這個要根據我的的習慣,須要執行哪些約束以及不執行哪些約束,在哪些文件執行哪些文件不執行,下面是個人一個配置,供參考:
included: - JCFC_Loan_Swift excluded: - Pods cyclomatic_complexity: warning: 20 error: 30 disabled_rules: - trailing_newline - opening_brace - empty_count - comma - colon - force_cast #強制轉換 - type_name # - trailing_semicolon # - force_try # - function_body_length # - nesting - variable_name # - operator_whitespace # - control_statement # - legacy_constant - line_length # - return_arrow_whitespace # - trailing_whitespace # - closing_brace # - statement_position # - type_body_length # - todo # - legacy_constructor # - valid_docs # - missing_docs # - file_length # - leading_whitespace identifier_name: excluded: id
咱們也能夠在類內部執行註釋來屏蔽某一條約束等,具體操做格式以下
// swiftlint:disable colon let noWarning :String = "" // No warning about colons immediately after variable names! // swiftlint:enable colon let hasWarning :String = "" // Warning generated about colons immediately after variable names
好了,開始你的約束之路吧!