rubocop-betterment 1.8.2 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc4eabc0685d064150b4545175e96ee1c848ad32f53bf35f83b5125a7c309b82
|
4
|
+
data.tar.gz: 258718477b39bb37af975daae5f1d4db1ea7e4adb55d7b8ee6b3757aee5dbfbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 692eb066b0e6b45d0c7049f90acc66c600d1a6b24793ba691975112ccd5a7ddcfc01b3674dc180fecf9eb75dd4445c826d30864b4fbea1768e53df1fceb1c2e4
|
7
|
+
data.tar.gz: 7cee25dc098dbabbdac9ae42a10ada567047e211c445cb6ecef7405ae6da89a03927c044f3fb9781a2bb6e48b7fb3fa1f608f820076d4828159477cee8864914
|
data/config/default.yml
CHANGED
@@ -8,7 +8,6 @@ AllCops:
|
|
8
8
|
Exclude:
|
9
9
|
- 'bin/**/*'
|
10
10
|
- 'db/**/*'
|
11
|
-
- 'config/**/*'
|
12
11
|
- 'vendor/**/*'
|
13
12
|
- 'frontend/**/*'
|
14
13
|
- 'build/**/*'
|
@@ -44,6 +43,10 @@ Layout/MultilineMethodCallIndentation:
|
|
44
43
|
Layout/MultilineOperationIndentation:
|
45
44
|
EnforcedStyle: indented
|
46
45
|
|
46
|
+
# Disabling because of a bug in rubocop: https://github.com/rubocop-hq/rubocop/issues/6918
|
47
|
+
Layout/RescueEnsureAlignment:
|
48
|
+
Enabled: false
|
49
|
+
|
47
50
|
Lint/AmbiguousBlockAssociation:
|
48
51
|
Exclude:
|
49
52
|
- 'spec/**/*'
|
@@ -63,27 +66,32 @@ Lint/BooleanSymbol:
|
|
63
66
|
Metrics/AbcSize:
|
64
67
|
Exclude:
|
65
68
|
- 'spec/**/*'
|
69
|
+
- 'webvalve/**/*'
|
66
70
|
|
67
71
|
Metrics/BlockLength:
|
68
72
|
Enabled: false
|
69
73
|
|
70
74
|
Metrics/ClassLength:
|
71
75
|
Max: 250
|
76
|
+
Exclude:
|
77
|
+
- 'webvalve/**/*'
|
72
78
|
|
73
79
|
Metrics/CyclomaticComplexity:
|
74
80
|
Max: 10
|
75
81
|
Exclude:
|
76
82
|
- 'spec/**/*'
|
83
|
+
- 'webvalve/**/*'
|
77
84
|
|
78
85
|
Metrics/LineLength:
|
79
86
|
Max: 140
|
80
87
|
|
81
88
|
Metrics/MethodLength:
|
82
|
-
|
83
|
-
- 'spec/**/*'
|
89
|
+
Enabled: false
|
84
90
|
|
85
91
|
Metrics/ModuleLength:
|
86
92
|
Max: 250
|
93
|
+
Exclude:
|
94
|
+
- 'webvalve/**/*'
|
87
95
|
|
88
96
|
Metrics/ParameterLists:
|
89
97
|
Max: 5
|
@@ -92,6 +100,7 @@ Metrics/ParameterLists:
|
|
92
100
|
Metrics/PerceivedComplexity:
|
93
101
|
Exclude:
|
94
102
|
- 'spec/**/*'
|
103
|
+
- 'webvalve/**/*'
|
95
104
|
|
96
105
|
Naming/HeredocDelimiterNaming:
|
97
106
|
Enabled: false
|
@@ -248,5 +257,15 @@ Style/StringLiterals:
|
|
248
257
|
Style/SymbolProc:
|
249
258
|
Enabled: false
|
250
259
|
|
260
|
+
# Use a trailing comma to keep diffs clean when elements are inserted or removed
|
261
|
+
Style/TrailingCommaInArguments:
|
262
|
+
EnforcedStyleForMultiline: comma
|
263
|
+
|
264
|
+
Style/TrailingCommaInArrayLiteral:
|
265
|
+
EnforcedStyleForMultiline: comma
|
266
|
+
|
267
|
+
Style/TrailingCommaInHashLiteral:
|
268
|
+
EnforcedStyleForMultiline: comma
|
269
|
+
|
251
270
|
Style/YodaCondition:
|
252
271
|
Enabled: false
|
@@ -2,3 +2,5 @@ require 'rubocop'
|
|
2
2
|
require 'rubocop/cop/betterment/timeout'
|
3
3
|
require 'rubocop/cop/betterment/memoization_with_arguments'
|
4
4
|
require 'rubocop/cop/betterment/site_prism_loaded'
|
5
|
+
require 'rubocop/cop/betterment/spec_helper_required_outside_spec_dir'
|
6
|
+
require 'rubocop/cop/betterment/implicit_redirect_type'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module RuboCop
|
2
|
+
module Cop
|
3
|
+
module Betterment
|
4
|
+
# Require explicit redirect statuses in routes.rb. Refer to the book for more details:
|
5
|
+
# https://github.com/Betterment/the-book/blob/master/platform-specific/ruby.markdown#use-temporary-redirects-eg-redirectstatus-302
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# # bad
|
9
|
+
# get '/', redirect('/dashboard')
|
10
|
+
# get { |params, request| '/dashboard' }
|
11
|
+
#
|
12
|
+
# # good
|
13
|
+
# get '/', redirect('/dashboard', status: 301)
|
14
|
+
# get(status: 302) { |params, request| '/dashboard' }
|
15
|
+
class ImplicitRedirectType < Cop
|
16
|
+
ROUTES_FILE_NAME = 'routes.rb'.freeze
|
17
|
+
MSG =
|
18
|
+
'Rails will create a permanent (301) redirect, which is dangerous. ' \
|
19
|
+
'Please specify your desired status, e.g. redirect(..., status: 302)'.freeze
|
20
|
+
|
21
|
+
# redirect('/')
|
22
|
+
def_node_matcher :arg_form_without_options?, <<-PATTERN
|
23
|
+
(send nil? :redirect (str _))
|
24
|
+
PATTERN
|
25
|
+
|
26
|
+
# redirect { |_params, _request| '/' }
|
27
|
+
def_node_matcher :block_form_without_options?, <<-PATTERN
|
28
|
+
(block (send nil? :redirect) ...)
|
29
|
+
PATTERN
|
30
|
+
|
31
|
+
# redirect('/', foo: 'bar')
|
32
|
+
def_node_matcher :arg_form_with_options, <<-PATTERN
|
33
|
+
(send nil? :redirect (str _) (hash $...))
|
34
|
+
PATTERN
|
35
|
+
|
36
|
+
# redirect(foo: 'bar') { |_params, _request| '/' }
|
37
|
+
def_node_matcher :block_form_with_options, <<-PATTERN
|
38
|
+
(block (send nil? :redirect (hash $...)) ...)
|
39
|
+
PATTERN
|
40
|
+
|
41
|
+
# status: anything
|
42
|
+
def_node_matcher :valid_status_option?, <<-PATTERN
|
43
|
+
(pair (sym :status) _)
|
44
|
+
PATTERN
|
45
|
+
|
46
|
+
def on_block(node)
|
47
|
+
return unless routes_file?
|
48
|
+
|
49
|
+
if block_form_with_options(node) { |options| options.none?(&method(:valid_status_option?)) } || block_form_without_options?(node)
|
50
|
+
add_offense(node, message: MSG)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def on_send(node)
|
55
|
+
return unless routes_file?
|
56
|
+
|
57
|
+
if arg_form_with_options(node) { |options| options.none?(&method(:valid_status_option?)) } || arg_form_without_options?(node)
|
58
|
+
add_offense(node, message: MSG)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def routes_file?
|
65
|
+
Pathname.new(processed_source.buffer.name).basename.to_s == ROUTES_FILE_NAME
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module RuboCop
|
2
|
+
module Cop
|
3
|
+
module Betterment
|
4
|
+
# If a file requires spec_helper or rails_helper, make sure
|
5
|
+
# it is located in a spec/ directory.
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# # bad
|
9
|
+
# app/models/whatever_spec.rb
|
10
|
+
# require 'rails_helper'
|
11
|
+
#
|
12
|
+
# # good
|
13
|
+
# spec/models/my_class_spec.rb
|
14
|
+
# require 'rails_helper'
|
15
|
+
class SpecHelperRequiredOutsideSpecDir < Cop
|
16
|
+
MSG = 'Spec helper required outside of a spec/ directory.'.freeze
|
17
|
+
|
18
|
+
def_node_matcher :requires_spec_helper?, <<-PATTERN
|
19
|
+
(send nil? :require
|
20
|
+
(str {"rails_helper" "spec_helper"}))
|
21
|
+
PATTERN
|
22
|
+
|
23
|
+
def on_send(node)
|
24
|
+
add_offense(node, message: MSG) if requires_spec_helper?(node) && !spec_directory?
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def spec_directory?
|
30
|
+
Pathname.new(processed_source.buffer.name)
|
31
|
+
.relative_path_from(Pathname.pwd)
|
32
|
+
.to_s
|
33
|
+
.start_with?("spec#{File::SEPARATOR}")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-betterment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Development
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -91,8 +91,10 @@ files:
|
|
91
91
|
- STYLEGUIDE.md
|
92
92
|
- config/default.yml
|
93
93
|
- lib/rubocop/cop/betterment.rb
|
94
|
+
- lib/rubocop/cop/betterment/implicit_redirect_type.rb
|
94
95
|
- lib/rubocop/cop/betterment/memoization_with_arguments.rb
|
95
96
|
- lib/rubocop/cop/betterment/site_prism_loaded.rb
|
97
|
+
- lib/rubocop/cop/betterment/spec_helper_required_outside_spec_dir.rb
|
96
98
|
- lib/rubocop/cop/betterment/timeout.rb
|
97
99
|
homepage:
|
98
100
|
licenses:
|
@@ -113,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
115
|
- !ruby/object:Gem::Version
|
114
116
|
version: '0'
|
115
117
|
requirements: []
|
116
|
-
rubygems_version: 3.
|
118
|
+
rubygems_version: 3.1.3
|
117
119
|
signing_key:
|
118
120
|
specification_version: 4
|
119
121
|
summary: Betterment rubocop configuration
|