冒險村02 - Begin from linter(2)
02 - Begin from linter : rubocop
延續上篇的 rails_best_practices 後,這篇來介紹 linter Rubocop 。
Rubocop 是一個可以統一規定、自訂規則及忽略規則,達到完全的客製化的 linter,把團隊的開發 coding style 都遵循在這個基石上繼續建立,可以提升專案開發效率。
如果專案沒有一個基本的規範,在工程師的協作中,想必一定常常遇到該寫單引號還是雙引號(戰)?註解該寫中文還是英文、TODO 該怎麼註釋?括號怎麼斷行、def 的寫法、程式行數限制是否該重構寫法?該如何斷行?等等的情況。
廢話不多說,直接來看要怎麼使用這個強大的 linter 吧!
註:除了使用 rubocop 官方 的規範外,也可以參考 Github、Shopify 等各家的 Ruby Style Guide 來使用,這部分就要看團隊討論決定。
gem install
1 |
|
Usage
1 |
|
Code style checker
1 |
|
透過 rubocop 執行檢查一下檔案是否符合規範!
1 |
|
從錯誤的訊息中可以看到不符合規定的程式碼,不只告訴偵測檔案的數量、哪ㄧ行、錯誤的原因,以及修改的建議。
Modify with suggest
1 |
|
Generate config
產生規則以及需要待修改的檔案
1 |
|
Setting Rule
前面提到的單引號、雙引號的使用,也是滿常需要規範的部分,不然有時候找 string 搜尋真的挺不方便,default 開啟預設為 single_quotes
但也可以直接選擇不開啟,不管三七二十一隨便都用
1 |
|
改為 doueble_quotes
的規範
1 |
|
Exclude file
可以將特定的檔案,不受到 rubocop 的偵測,將檔案排除在這個規則下的限制
1 |
|
Auto fix
如前面的例子,不想要排除原本的規則,但又想要自動產生 frozen_string_literal
在每個檔案前該怎麼做?(以前專案還不習慣的時候常常用,因為都忘記加,但後來每次新增的時候就習慣先去 copy 過來,後來也就很少用了)
1 |
|
最後,如果有些 file 真的不想修或者是以前有些人都沒好好照規範,中間才把 cop 規範起來,然後有一堆要重新修改又懶得改的話,不妨就通通先放在 todo 等人來修正吧(誤
Visual Studio Code Extension
可以透過 extension 先安裝 ruby-rubocop
外掛,在編輯檔案時就可以先知道哪行程式碼不符合規範(外掛會在編輯器程式碼中下方標示小蝌蚪),可以省去跑指令才會出現錯誤,不過都要等存檔後一陣子才會出現!
https://marketplace.visualstudio.com/items?itemName=misogi.ruby-rubocop
Require
另外如果關於 code performance checks & enforcing Rails best practices and coding conventions 也可以基於 rubocop 再加入 rubocop-performance
& rubocop-rails
,詳細就不多贅述了!
1 |
|