使用pre-commit來修煉codestyle

Posted by Noel on 2015-07-22

想寫出有執行效率、又簡潔易讀又潮的ruby codestyle嗎?

雖然不是人人都有大神幫忙做 code review,但慶幸 ruby 有rubocop可以用,裡面可以偵測我們的 code 是否有符合 ruby codestyle 的最適規範,而且還可以搭配pre-commit,這個 gem 來幫我們做到每次提交 commit 前先掃描我們的 code,看看是否有符合 codestyle,沒有符合的話就不給 commit,希望借此養成良好的 codestyle!

1. 首先安裝 gem

1
2
gem 'pre-commit', require: false
gem 'rubocop', require: false

2.新增檔案 rails_project/.robocup.yml

這部份我都是手動新增的,裡面定義了一些基礎的客製化規範,照抄前輩挑選的,大家如果沒特定需求也可以照抄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
AllCops:
RunRailsCops: true
Exclude:
- db/schema.rb

Metrics/LineLength:
Max: 120

Metrics/MethodLength:
Max: 20

Metrics/ClassLength:
Max: 250

Style/AsciiComments:
Enabled: false

Style/ClassAndModuleChildren:
EnforcedStyle: compact

Style/Documentation:
Enabled: false

Style/IfUnlessModifier:
Enabled: false

3.新增檔案 config/pre_commit.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
:checks_remove: []
:checks_add:
- :tabs
- :nb_space
- :whitespace
- :merge_conflict
- :debugger
- :pry
- :local
- :jshint
- :console_log
- :migration
- :rubocop

4. 執行pre-commit install

之後,每次開始提交 commit 就會在 terminal 下看到執行的結果了!然後就乖乖的養成良好的習慣慢慢改吧,雖然一開始會不習慣,但是之後會發現真的挺受用的!
如果有看不懂的提示也可以去 Google 找或是去ruby-style-guide翻閱看看,裡面都有解釋為何這樣設計或是範例。

5.補充

若想偷懶強制 commit 上去可以加上參數-n

git commit -am 'some message' -n

參考: