JSLint
,古老,不可配置,不可擴展,不可禁用許多特性的校驗JSHint
,可配置的JSLint版本JSCS
,代碼樣式檢查,只捕獲與代碼格式化相關的問題,而不是潛在的bug
或錯誤。已經與ESLint
合併。ESLint
,易於擴展,可自定義規則,可以插件形式安裝更多的規則。
一個 linting
工具是解決問題的一個很好的步驟,但是它基於一定的規則發現錯誤,具有一定的侷限性。
要採用更安全的bug
自動收集,建議使用單元測試(unit tests
),代碼評審(code reviews
)。
項目地址:
- JSLint: The JavaScript Code Quality Tool,Douglas Crockford,2002
- JSHint, a JavaScript Code Quality Tool
- JSCS: JavaScript Code Style checker
- ESLint - Pluggable JavaScript linter,Nicholas C. Zakas,2013
比較:
JSLint,JSHint,ESLint
的區別
主流的JS Lint
工具及介紹
JavaScript
已經發展蠻長時間了,對應的Lint
工具也是層出不窮,下面介紹一下比較主流的幾個Lint
工具(其實是我用過的幾個XD
)
JSLint
JSLint
是由Douglas Crockford開發的,可能是最早的JavaScript Lint
工具了吧,它的名字來源於著名的C語言工具Lint
。老道把他認爲的非Good Parts
的部分都報了warning
,而且在它的文檔中也提到了你應該欣然接受所有的JSLint
的建議。最近看了下,老道還在持續更新着這個項目,而且官網上也有着一個在線的體驗工具,可以嘗試一下。對了,如果想要使用這個工具,建議看看老道在YouTube
上關於JavaScript
編程風格的視頻,講的還是很幽默的。
JSHint
JSHint
是由Anton Kovalyov
基於JSLint
的代碼實現的開源項目,由於JSLint
時期大多數人都在受JSLint
壓迫,JSHint
相比較之下,更友好,也更容易配置,所以很快就發展了起來,也得到了衆多IDE
和編輯器的支持。但是,由於它是基於JSLint
開發的,自然原有的一些問題它也繼承下來了,比如不易擴展,不容易直接根據報錯定位到具體的規則配置等,雖然之前好像是有過相關的討論,但是現在仍然沒有什麼好的解決辦法。好在它發展的不錯,很多時候遇到的問題都可以在網上找到相關的解決方案,而且文檔也是非常不錯的。
ESLint
ESLint
是由Nicholas C. Zakas
在2013年開始開發的,它的初衷就是爲了能讓開發者能自定義自己的linting rules
,而且它提供了一套相當完善的插件機制,可以自由的擴展,動態加載配置規則,同時可以方便的根據報錯定位到具體的規則配置。而且我比較喜歡它的一點是文檔非常詳細,可能這也是靈活所必須的吧。在這裏還要提一點,ESLint
最初並不是爲了造一個重複的輪子,而是作者在實際使用中的需求沒有能得到JSHint
團隊的迴應,所以他就結合當時的JSHint和另一個代碼風格的檢查工具JSCS
寫出來了現在具備代碼風格檢查,自定義插件擴展功能的ESLint
了。
JSLint
,JSHint
和ESLint
的對比
這三個工具各有特色,我只是做一下對比,選擇的話,看個人需求就好了。
JSLint
優點
- 配置是老道已經定好的,開箱即用。
不足
- 有限的配置選項,很多規則不能禁用
- 規範嚴格,凡是不符合老道所認爲的好的風格的,都會有警告(這一項就看你是否完全認同老道了)
- 擴展性差
- 無法根據錯誤定位到對應的規則
JSHint
優點
- 有了很多參數可以配置
- 支持配置文件,方便使用
- 支持了一些常用類庫
- 支持了基本的ES6
不足
- 不支持自定義規則
- 無法根據錯誤定位到對應的規則
ESLint
優點
- 默認規則裏面包含了
JSLint
和JSHint
的規則,易於遷移(這肯定是故意的XD) - 可配置爲警告和錯誤兩個等級,或者直接禁用掉
- 支持插件擴展
- 可以自定義規則
- 可以根據錯誤定位到對應的規則
- 支持
ES6
- 唯一一個支持
JSX
的工具
不足
- 需要進行一些自定義配置(因爲太靈活了嘛,不過文檔是很詳細的)
- 慢 (它比其他兩個都要慢)