onkcop 0.51.0.1 → 0.52.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98ebeeaf9fdd8e7aec88b437c111120bc0b2b3535dce8148de2cb678f4aea372
4
- data.tar.gz: d3ff27055afeacdf48eeafb9f7ba44ca9232f772b03f8a6a35293d34d893c881
3
+ metadata.gz: dcacadb1be034be9f03284c424f2012e367df69582e230119d4ad03b403a5d2b
4
+ data.tar.gz: b87737a2f5be1d8152459585fb140a151005ec9624c5f49bc812336e39035b92
5
5
  SHA512:
6
- metadata.gz: d0f9d3c5ebf2f5bc16ae9f281418fa357b4a5a8e99e30d2061564d7c68b7adcb704934e3fd4b2ce8ce9aeec5ccab7950c843eb0db399eecb05fb596aa9cce915
7
- data.tar.gz: dd3dda89165695b72873c4cc1892ec6752f6b20aaa5a434b59b4b78e5199056328304edf9739b2a8b31c0b0e8564d575a0157c3f3a3ed03467a14149a0e4e861
6
+ metadata.gz: e292b2682ff77e8d4c07f032542fbd5f1356eda858c3e20cfd41ffd9ed127ade97b0d7f4d41e3dad42937a4041c3a0d8776c3cb40d32847cc3606b3ff83f6283
7
+ data.tar.gz: d24900443c0d954fe777919d84d86dc742728ebb1b572c443a48d0095843266c6faf397fb835d0cafaff751086f4739695f4441b85a8aea1ffb79c6511b96447
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /.rspec_status
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ cache: bundler
3
+ rvm:
4
+ - ruby-head
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # onkcop
2
2
 
3
- ## v0.51.0.1 (2017-10-20)
3
+ ## v0.52.0.0 (2017-12-20)
4
+
5
+ * Update `rubocop` v0.52.0 and `rubocop-rspec` v1.21.0
6
+ * Remove `DisplayCopNames` configuration
7
+ * Enable new `Style/ClassStructure` cop
8
+ * Disalbe `Style/FormatStringToken` cop
9
+ * Change `Layout/SpaceBeforeBlockBraces` cop's empty braces style to `space`
10
+ * Change `Style/RescueStandardError` cop to implicit style
11
+ * Change `RSpec/MultipleExpectations` cop to `AggregateFailuresByDefault` style
12
+ * Exclude `bin/setup`, `bin/update` from `Style/MixinUsage` cop
13
+
14
+
15
+ ## v0.51.0.1 (2017-11-11)
4
16
 
5
17
  * Update `rubocop-rspec` to v1.20.0
6
18
  * Disable new `RSpec/ContextWording` cop
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # onkcop
2
2
  [![Gem Version](https://badge.fury.io/rb/onkcop.svg)](https://badge.fury.io/rb/onkcop)
3
+ [![Build Status](https://travis-ci.org/onk/onkcop.svg?branch=master)](https://travis-ci.org/onk/onkcop)
3
4
 
4
5
  OnkCop is a RuboCop configration gem.
5
6
 
data/Rakefile CHANGED
@@ -1 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ RSpec::Core::RakeTask.new(:rspec)
4
+ task :default => [:rspec]
data/config/rspec.yml CHANGED
@@ -32,9 +32,14 @@ RSpec/ImplicitExpect:
32
32
  RSpec/InstanceVariable:
33
33
  Enabled: false
34
34
 
35
- # 強く 1 example 1 assertion の立場は取らないが、多すぎてもツラいので。
35
+ # spec_helper meta[:aggregate_failures] を設定することで
36
+ # aggregate_failures が全ての spec で有効になる。
37
+ #
38
+ # ほぼ MultipleExpectations についてはチェックされなくなる設定なので注意。
39
+ # パフォーマンスの問題さえ無ければ 1 example 1 assertion にしておく方が
40
+ # 読みやすいテストになりやすいので、そこはレビューで担保していく必要がある。
36
41
  RSpec/MultipleExpectations:
37
- Max: 3
42
+ AggregateFailuresByDefault: true
38
43
 
39
44
  # 変に名前つけて呼ぶ方が分かりづらい。
40
45
  # テスト対象メソッドを呼ぶだけの subject 以外を書かないようにする方が効く。
data/config/rubocop.yml CHANGED
@@ -4,10 +4,17 @@ AllCops:
4
4
  - "node_modules/**/*" # rubocop config/default.yml
5
5
  - "vendor/**/*" # rubocop config/default.yml
6
6
  - "db/schema.rb"
7
- DisplayCopNames: true
8
7
 
9
8
  #################### Layout ################################
10
9
 
10
+ # メソッドをグループ分けして書き順を揃えておくと読みやすくなる。
11
+ # 多少のツラミはあるかもしれない。
12
+ # TODO: Categories を調整することで
13
+ # https://github.com/pocke/rubocop-rails-order_model_declarative_methods
14
+ # を再現できそう。
15
+ Layout/ClassStructure:
16
+ Enabled: true
17
+
11
18
  # メソッドチェーンの改行は末尾に . を入れる
12
19
  # REPL に貼り付けた際の暴発を防ぐため
13
20
  Layout/DotPosition:
@@ -37,6 +44,130 @@ Layout/IndentationConsistency:
37
44
  Layout/MultilineMethodCallIndentation:
38
45
  EnforcedStyle: indented_relative_to_receiver
39
46
 
47
+ # デフォルト値がおかしい。
48
+ # v0.52.1 で解消。 see: pull/5263
49
+ Layout/SpaceBeforeBlockBraces:
50
+ EnforcedStyleForEmptyBraces: space
51
+
52
+ #################### Lint ##################################
53
+
54
+ # spec 内では
55
+ # expect { subject }.to change { foo }
56
+ # という書き方をよく行うので () を省略したい。
57
+ # { foo } は明らかに change に紐付く。
58
+ Lint/AmbiguousBlockAssociation:
59
+ Exclude:
60
+ - "spec/**/*"
61
+
62
+ # Style/EmptyCaseCondition と同じく網羅の表現力が empty when を認めた方が高いし、
63
+ # 頻出する対象を最初の when で撥ねるのはパフォーマンス向上で頻出する。
64
+ # また、
65
+ # case foo
66
+ # when 42
67
+ # # nop
68
+ # when 1..100
69
+ # ...
70
+ # end
71
+ # と、下の when がキャッチしてしまう場合等に対応していない。
72
+ # See. http://tech.sideci.com/entry/2016/11/01/105900
73
+ Lint/EmptyWhen:
74
+ Enabled: false
75
+
76
+ # RuntimeError は「特定の Error を定義できない場合」なので、
77
+ # 定義できるエラーは RuntimeError ではなく StandardError を継承する。
78
+ Lint/InheritException:
79
+ EnforcedStyle: standard_error
80
+
81
+ # * 同名のメソッドがある場合にローカル変数に `_` を付ける
82
+ # * 一時変数として `_` を付ける
83
+ # というテクニックは頻出する
84
+ Lint/UnderscorePrefixedVariableName:
85
+ Enabled: false
86
+
87
+ # 子クラスで実装させるつもりで中身が
88
+ # raise NotImplementedError
89
+ # のみのメソッドが引っかかるので。
90
+ # (raise せずに中身が空だと IgnoreEmptyMethods でセーフ)
91
+ Lint/UnusedMethodArgument:
92
+ Enabled: false
93
+
94
+
95
+ #################### Metrics ###############################
96
+
97
+ # 30 まではギリギリ許せる範囲だったけど
98
+ # リリースごとに 3 ずつぐらい下げていきます。20 まで下げたい。
99
+ Metrics/AbcSize:
100
+ Max: 24
101
+
102
+ # Gemfile, Guardfile は DSL 的で基本的に複雑にはならないので除外
103
+ # rake, rspec, environments, routes は巨大な block 不可避なので除外
104
+ # TODO: ExcludedMethods の精査
105
+ Metrics/BlockLength:
106
+ Exclude:
107
+ - "Rakefile"
108
+ - "**/*.rake"
109
+ - "spec/**/*.rb"
110
+ - "Gemfile"
111
+ - "Guardfile"
112
+ - "config/environments/*.rb"
113
+ - "config/routes.rb"
114
+ - "config/routes/**/*.rb"
115
+ - "*.gemspec"
116
+
117
+ # 6 は強すぎるので緩める
118
+ Metrics/CyclomaticComplexity:
119
+ Max: 10
120
+
121
+ # * 警告 120文字
122
+ # * 禁止 160文字
123
+ # のイメージ
124
+ Metrics/LineLength:
125
+ Max: 160
126
+ Exclude:
127
+ - "db/migrate/*.rb"
128
+
129
+ # 20 行超えるのは migration ファイル以外滅多に無い
130
+ Metrics/MethodLength:
131
+ Max: 20
132
+ Exclude:
133
+ - "db/migrate/*.rb"
134
+
135
+ # 分岐の数。ガード句を多用しているとデフォルト 7 だと厳しい
136
+ Metrics/PerceivedComplexity:
137
+ Max: 8
138
+
139
+
140
+ #################### Naming ################################
141
+
142
+ # has_ から始まるメソッドは許可する
143
+ Naming/PredicateName:
144
+ NamePrefixBlacklist:
145
+ - "is_"
146
+ - "have_"
147
+ NamePrefix:
148
+ - "is_"
149
+ - "have_"
150
+
151
+
152
+ #################### Performance ###########################
153
+
154
+ # downcase or upcase しての比較はイディオムの域なので、多少の
155
+ # パフォーマンスの違いがあろうが casecmp に変える意義を感じない
156
+ Performance/Casecmp:
157
+ Enabled: false
158
+
159
+ # 2.4 以降では each_key でも特にパフォーマンスに差が無いので
160
+ # 読みやすさはほとんど変わらないし、書きやすさを取る。
161
+ Performance/HashEachMethods:
162
+ Enabled: false
163
+
164
+
165
+ #################### Security ##############################
166
+
167
+ # 毎回 YAML.safe_load(yaml_str, [Date, Time]) するのは面倒で。。
168
+ Security/YAMLLoad:
169
+ Enabled: false
170
+
40
171
 
41
172
  #################### Style #################################
42
173
 
@@ -118,6 +249,12 @@ Style/EmptyMethod:
118
249
  Style/FormatString:
119
250
  EnforcedStyle: percent
120
251
 
252
+ # strftime("%Y%m%d") の %d で引っかかる false positive がある。
253
+ # また、url escape でも引っかかるらしい。
254
+ # see: pull/5230, issues/5242
255
+ Style/FormatStringToken:
256
+ Enabled: false
257
+
121
258
  # まだ対応するには早い
122
259
  Style/FrozenStringLiteralComment:
123
260
  Enabled: false
@@ -152,6 +289,15 @@ Style/Lambda:
152
289
  Style/MethodCalledOnDoEndBlock:
153
290
  Enabled: true
154
291
 
292
+ # この 2 つは単発で動かすのが分かっているので Object を汚染しても問題ない。
293
+ # spec/dummy は Rails Engine を開発するときに絶対に引っかかるので入れておく。
294
+ Style/MixinUsage:
295
+ Exclude:
296
+ - "bin/setup"
297
+ - "bin/update"
298
+ - "spec/dummy/bin/setup"
299
+ - "spec/dummy/bin/update"
300
+
155
301
  # 1_000_000 と区切り文字が 2 個以上必要になる場合のみ _ 区切りを必須にする
156
302
  # 10_000_00 は許可しない。(これは例えば 10000 ドルをセント単位にする時に便利だが
157
303
  # 頻出しないので foolproof に振る
@@ -186,6 +332,10 @@ Style/RedundantReturn:
186
332
  Style/RedundantSelf:
187
333
  Enabled: false
188
334
 
335
+ # 無指定だと StandardError を rescue するのは常識の範疇なので。
336
+ Style/RescueStandardError:
337
+ EnforcedStyle: implicit
338
+
189
339
  # user&.admin? が、[nil, true, false] の 3 値を返すことに一瞬で気づけず
190
340
  # boolean を返すっぽく見えてしまうので無効に。
191
341
  # user && user.admin? なら短絡評価で nil が返ってくるのが一目で分かるので。
@@ -245,16 +395,16 @@ Style/TrailingCommaInArguments:
245
395
  Style/TrailingCommaInLiteral:
246
396
  EnforcedStyleForMultiline: comma
247
397
 
248
- # 0 <= foo && foo < 5 のように数直線上に並べるのは
249
- # コードを読みやすくするテクニックなので equality_operators_only に。
250
- Style/YodaCondition:
251
- EnforcedStyle: equality_operators_only
252
-
253
398
  # %w() と %i() が見分けづらいので Style/SymbolArray と合わせて無効に。
254
399
  # 書き手に委ねるという意味で、Enabled: false にしています。使っても良い。
255
400
  Style/WordArray:
256
401
  Enabled: false
257
402
 
403
+ # 0 <= foo && foo < 5 のように数直線上に並べるのは
404
+ # コードを読みやすくするテクニックなので equality_operators_only に。
405
+ Style/YodaCondition:
406
+ EnforcedStyle: equality_operators_only
407
+
258
408
  # 条件式で arr.size > 0 が使われた時に
259
409
  # if !arr.empty?
260
410
  # else
@@ -263,125 +413,3 @@ Style/WordArray:
263
413
  # 中身を入れ替えて否定外しても良いんだけど、どちらが例外的な処理なのかが分かりづらくなる。
264
414
  Style/ZeroLengthPredicate:
265
415
  Enabled: false
266
-
267
- #################### Naming ################################
268
-
269
- # has_ から始まるメソッドは許可する
270
- Naming/PredicateName:
271
- NamePrefixBlacklist:
272
- - "is_"
273
- - "have_"
274
- NamePrefix:
275
- - "is_"
276
- - "have_"
277
-
278
- #################### Lint ##################################
279
-
280
- # spec 内では
281
- # expect { subject }.to change { foo }
282
- # という書き方をよく行うので () を省略したい。
283
- # { foo } は明らかに change に紐付く。
284
- Lint/AmbiguousBlockAssociation:
285
- Exclude:
286
- - "spec/**/*"
287
-
288
- # Style/EmptyCaseCondition と同じく網羅の表現力が empty when を認めた方が高いし、
289
- # 頻出する対象を最初の when で撥ねるのはパフォーマンス向上で頻出する。
290
- # また、
291
- # case foo
292
- # when 42
293
- # # nop
294
- # when 1..100
295
- # ...
296
- # end
297
- # と、下の when がキャッチしてしまう場合等に対応していない。
298
- # See. http://tech.sideci.com/entry/2016/11/01/105900
299
- Lint/EmptyWhen:
300
- Enabled: false
301
-
302
- # RuntimeError は「特定の Error を定義できない場合」なので、
303
- # 定義できるエラーは RuntimeError ではなく StandardError を継承する。
304
- Lint/InheritException:
305
- EnforcedStyle: standard_error
306
-
307
- # 無指定だと StandardError を rescue するのは常識の範疇なので。
308
- # https://github.com/bbatsov/rubocop/issues/2943#issuecomment-330498533
309
- # rescue 後に何をするかは Lint/HandleExceptions でチェックするので
310
- # ココで想起させる必要は無さそう。
311
- Lint/RescueWithoutErrorClass:
312
- Enabled: false
313
-
314
- # * 同名のメソッドがある場合にローカル変数に `_` を付ける
315
- # * 一時変数として `_` を付ける
316
- # というテクニックは頻出する
317
- Lint/UnderscorePrefixedVariableName:
318
- Enabled: false
319
-
320
- # 子クラスで実装させるつもりで中身が
321
- # raise NotImplementedError
322
- # のみのメソッドが引っかかるので。
323
- # (raise せずに中身が空だと IgnoreEmptyMethods でセーフ)
324
- Lint/UnusedMethodArgument:
325
- Enabled: false
326
-
327
- #################### Metrics ###############################
328
-
329
- # 30 まではギリギリ許せる範囲だったけど
330
- # リリースごとに 3 ずつぐらい下げていきます。20 まで下げたい。
331
- Metrics/AbcSize:
332
- Max: 24
333
-
334
- # Gemfile, Guardfile は DSL 的で基本的に複雑にはならないので除外
335
- # rake, rspec, environments, routes は巨大な block 不可避なので除外
336
- # TODO: ExcludedMethods の精査
337
- Metrics/BlockLength:
338
- Exclude:
339
- - "Rakefile"
340
- - "**/*.rake"
341
- - "spec/**/*.rb"
342
- - "Gemfile"
343
- - "Guardfile"
344
- - "config/environments/*.rb"
345
- - "config/routes.rb"
346
- - "config/routes/**/*.rb"
347
- - "*.gemspec"
348
-
349
- # 6 は強すぎるので緩める
350
- Metrics/CyclomaticComplexity:
351
- Max: 10
352
-
353
- # * 警告 120文字
354
- # * 禁止 160文字
355
- # のイメージ
356
- Metrics/LineLength:
357
- Max: 160
358
- Exclude:
359
- - "db/migrate/*.rb"
360
-
361
- # 20 行超えるのは migration ファイル以外滅多に無い
362
- Metrics/MethodLength:
363
- Max: 20
364
- Exclude:
365
- - "db/migrate/*.rb"
366
-
367
- # 分岐の数。ガード句を多用しているとデフォルト 7 だと厳しい
368
- Metrics/PerceivedComplexity:
369
- Max: 8
370
-
371
- #################### Performance ###########################
372
-
373
- # downcase or upcase しての比較はイディオムの域なので、多少の
374
- # パフォーマンスの違いがあろうが casecmp に変える意義を感じない
375
- Performance/Casecmp:
376
- Enabled: false
377
-
378
- # 2.4 以降では each_key でも特にパフォーマンスに差が無いので
379
- # 読みやすさはほとんど変わらないし、書きやすさを取る。
380
- Performance/HashEachMethods:
381
- Enabled: false
382
-
383
- #################### Security ##############################
384
-
385
- # 毎回 YAML.safe_load(yaml_str, [Date, Time]) するのは面倒で。。
386
- Security/YAMLLoad:
387
- Enabled: false
@@ -1,3 +1,3 @@
1
1
  module Onkcop
2
- VERSION = "0.51.0.1"
2
+ VERSION = "0.52.0.0"
3
3
  end
data/onkcop.gemspec CHANGED
@@ -19,8 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "rubocop", "~> 0.51.0"
23
- spec.add_dependency "rubocop-rspec", ">= 1.20.0"
22
+ spec.add_dependency "rubocop", "~> 0.52.0"
23
+ spec.add_dependency "rubocop-rspec", ">= 1.21.0"
24
24
  spec.add_development_dependency "bundler"
25
25
  spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rspec"
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onkcop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.51.0.1
4
+ version: 0.52.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takafumi ONAKA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-11 00:00:00.000000000 Z
11
+ date: 2017-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.51.0
19
+ version: 0.52.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.51.0
26
+ version: 0.52.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.20.0
33
+ version: 1.21.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.20.0
40
+ version: 1.21.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: OnkCop is a RuboCop configration gem.
70
84
  email:
71
85
  - takafumi.onaka@gmail.com
@@ -75,7 +89,9 @@ extensions: []
75
89
  extra_rdoc_files: []
76
90
  files:
77
91
  - ".gitignore"
92
+ - ".rspec"
78
93
  - ".rubocop.yml"
94
+ - ".travis.yml"
79
95
  - CHANGELOG.md
80
96
  - Gemfile
81
97
  - LICENSE.txt
@@ -112,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
128
  version: '0'
113
129
  requirements: []
114
130
  rubyforge_project:
115
- rubygems_version: 2.6.14
131
+ rubygems_version: 2.7.3
116
132
  signing_key:
117
133
  specification_version: 4
118
134
  summary: OnkCop is a RuboCop configration gem.