jpmobile 5.2.5 → 6.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.onkcop-config.yml +396 -0
  4. data/.rubocop.yml +71 -10
  5. data/.ruby-version +1 -1
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +157 -129
  8. data/README.md +2 -2
  9. data/jpmobile.gemspec +5 -1
  10. data/lib/jpmobile.rb +1 -0
  11. data/lib/jpmobile/configuration.rb +7 -3
  12. data/lib/jpmobile/docomo_guid.rb +2 -2
  13. data/lib/jpmobile/email.rb +2 -4
  14. data/lib/jpmobile/emoticon.rb +16 -23
  15. data/lib/jpmobile/filter.rb +9 -4
  16. data/lib/jpmobile/hook_action_view.rb +4 -10
  17. data/lib/jpmobile/hook_test_request.rb +1 -1
  18. data/lib/jpmobile/mail.rb +7 -7
  19. data/lib/jpmobile/mailer.rb +1 -1
  20. data/lib/jpmobile/mobile/abstract_mobile.rb +1 -1
  21. data/lib/jpmobile/mobile/android.rb +1 -1
  22. data/lib/jpmobile/mobile/au.rb +2 -2
  23. data/lib/jpmobile/mobile/black_berry.rb +1 -1
  24. data/lib/jpmobile/mobile/ddipocket.rb +1 -1
  25. data/lib/jpmobile/mobile/docomo.rb +6 -8
  26. data/lib/jpmobile/mobile/emobile.rb +2 -2
  27. data/lib/jpmobile/mobile/ipad.rb +1 -1
  28. data/lib/jpmobile/mobile/iphone.rb +1 -1
  29. data/lib/jpmobile/mobile/softbank.rb +2 -2
  30. data/lib/jpmobile/mobile/vodafone.rb +2 -2
  31. data/lib/jpmobile/mobile/willcom.rb +2 -2
  32. data/lib/jpmobile/mobile/windows_phone.rb +1 -1
  33. data/lib/jpmobile/rack/params_filter.rb +5 -4
  34. data/lib/jpmobile/rails.rb +9 -41
  35. data/lib/jpmobile/resolver.rb +3 -36
  36. data/lib/jpmobile/session/active_record_store.rb +1 -1
  37. data/lib/jpmobile/session/mem_cache_store.rb +1 -1
  38. data/lib/jpmobile/trans_sid.rb +1 -1
  39. data/lib/jpmobile/util.rb +4 -5
  40. data/lib/jpmobile/version.rb +1 -1
  41. data/lib/jpmobile/view_selector.rb +26 -0
  42. data/lib/tasks/jpmobile_tasks.rake +4 -4
  43. data/spec/rack/jpmobile/emoticon_spec.rb +48 -48
  44. data/spec/rack_helper.rb +1 -5
  45. data/spec/unit/email_spec.rb +1 -1
  46. data/spec/unit/receive_mail_spec.rb +10 -10
  47. data/spec/unit/util_spec.rb +4 -4
  48. data/test/rails/overrides/Gemfile.jpmobile +1 -1
  49. data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
  50. data/test/rails/overrides/app/mailboxes/application_mailbox.rb +3 -0
  51. data/test/rails/overrides/app/mailboxes/mobile_mailer_mailbox.rb +5 -0
  52. data/test/rails/overrides/app/mailers/decorated_mailer.rb +1 -1
  53. data/test/rails/overrides/db/migrate/20201111033056_create_active_storage_tables.active_storage.rb +36 -0
  54. data/test/rails/overrides/db/migrate/20201111033057_create_action_mailbox_tables.action_mailbox.rb +14 -0
  55. data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +2 -2
  56. data/test/rails/overrides/spec/controllers/hankaku_filter_controller_spec.rb +1 -1
  57. data/test/rails/overrides/spec/controllers/template_path_spec.rb +2 -0
  58. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-attached.eml +0 -0
  59. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-decomail.eml +0 -0
  60. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji.eml +0 -0
  61. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji2.eml +0 -0
  62. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/au-emoji5.eml +0 -0
  63. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/bounced-jp.eml +0 -0
  64. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-emoji.eml +0 -0
  65. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-gmail-sjis.eml +0 -0
  66. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/docomo-jis.eml +0 -0
  67. data/{spec/unit/email-fixtures → test/rails/overrides/spec/fixtures/files/mobile_mailer}/iphone-message.eml +0 -0
  68. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/no-from.eml +0 -0
  69. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/non-jp.eml +0 -0
  70. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/photo.jpg +0 -0
  71. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-blank.eml +0 -0
  72. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji-utf8.eml +0 -0
  73. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-emoji.eml +0 -0
  74. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-sjis.eml +0 -0
  75. data/test/rails/overrides/spec/fixtures/{mobile_mailer → files/mobile_mailer}/softbank-gmail-utf8.eml +0 -0
  76. data/test/rails/overrides/spec/mailboxes/mobile_mailer_mailbox_spec.rb +265 -0
  77. data/test/rails/overrides/spec/mailers/mobile_mailer_spec.rb +0 -305
  78. data/test/rails/overrides/spec/requests/emobile_spec.rb +2 -2
  79. data/test/rails/overrides/spec/requests/trans_sid_spec.rb +9 -9
  80. metadata +82 -43
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 585b9e071125feef265a6766b2acd3c5712a62a766a021e779509932be267ba6
4
- data.tar.gz: f8537c94f81cb7204073804469cac44f68dd679712dbe3e5834e3d9332d6125e
3
+ metadata.gz: 74fa7416fa00515953a733795e73ec1e6588661679d75a1976679c1d504ffcf4
4
+ data.tar.gz: c5bbfb870db11b2040e7c6071224f15814666205af7d6ab7753d6420f0f1857c
5
5
  SHA512:
6
- metadata.gz: cb2ba84963e1b447fdb422b023ae283424ebff780e454b287ee0c7795c8d63dd9062b1b64b74bbd4c8b67d1c69b7a484622c51b1a7538f4d77966cdcff2a1a58
7
- data.tar.gz: 105df200c744ac957dad1be0bf74ad44ff62699569b0d9027bb9d32b9e1aa46dc71cf7747909a39c7b4b9bebef3e93095f103450d23f6d53f26c374710dfc5c1
6
+ metadata.gz: 1c02221b79367bacdd03b7a9c996a1c13b924f075425e7cefdf92673a7accf790c9ec5b957892f2cbaad040ca5c9feeef19e7f6aa90b6d0ae3a175bb4a1adaeb
7
+ data.tar.gz: 5ac93c588bc456034de7e1a0dc2d59775a4161ffd9d65046e1e52582d219f9cd17a2ca76b666adcba5243ef6da66379e85aaa00ceac4ad4921a63c991e4d834b
data/.circleci/config.yml CHANGED
@@ -3,7 +3,7 @@ jobs:
3
3
  test-job:
4
4
  working_directory: ~/jpmobile
5
5
  docker:
6
- - image: circleci/ruby:2.5-node-browsers
6
+ - image: circleci/ruby:2.7-node-browsers
7
7
  environment:
8
8
  BUNDLE_JOBS: 3
9
9
  BUNDLE_RETRY: 3
@@ -0,0 +1,396 @@
1
+ # 自動生成されるものはチェック対象から除外する
2
+ AllCops:
3
+ Exclude:
4
+ - "node_modules/**/*" # rubocop config/default.yml
5
+ - "vendor/**/*" # rubocop config/default.yml
6
+ - "db/schema.rb"
7
+
8
+ #################### Layout ################################
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
+
18
+ # メソッドチェーンの改行は末尾に . を入れる
19
+ # * REPL に貼り付けた際の暴発を防ぐため
20
+ # * 途中にコメントをはさむことができて実用上圧倒的に便利
21
+ Layout/DotPosition:
22
+ EnforcedStyle: trailing
23
+
24
+ # 桁揃えが綺麗にならないことが多いので migration は除外
25
+ Layout/ExtraSpacing:
26
+ Exclude:
27
+ - "db/migrate/*.rb"
28
+
29
+ # special_inside_parentheses (default) と比べて
30
+ # * 横に長くなりづらい
31
+ # * メソッド名の長さが変わったときに diff が少ない
32
+ Layout/FirstArrayElementIndentation:
33
+ EnforcedStyle: consistent
34
+
35
+ # ({ と hash を開始した場合に ( の位置にインデントさせる
36
+ # そもそも {} が必要ない可能性が高いが Style/BracesAroundHashParameters はチェックしないことにしたので
37
+ Layout/FirstHashElementIndentation:
38
+ EnforcedStyle: consistent
39
+
40
+ # private/protected は一段深くインデントする
41
+ Layout/IndentationConsistency:
42
+ EnforcedStyle: indented_internal_methods
43
+
44
+ # メソッドチェーン感がより感じられるインデントにする
45
+ Layout/MultilineMethodCallIndentation:
46
+ EnforcedStyle: indented_relative_to_receiver
47
+
48
+ # {} は 1 行で書くときに主に使われるので、スペースよりも
49
+ # 横に長くならない方が嬉しさが多い。
50
+ # そもそも {| のスタイルの方が一般的だったと認識している。
51
+ Layout/SpaceInsideBlockBraces:
52
+ SpaceBeforeBlockParameters: false
53
+
54
+ #################### Lint ##################################
55
+
56
+ # spec 内では
57
+ # expect { subject }.to change { foo }
58
+ # という書き方をよく行うので () を省略したい。
59
+ # { foo } は明らかに change に紐付く。
60
+ Lint/AmbiguousBlockAssociation:
61
+ Exclude:
62
+ - "spec/**/*_spec.rb"
63
+
64
+ # Style/EmptyCaseCondition と同じく網羅の表現力が empty when を認めた方が高いし、
65
+ # 頻出する対象を最初の when で撥ねるのはパフォーマンス向上で頻出する。
66
+ # また、
67
+ # case foo
68
+ # when 42
69
+ # # nop
70
+ # when 1..100
71
+ # ...
72
+ # end
73
+ # と、下の when がキャッチしてしまう場合等に対応していない。
74
+ # See. http://tech.sideci.com/entry/2016/11/01/105900
75
+ Lint/EmptyWhen:
76
+ Enabled: false
77
+
78
+ # RuntimeError は「特定の Error を定義できない場合」なので、
79
+ # 定義できるエラーは RuntimeError ではなく StandardError を継承する。
80
+ Lint/InheritException:
81
+ EnforcedStyle: standard_error
82
+
83
+ # * 同名のメソッドがある場合にローカル変数に `_` を付ける
84
+ # * 一時変数として `_` を付ける
85
+ # というテクニックは頻出する
86
+ Lint/UnderscorePrefixedVariableName:
87
+ Enabled: false
88
+
89
+ # 子クラスで実装させるつもりで中身が
90
+ # raise NotImplementedError
91
+ # のみのメソッドが引っかかるので。
92
+ # (raise せずに中身が空だと IgnoreEmptyMethods でセーフ)
93
+ Lint/UnusedMethodArgument:
94
+ Enabled: false
95
+
96
+ # select 以外では引っかからないと思うので
97
+ # mutating_methods のチェックを有効に。
98
+ # TODO: select は引数が無い (ブロックのみ) の場合にだけチェックする
99
+ # ようにすると誤検知がほぼ無くなる?
100
+ Lint/Void:
101
+ CheckForMethodsWithNoSideEffects: true
102
+
103
+ #################### Metrics ###############################
104
+
105
+ # 30 まではギリギリ許せる範囲だったけど
106
+ # リリースごとに 3 ずつぐらい下げていきます。20 まで下げたい。
107
+ Metrics/AbcSize:
108
+ Max: 24
109
+
110
+ # Gemfile, Guardfile は DSL 的で基本的に複雑にはならないので除外
111
+ # rake, rspec, environments, routes は巨大な block 不可避なので除外
112
+ # TODO: ExcludedMethods の精査
113
+ Metrics/BlockLength:
114
+ Exclude:
115
+ - "Rakefile"
116
+ - "**/*.rake"
117
+ - "spec/**/*.rb"
118
+ - "Gemfile"
119
+ - "Guardfile"
120
+ - "config/environments/*.rb"
121
+ - "config/routes.rb"
122
+ - "config/routes/**/*.rb"
123
+ - "*.gemspec"
124
+
125
+ #################### Naming ################################
126
+
127
+ # has_ から始まるメソッドは許可する
128
+ Naming/PredicateName:
129
+ ForbiddenPrefixes:
130
+ - "is_"
131
+ - "have_"
132
+ NamePrefix:
133
+ - "is_"
134
+ - "have_"
135
+
136
+ # 3 文字未満だと指摘されるが、未使用を示す _ や e(rror), b(lock),
137
+ # n(umber) といった 1 文字変数は頻出するし、前置詞(by, to, ...)や
138
+ # よく知られた省略語 (op: operator とか pk: primary key とか) も妥当。
139
+ # 変数 s にどんな文字列かを形容したい場合と、不要な場合とがある=無効
140
+ Naming/MethodParameterName:
141
+ Enabled: false
142
+
143
+ #################### Performance ###########################
144
+
145
+ # downcase or upcase しての比較はイディオムの域なので、多少の
146
+ # パフォーマンスの違いがあろうが casecmp に変える意義を感じない
147
+ Performance/Casecmp:
148
+ Enabled: false
149
+
150
+
151
+ #################### Security ##############################
152
+
153
+ # 毎回 YAML.safe_load(yaml_str, [Date, Time]) するのは面倒で。。
154
+ Security/YAMLLoad:
155
+ Enabled: false
156
+
157
+
158
+ #################### Style #################################
159
+
160
+ # レキシカルスコープの扱いが alias_method の方が自然。
161
+ # https://ernie.io/2014/10/23/in-defense-of-alias/ のように
162
+ # 問題になる場合は自分で緩める。
163
+ Style/Alias:
164
+ EnforcedStyle: prefer_alias_method
165
+
166
+ # redirect_to xxx and return のイディオムを維持したい
167
+ Style/AndOr:
168
+ EnforcedStyle: conditionals
169
+
170
+ # 日本語のコメントを許可する
171
+ Style/AsciiComments:
172
+ Enabled: false
173
+
174
+ # do .. end から更にメソッドチェーンすると見づらいので
175
+ # auto-correct せず、自分で修正する
176
+ # spec 内は見た目が綺麗になるので許可
177
+ Style/BlockDelimiters:
178
+ AutoCorrect: false
179
+ Exclude:
180
+ - "spec/**/*_spec.rb"
181
+
182
+ # scope が違うとか親 module の存在確認が必要とかデメリットはあるが、
183
+ # namespace 付きのクラスはかなり頻繁に作るので簡単に書きたい。
184
+ Style/ClassAndModuleChildren:
185
+ Enabled: false
186
+
187
+ # Style/CollectionMethods 自体は無効になっているのだが、
188
+ # https://github.com/bbatsov/rubocop/issues/1084
189
+ # https://github.com/bbatsov/rubocop/issues/1334
190
+ # Performance/Detect がこの設定値を見るので PreferredMethods だけ変更しておく。
191
+ #
192
+ # デフォルト値から変えたのは
193
+ # find -> detect
194
+ # ActiveRecord の find と間違えやすいため
195
+ # reduce -> inject
196
+ # detect, reject, select と並べたときに韻を踏んでいるため。
197
+ # collect -> map を維持しているのは文字数が圧倒的に少ないため。
198
+ Style/CollectionMethods:
199
+ PreferredMethods:
200
+ detect: "detect"
201
+ find: "detect"
202
+ inject: "inject"
203
+ reduce: "inject"
204
+
205
+ # ドキュメントの無い public class を許可する
206
+ Style/Documentation:
207
+ Enabled: false
208
+
209
+ # !! のイディオムは積極的に使う
210
+ Style/DoubleNegation:
211
+ Enabled: false
212
+
213
+ # case
214
+ # when ios?
215
+ # when android?
216
+ # end
217
+ # のようなものは case の方が網羅の表現力が高い
218
+ Style/EmptyCaseCondition:
219
+ Enabled: false
220
+
221
+ # 明示的に else で nil を返すのは分かりやすいので許可する
222
+ Style/EmptyElse:
223
+ EnforcedStyle: empty
224
+
225
+ # 空メソッドの場合だけ1行で書かなければいけない理由が無い
226
+ # 「セミコロンは使わない」に寄せた方がルールがシンプル
227
+ Style/EmptyMethod:
228
+ EnforcedStyle: expanded
229
+
230
+ # いずれかに揃えるのならば `sprintf` や `format` より String#% が好きです
231
+ Style/FormatString:
232
+ EnforcedStyle: percent
233
+
234
+ # まだ対応するには早い
235
+ Style/FrozenStringLiteralComment:
236
+ Enabled: false
237
+
238
+ # if 文の中に 3 行程度のブロックを書くぐらいは許容した方が現実的
239
+ # NOTE: https://github.com/bbatsov/rubocop/commit/29945958034db13af9e8ff385ec58cb9eb464596
240
+ # の影響で、if 文の中身が 1 行の場合に警告されるようになっている。
241
+ # Style/IfUnlessModifier の設定見てくれないかなぁ? (v0.36.0)
242
+ Style/GuardClause:
243
+ MinBodyLength: 5
244
+
245
+ # rake タスクの順序の hash は rocket を許可する
246
+ Style/HashSyntax:
247
+ Exclude:
248
+ - "**/*.rake"
249
+ - "Rakefile"
250
+
251
+ # 平たくしてしまうと条件のグルーピングが脳内モデルとズレやすい
252
+ Style/IfInsideElse:
253
+ Enabled: false
254
+
255
+ # 条件式の方を意識させたい場合には後置の if/unless を使わない方が分かりやすい
256
+ Style/IfUnlessModifier:
257
+ Enabled: false
258
+
259
+ # scope 等は複数行でも lambda ではなく ->{} で揃えた方が見た目が綺麗
260
+ Style/Lambda:
261
+ EnforcedStyle: literal
262
+
263
+ # end.some_method とチェインするのはダサい
264
+ # Style/BlockDelimiters と相性が悪いけど、頑張ってコードを修正してください
265
+ Style/MethodCalledOnDoEndBlock:
266
+ Enabled: true
267
+
268
+ # この 2 つは単発で動かすのが分かっているので Object を汚染しても問題ない。
269
+ # spec/dummy は Rails Engine を開発するときに絶対に引っかかるので入れておく。
270
+ Style/MixinUsage:
271
+ Exclude:
272
+ - "bin/setup"
273
+ - "bin/update"
274
+ - "spec/dummy/bin/setup"
275
+ - "spec/dummy/bin/update"
276
+
277
+ # 1_000_000 と区切り文字が 2 個以上必要になる場合のみ _ 区切りを必須にする
278
+ # 10_000_00 は許可しない。(これは例えば 10000 ドルをセント単位にする時に便利だが
279
+ # 頻出しないので foolproof に振る
280
+ Style/NumericLiterals:
281
+ MinDigits: 7
282
+ Strict: true
283
+
284
+ # foo.positive? は foo > 0 に比べて意味が曖昧になる
285
+ # foo.zero? は許可したいけどメソッドごとに指定できないので一括で disable に
286
+ Style/NumericPredicate:
287
+ Enabled: false
288
+
289
+ # falsy な場合という条件式の方を意識させたい場合がある。
290
+ # Style/IfUnlessModifier と同じ雰囲気。
291
+ Style/OrAssignment:
292
+ Enabled: false
293
+
294
+ # 正規表現にマッチさせた時の特殊変数の置き換えは Regex.last_match ではなく
295
+ # 名前付きキャプチャを使って参照したいので auto-correct しない
296
+ Style/PerlBackrefs:
297
+ AutoCorrect: false
298
+
299
+ # Hash#has_key? の方が key? よりも意味が通る
300
+ Style/PreferredHashMethods:
301
+ EnforcedStyle: verbose
302
+
303
+ # 受け取り側で multiple assignment しろというのを明示
304
+ Style/RedundantReturn:
305
+ AllowMultipleReturnValues: true
306
+
307
+ # 特に model 内において、ローカル変数とメソッド呼び出しの区別をつけた方が分かりやすい場合が多い
308
+ Style/RedundantSelf:
309
+ Enabled: false
310
+
311
+ # 無指定だと StandardError を rescue するのは常識の範疇なので。
312
+ Style/RescueStandardError:
313
+ EnforcedStyle: implicit
314
+
315
+ # user&.admin? が、[nil, true, false] の 3 値を返すことに一瞬で気づけず
316
+ # boolean を返すっぽく見えてしまうので無効に。
317
+ # user && user.admin? なら短絡評価で nil が返ってくるのが一目で分かるので。
318
+ # (boolean を返すメソッド以外なら積極的に使いたいんだけどねぇ
319
+ #
320
+ # 他に auto-correct してはいけないパターンとして
321
+ # if hoge && hoge.count > 1
322
+ # がある。
323
+ Style/SafeNavigation:
324
+ Enabled: false
325
+
326
+ # spec 内は見た目が綺麗になるので許可
327
+ Style/Semicolon:
328
+ Exclude:
329
+ - "spec/**/*_spec.rb"
330
+
331
+ # * 式展開したい場合に書き換えるのが面倒
332
+ # * 文章ではダブルクォートよりもシングルクォートの方が頻出する
333
+ # ことから EnforcedStyle: double_quotes 推奨
334
+ Style/StringLiterals:
335
+ EnforcedStyle: double_quotes
336
+
337
+ # 式展開中でもダブルクォートを使う
338
+ # 普段の文字列リテラルがダブルクォートなので使い分けるのが面倒
339
+ Style/StringLiteralsInInterpolation:
340
+ EnforcedStyle: double_quotes
341
+
342
+ # String#intern は ruby の内部表現すぎるので String#to_sym を使う
343
+ Style/StringMethods:
344
+ Enabled: true
345
+
346
+ # %w() と %i() が見分けづらいので Style/WordArray と合わせて無効に。
347
+ # 書き手に委ねるという意味で、Enabled: false にしています。使っても良い。
348
+ Style/SymbolArray:
349
+ Enabled: false
350
+
351
+ # 三項演算子は分かりやすく使いたい。
352
+ # () を外さない方が条件式が何なのか読み取りやすいと感じる。
353
+ Style/TernaryParentheses:
354
+ EnforcedStyle: require_parentheses_when_complex
355
+
356
+ # 複数行の場合はケツカンマを入れる(引数)
357
+ # Ruby は関数の引数もカンマを許容しているので
358
+ # * 単行は常にケツカンマ無し
359
+ # * 複数行は常にケツカンマ有り
360
+ # に統一したい。
361
+ # 見た目がアレだが、ES2017 でも関数引数のケツカンマが許容されるので
362
+ # 世界はそちらに向かっている。
363
+ Style/TrailingCommaInArguments:
364
+ EnforcedStyleForMultiline: comma
365
+
366
+ # 複数行の場合はケツカンマを入れる(Arrayリテラル)
367
+ # JSON がケツカンマを許していないという反対意見もあるが、
368
+ # 古い JScript の仕様に縛られる必要は無い。
369
+ # IE9 以降はリテラルでケツカンマ OK なので正しい差分行の検出に寄せる。
370
+ # 2 insertions(+), 1 deletion(-) ではなく、1 insertions
371
+ Style/TrailingCommaInArrayLiteral:
372
+ EnforcedStyleForMultiline: comma
373
+
374
+ # 複数行の場合はケツカンマを入れる(Hashリテラル)
375
+ Style/TrailingCommaInHashLiteral:
376
+ EnforcedStyleForMultiline: comma
377
+
378
+ # %w() と %i() が見分けづらいので Style/SymbolArray と合わせて無効に。
379
+ # 書き手に委ねるという意味で、Enabled: false にしています。使っても良い。
380
+ Style/WordArray:
381
+ Enabled: false
382
+
383
+ # 0 <= foo && foo < 5 のように数直線上に並べるのは
384
+ # コードを読みやすくするテクニックなので equality_operators_only に。
385
+ # Style/YodaCondition:
386
+ # # TODO: rubocop 0.63.0以降はforbid_for_equality_operators_onlyなので依存を引き上げれば有効にできる
387
+ # EnforcedStyle: forbid_for_equality_operators_only
388
+
389
+ # 条件式で arr.size > 0 が使われた時に
390
+ # if !arr.empty?
391
+ # else
392
+ # end
393
+ # に修正されるのが嫌。
394
+ # 中身を入れ替えて否定外しても良いんだけど、どちらが例外的な処理なのかが分かりづらくなる。
395
+ Style/ZeroLengthPredicate:
396
+ Enabled: false
data/.rubocop.yml CHANGED
@@ -1,14 +1,11 @@
1
- inherit_gem:
2
- onkcop:
3
- - "config/rubocop.yml"
4
- # uncomment if use rails cops
5
- # - "config/rails.yml"
6
- # uncomment if use rspec cops
7
- # - "config/rspec.yml"
1
+ require: rubocop-performance
2
+
3
+ inherit_from: './.onkcop-config.yml'
8
4
 
9
5
  AllCops:
10
- TargetRubyVersion: 2.4
6
+ TargetRubyVersion: 2.5
11
7
  Exclude:
8
+ - 'tmp/**/*'
12
9
  - 'bin/*'
13
10
  - 'db/schema.rb'
14
11
  - 'vendor/bundle/**/*'
@@ -67,16 +64,20 @@ Metrics/AbcSize:
67
64
  - 'lib/jpmobile/fallback_view_selector.rb'
68
65
  - 'lib/jpmobile/resolver.rb'
69
66
  - 'lib/jpmobile/rack/filter.rb'
67
+ - 'lib/jpmobile/trans_sid.rb'
70
68
 
71
69
  Metrics/CyclomaticComplexity:
70
+ Max: 10
72
71
  Exclude:
73
72
  - 'lib/jpmobile/emoticon.rb'
74
73
  - 'lib/jpmobile/helpers.rb'
75
74
  - 'lib/jpmobile/mail.rb'
76
75
  - 'lib/jpmobile/mobile/au.rb'
77
76
  - 'lib/jpmobile/mobile/docomo.rb'
77
+ - 'lib/jpmobile/mobile/abstract_mobile.rb'
78
78
 
79
79
  Metrics/PerceivedComplexity:
80
+ Max: 8
80
81
  Exclude:
81
82
  - 'lib/jpmobile/emoticon.rb'
82
83
  - 'lib/jpmobile/helpers.rb'
@@ -84,8 +85,12 @@ Metrics/PerceivedComplexity:
84
85
  - 'lib/jpmobile/mobile/au.rb'
85
86
  - 'lib/jpmobile/mobile/docomo.rb'
86
87
  - 'lib/jpmobile/trans_sid.rb'
88
+ - 'lib/jpmobile/filter.rb'
89
+ - 'lib/jpmobile/rack/filter.rb'
90
+ - 'lib/jpmobile/mobile/abstract_mobile.rb'
87
91
 
88
- Metrics/LineLength:
92
+ Layout/LineLength:
93
+ Max: 160
89
94
  Exclude:
90
95
  - '**/*_spec.rb'
91
96
  - 'lib/jpmobile/emoticon/z_combine.rb'
@@ -118,13 +123,15 @@ Metrics/ClassLength:
118
123
  - 'lib/jpmobile/mobile/docomo.rb'
119
124
 
120
125
  Metrics/MethodLength:
126
+ Max: 20
121
127
  Exclude:
122
128
  - 'lib/jpmobile/emoticon.rb'
123
129
  - 'lib/jpmobile/helpers.rb'
124
130
  - 'lib/jpmobile/mail.rb'
125
131
  - 'lib/jpmobile/resolver.rb'
132
+ - 'test/rails/overrides/db/migrate/*'
126
133
 
127
- Lint/HandleExceptions:
134
+ Lint/SuppressedException:
128
135
  Exclude:
129
136
  - 'lib/jpmobile/emoticon.rb'
130
137
  - 'lib/jpmobile/fallback_view_selector.rb'
@@ -133,3 +140,57 @@ Lint/HandleExceptions:
133
140
  Lint/Void:
134
141
  Exclude:
135
142
  - 'lib/jpmobile/filter.rb'
143
+
144
+ Style/StringConcatenation:
145
+ Enabled: false
146
+
147
+ Layout/SpaceBeforeBrackets: # (new in 1.7)
148
+ Enabled: true
149
+ Exclude:
150
+ - '**/*_controller.rb'
151
+ - '**/*_spec.rb'
152
+ Lint/AmbiguousAssignment: # (new in 1.7)
153
+ Enabled: true
154
+ Lint/DuplicateBranch: # (new in 1.3)
155
+ Enabled: true
156
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
157
+ Enabled: true
158
+ Lint/EmptyBlock: # (new in 1.1)
159
+ Enabled: true
160
+ Lint/EmptyClass: # (new in 1.3)
161
+ Enabled: true
162
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
163
+ Enabled: true
164
+ Lint/ToEnumArguments: # (new in 1.1)
165
+ Enabled: true
166
+ Lint/UnexpectedBlockArity: # (new in 1.5)
167
+ Enabled: true
168
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
169
+ Enabled: true
170
+ Style/ArgumentsForwarding: # (new in 1.1)
171
+ Enabled: true
172
+ Style/CollectionCompact: # (new in 1.2)
173
+ Enabled: true
174
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
175
+ Enabled: true
176
+ Exclude:
177
+ - 'lib/jpmobile/path_set.rb'
178
+ Style/HashExcept: # (new in 1.7)
179
+ Enabled: true
180
+ Style/NegatedIfElseCondition: # (new in 1.2)
181
+ Enabled: true
182
+ Style/NilLambda: # (new in 1.3)
183
+ Enabled: true
184
+ Style/RedundantArgument: # (new in 1.4)
185
+ Enabled: true
186
+ Style/SwapValues: # (new in 1.1)
187
+ Enabled: true
188
+
189
+ Style/OptionalBooleanParameter:
190
+ Exclude:
191
+ - 'lib/jpmobile/emoticon.rb'
192
+ - 'lib/jpmobile/path_set.rb'
193
+
194
+ Metrics/ParameterLists:
195
+ Exclude:
196
+ - 'lib/jpmobile/path_set.rb'