sevencop 0.6.1 → 0.7.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 +4 -4
- data/.rubocop.yml +0 -7
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +13 -11
- data/README.md +23 -1
- data/config/default.yml +7 -0
- data/lib/rubocop/cop/sevencop/hash_literal_order.rb +0 -6
- data/lib/rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity.rb +1 -1
- data/lib/rubocop/cop/sevencop/where_not.rb +45 -0
- data/lib/sevencop/version.rb +1 -1
- data/lib/sevencop.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 435ef77ac8fd3b1e598c538068a02cf91bce3e1d3143bd1e48b45ed80b9a8cd1
|
4
|
+
data.tar.gz: 8bc5d65cde82f92a7f6457041cd49a1448af80d1915841a44a4fc2c22b7b0877
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f53c512de8a6c32b2c4a409dc274dc22149c3ef15b680c8223e58a74bcac0015ccb3dd2d2e397fbb410bdf6f949e9f3d1de645c8332204a88dce7ab6ca5194da
|
7
|
+
data.tar.gz: 2fd6cc8caf282c894b41744ae7df09d54017ce02d82ac3ab4925c85cde00a1aa0b8fd0ebc0fac5ec70f25dd8ab5fbfa79160102456a2a58ffafd3da1ffb92689
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sevencop (0.
|
4
|
+
sevencop (0.7.0)
|
5
5
|
rubocop
|
6
6
|
|
7
7
|
GEM
|
@@ -9,12 +9,13 @@ GEM
|
|
9
9
|
specs:
|
10
10
|
ast (2.4.2)
|
11
11
|
diff-lcs (1.5.0)
|
12
|
-
|
13
|
-
|
12
|
+
json (2.6.2)
|
13
|
+
parallel (1.22.1)
|
14
|
+
parser (3.1.2.0)
|
14
15
|
ast (~> 2.4.1)
|
15
16
|
rainbow (3.1.1)
|
16
17
|
rake (13.0.6)
|
17
|
-
regexp_parser (2.
|
18
|
+
regexp_parser (2.5.0)
|
18
19
|
rexml (3.2.5)
|
19
20
|
rspec (3.11.0)
|
20
21
|
rspec-core (~> 3.11.0)
|
@@ -25,23 +26,24 @@ GEM
|
|
25
26
|
rspec-expectations (3.11.0)
|
26
27
|
diff-lcs (>= 1.2.0, < 2.0)
|
27
28
|
rspec-support (~> 3.11.0)
|
28
|
-
rspec-mocks (3.11.
|
29
|
+
rspec-mocks (3.11.1)
|
29
30
|
diff-lcs (>= 1.2.0, < 2.0)
|
30
31
|
rspec-support (~> 3.11.0)
|
31
32
|
rspec-support (3.11.0)
|
32
|
-
rubocop (1.
|
33
|
+
rubocop (1.31.2)
|
34
|
+
json (~> 2.3)
|
33
35
|
parallel (~> 1.10)
|
34
36
|
parser (>= 3.1.0.0)
|
35
37
|
rainbow (>= 2.2.2, < 4.0)
|
36
38
|
regexp_parser (>= 1.8, < 3.0)
|
37
|
-
rexml
|
38
|
-
rubocop-ast (>= 1.
|
39
|
+
rexml (>= 3.2.5, < 4.0)
|
40
|
+
rubocop-ast (>= 1.18.0, < 2.0)
|
39
41
|
ruby-progressbar (~> 1.7)
|
40
42
|
unicode-display_width (>= 1.4.0, < 3.0)
|
41
|
-
rubocop-ast (1.
|
43
|
+
rubocop-ast (1.19.1)
|
42
44
|
parser (>= 3.1.1.0)
|
43
45
|
ruby-progressbar (1.11.0)
|
44
|
-
unicode-display_width (2.
|
46
|
+
unicode-display_width (2.2.0)
|
45
47
|
|
46
48
|
PLATFORMS
|
47
49
|
x86_64-linux
|
@@ -53,4 +55,4 @@ DEPENDENCIES
|
|
53
55
|
sevencop!
|
54
56
|
|
55
57
|
BUNDLED WITH
|
56
|
-
2.3.
|
58
|
+
2.3.17
|
data/README.md
CHANGED
@@ -27,12 +27,22 @@ gem install sevencop
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
+
Require sevencop from your .rubocop.yml:
|
31
|
+
|
30
32
|
```yaml
|
31
33
|
# .rubocop.yml
|
32
34
|
require:
|
33
35
|
- sevencop
|
34
36
|
```
|
35
37
|
|
38
|
+
then enable the cops you want to use:
|
39
|
+
|
40
|
+
```yaml
|
41
|
+
# .rubocop.yml
|
42
|
+
Sevencop/BelongsToOptional:
|
43
|
+
Enabled: true
|
44
|
+
```
|
45
|
+
|
36
46
|
## Cops
|
37
47
|
|
38
48
|
All cops are `Enabled: false` by default.
|
@@ -59,7 +69,7 @@ This is useful for migration of `config.active_record.belongs_to_required_by_def
|
|
59
69
|
|
60
70
|
### Sevencop/HashLiteralOrder
|
61
71
|
|
62
|
-
Sort Hash literal by key.
|
72
|
+
Sort Hash literal entries by key.
|
63
73
|
|
64
74
|
```ruby
|
65
75
|
# bad
|
@@ -135,3 +145,15 @@ validates :name, uniqueness: { allow_nil: true, scope: :user_id, case_sensitive:
|
|
135
145
|
```
|
136
146
|
|
137
147
|
Useful to keep the same behavior between Rails 6.0 and 6.1 where case insensitive collation is used in MySQL.
|
148
|
+
|
149
|
+
### Sevencop/WhereNot
|
150
|
+
|
151
|
+
Identifies passing multi-elements Hash literal to `where.not`.
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
# bad
|
155
|
+
where.not(key1: value1, key2: value2)
|
156
|
+
|
157
|
+
# good
|
158
|
+
where.not(key1: value1).where.not(key2: value2)
|
159
|
+
```
|
data/config/default.yml
CHANGED
@@ -31,3 +31,10 @@ Sevencop/UniquenessValidatorExplicitCaseSensitivity:
|
|
31
31
|
Enabled: false
|
32
32
|
Safe: false
|
33
33
|
VersionAdded: '0.3'
|
34
|
+
|
35
|
+
Sevencop/WhereNot:
|
36
|
+
Description: |
|
37
|
+
Identifies passing multi-elements Hash literal to `where.not`.
|
38
|
+
Enabled: false
|
39
|
+
Safe: false
|
40
|
+
VersionAdded: '0.7'
|
@@ -63,12 +63,6 @@ module RuboCop
|
|
63
63
|
].join
|
64
64
|
end
|
65
65
|
|
66
|
-
# @param [RuboCop::AST::HashNode] node
|
67
|
-
# @return [Boolean]
|
68
|
-
def multi_line?(node)
|
69
|
-
node.source.include?("\n")
|
70
|
-
end
|
71
|
-
|
72
66
|
# @param [Array<RuboCop::AST::PairNode>] pairs
|
73
67
|
# @return [Array<RuboCop::AST::PairNode>]
|
74
68
|
def sort(pairs)
|
@@ -4,7 +4,7 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module Sevencop
|
6
6
|
# Identifies use of UniquenessValidator without :case_sensitive option.
|
7
|
-
#
|
7
|
+
# Useful to keep the same behavior between Rails 6.0 and 6.1 where case insensitive collation is used in MySQL.
|
8
8
|
#
|
9
9
|
# @safety
|
10
10
|
# This cop is unsafe because it can register a false positive.
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Sevencop
|
6
|
+
# Identifies passing multi-elements Hash literal to `where.not`.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
#
|
10
|
+
# # bad
|
11
|
+
# where.not(key1: value1, key2: value2)
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# where.not(key1: value1).where.not(key2: value2)
|
15
|
+
#
|
16
|
+
class WhereNot < Base
|
17
|
+
extend AutoCorrector
|
18
|
+
|
19
|
+
MSG = 'Use `where.not(key1: value1).where.not(key2: value2)` style.'
|
20
|
+
|
21
|
+
def_node_matcher :where_not_with_multiple_elements_hash?, <<~PATTERN
|
22
|
+
(send
|
23
|
+
(send _ :where) :not
|
24
|
+
({ hash | kwargs }
|
25
|
+
(pair _ _)
|
26
|
+
(pair _ _)+))
|
27
|
+
PATTERN
|
28
|
+
|
29
|
+
def on_send(node)
|
30
|
+
return unless where_not_with_multiple_elements_hash?(node)
|
31
|
+
|
32
|
+
add_offense(node) do |corrector|
|
33
|
+
pairs = node.children[2].children
|
34
|
+
last_end_pos = pairs[0].location.expression.end_pos
|
35
|
+
pairs[1..].each do |pair|
|
36
|
+
corrector.remove(pair.location.expression.with(begin_pos: last_end_pos))
|
37
|
+
last_end_pos = pair.location.expression.end_pos
|
38
|
+
corrector.insert_after(node.location.expression, ".where.not(#{pair.source})")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/sevencop/version.rb
CHANGED
data/lib/sevencop.rb
CHANGED
@@ -11,6 +11,7 @@ require_relative 'rubocop/cop/sevencop/hash_literal_order'
|
|
11
11
|
require_relative 'rubocop/cop/sevencop/order_field'
|
12
12
|
require_relative 'rubocop/cop/sevencop/redundant_existence_check'
|
13
13
|
require_relative 'rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity'
|
14
|
+
require_relative 'rubocop/cop/sevencop/where_not'
|
14
15
|
|
15
16
|
module Sevencop
|
16
17
|
PROJECT_ROOT = ::Pathname.new(__dir__).parent.expand_path.freeze
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sevencop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -46,6 +46,7 @@ files:
|
|
46
46
|
- lib/rubocop/cop/sevencop/order_field.rb
|
47
47
|
- lib/rubocop/cop/sevencop/redundant_existence_check.rb
|
48
48
|
- lib/rubocop/cop/sevencop/uniqueness_validator_explicit_case_sensitivity.rb
|
49
|
+
- lib/rubocop/cop/sevencop/where_not.rb
|
49
50
|
- lib/sevencop.rb
|
50
51
|
- lib/sevencop/inject.rb
|
51
52
|
- lib/sevencop/version.rb
|