# 靜態檢查器

## **目標**

* 統一 code style
* 解決因手動進行檢查造成的耗時以及低效率

## **什麼是 SwiftLint ??**

[SwiftLint](https://github.com/realm/SwiftLint)是[realm](https://realm.io/)公司出的一款CodingStyle靜態檢查器，選用此工具原因是目前熱門獨大且唯一持續更新。

### 安裝方法

* 第一步：在終端機輸入下方指令

  專案初始化pod (請事先電腦安裝過 [CocoaPods](https://guides.cocoapods.org/using/getting-started.html))

```
pod init
```

* 第二步：設定PodFile，開啟專案內的 PodFile 檔案加入下面程式碼

```
pod 'SwiftLint'
```

* 第三步：在終端機輸入下方指令，安裝三方

```
pod install
```

* 第四步：設定Build Phases
  * 開啟專案內設定Build Phases > 按 “＋” > RunScript > 輸入下方腳本

```
"${PODS_ROOT}/SwiftLint/swiftlint" lint --config "${SRCROOT}/swiftlint.yml"
```

* 第五步：放入規則設定檔
  * 放在專案的根目錄，叫做"swiftlint.yml"

{% file src="<https://122733512-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8xIXKbNapLDOH4MMyQ%2F-MOV-FTP_1Cjjd43C5_r%2F-MOV-MLEN4YW8da74CaR%2Fswiftlint.yml?alt=media&token=be3f8d5c-d3c3-448c-b0cf-0a1bbc53eedb>" %}

### **執行方法**

直接按下編譯即可！！會直接顯示成黃色警告和紅色錯誤！！

![直接編譯報錯](https://122733512-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8xIXKbNapLDOH4MMyQ%2F-M9tCOZCOM6p2pj9Mufv%2F-M9tMAAGOZ5RigOE-mkz%2Fimage-1558517686336.32.10.png?alt=media\&token=1fa78bb4-b441-4e75-bb0a-cf25b68dc4c0)

### **禁用規則**

```
// swiftlint:disable colon
let noWarning :String = "" // 我被跳過了
// swiftlint:enable colon
let hasWarning :String = "" // 我被禁止了
```

### **規則清單**

[SwiftLint/Rules.md連結](https://realm.github.io/SwiftLint/rule-directory.html)

### **參考網站**

* [SwiftLint Git](https://github.com/realm/SwiftLint)
* [SwiftLint，规范代码，成为完美的偏执患者](https://www.jianshu.com/p/40aa8695503f)
* [SwiftLint使用](https://www.zybuluo.com/Sweetfish/note/1028669)

## **其他工具**

* tailor：另一套靜態檢查器([Git連結](https://github.com/sleekbyte/tailor))

  但有個嚴重問題，目前只支援到Swift3.0，無人更新...
* SwiftFormat：強制格式化的工具([Git連結](https://github.com/nicklockwood/SwiftFormat))

  尚未深入研究，但能設定的條件不夠多。
