swiftlint swift代碼規范檢查神器


一大堆的你為什么要用swiftlint,你為什么要codereview,swiftlint到底在做什么,就不多說了,沒意義,他就是幫助你寫出規范漂亮代碼的神器!

  • 安裝

官方提供了三種安裝的方式

  1. homebrew
brew install swiftlint
  1. cocoapods
pod 'SwiftLint'
  1. pkg安裝

https://github.com/realm/SwiftLint/releases/tag/0.24.2

使用:

整合 SwiftLint 到 Xcode 體系中去從而可以使警告和錯誤顯示到 IDE 上,只需要在 Xcode 中添加一個新的“Run Script Phase”並且包含如下代碼即可:

if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

或者,腳本看起來應該像這樣如果你已經通過 CocoaPods 安裝了 SwiftLint:

"${PODS_ROOT}/SwiftLint/swiftlint"

Rules:

swiftlint整合了大約70中的代碼規范,你可以選擇性的在代碼中使用;

我們將目錄切換到工程的根目錄之下,然后敲擊如下命令:

swiftlint autocorrect

然后我們就會發現,所有的空格符Warning都消失了。這都得益於我們剛剛所進行的命令行操作,它會將已知的能夠自動修復的Error和Warning都自動修復,大大的減輕了我們的工作量。

但是又出現了一個問題,在項目的根目錄之下執行自動糾正,SwiftLint會將Pods文件夾中的Swift文件也一起糾正了,第三方的框架原則上能不動就不動,那么我們該怎么辦呢?

這個時候就需要.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文件,則會執行二級目錄下的配置;

創建一個怎樣的.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

好了,開始你的約束之路吧!



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM