Package not found. Please check the package name and try again.
datarockets-style 0.8.1 → 1.1.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 +5 -5
- data/.github/ISSUE_TEMPLATE/update-dependencies.md +1 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +68 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +60 -42
- data/README.md +2 -2
- data/RELEASING.md +16 -0
- data/bin/console +1 -1
- data/config/base.yml +116 -1
- data/config/rails.yml +2 -2
- data/config/rspec.yml +3 -0
- data/datarockets-style.gemspec +6 -6
- data/doc/STYLE_GUIDE.md +40 -0
- data/doc/STYLE_GUIDE_RSPEC.md +4 -0
- data/lib/datarockets_style.rb +12 -0
- data/lib/datarockets_style/cop/layout/array_alignment_extended.rb +81 -0
- data/lib/datarockets_style/cop/style/nested_interpolation.rb +35 -0
- data/lib/{datarockets/style → datarockets_style}/formatter/todo_list_formatter.rb +3 -2
- data/lib/datarockets_style/formatter/todo_list_formatter/report_summary.rb +55 -0
- data/lib/datarockets_style/version.rb +3 -0
- metadata +32 -21
- data/lib/datarockets/style.rb +0 -14
- data/lib/datarockets/style/cop/layout/array_alignment_extended.rb +0 -83
- data/lib/datarockets/style/cop/style/nested_interpolation.rb +0 -37
- data/lib/datarockets/style/formatter/todo_list_formatter/report_summary.rb +0 -57
- data/lib/datarockets/style/version.rb +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 7ef40260e95ced035f4c8f86b18c807997a4e79228c72e75a880477fecb8030e
|
|
4
|
+
data.tar.gz: b35d77e092533855df4092585e8af229653859c6cce685bed399f50880d5bc49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a8b0a2bcb81d48837a708f337e3f37baba4e26d86f1be42fa02c12f441e18286b1164996a0a0026f870886a887c7664300683de2b80dee0e7fc6c4721934fce2
|
|
7
|
+
data.tar.gz: 0dd7f1c7bd2a72a7cbebe4fb5eaf4b399f53d014b0ecfe701be979917e09e7bc7467367d0dced76d25f9a76ad369b88da746285774e092b0078eea180209c913
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,73 @@
|
|
|
2
2
|
|
|
3
3
|
The format is described in [Contributing notes](CONTRIBUTING.md#changelog-entry-format).
|
|
4
4
|
|
|
5
|
-
## master
|
|
5
|
+
## master
|
|
6
|
+
|
|
7
|
+
## 1.1.0 (2021-02-09)
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
* Setup `EnforcedStyleForMultiline` for `Style/TrailingCommaInHashLiteral` rule. ([@r.dubrovsky][])
|
|
12
|
+
* Update rubocop to ```1.9.1```.([@paydaylight][])
|
|
13
|
+
* Update rubocop-rails requirement to ```>= 2.8.0, < 2.10.0```. ([@paydaylight][])
|
|
14
|
+
* Update rubocop-rspec to `2.2.0`. ([@paydaylight][])
|
|
15
|
+
* Change ```Datarockets::Style``` module to ```DatarocketsStyle```. ([@paydaylight][])
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
* [#177](https://github.com/datarockets/datarockets-style/issues/177) set ```Layout/MultilineOperationIndentation``` to indented ([@paydaylight][])
|
|
20
|
+
|
|
21
|
+
## 1.0.0 (2020-11-10)
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
* Update rubocop to `1.2.0`.
|
|
26
|
+
* Update rubocop-rails to `2.8.1`.
|
|
27
|
+
* Update rubocop-rspec tp `2.0.0`.
|
|
28
|
+
|
|
29
|
+
## 0.11.0 (2020-11-07)
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
* Update rubocop to '0.93.1'. ([@r.dubrovsky][])
|
|
34
|
+
* Enable new cops `Lint/BinaryOperatorWithIdenticalOperands`, `Lint/DuplicateRescueException`, `Lint/EmptyConditionalBody`, `Lint/FloatComparison`, `Lint/MissingSuper
|
|
35
|
+
`, `Lint/OutOfRangeRegexpRef`, `Lint/SelfAssignment`, `Lint/TopLevelReturnWithArgument`, `Lint/UnreachableLoop`, `Style/ExplicitBlockArgument`, `Style/GlobalStdStream`, `Style/OptionalBooleanParameter`, `Style/SingleArgumentDig`, `Style/SoleNestedConditional` and `Style/StringConcatenation` in version `0.89`.
|
|
36
|
+
* Allow to add all new lints automatically.
|
|
37
|
+
* Add auto-correctable count notification.
|
|
38
|
+
* Fix tests
|
|
39
|
+
* Update rubocop-rails to `2.7.1`.
|
|
40
|
+
* Update rubocop-rspec tp `1.43.2`.
|
|
41
|
+
* Disable `RSpec/MultipleMemoizedHelpers` cop.
|
|
42
|
+
|
|
43
|
+
## 0.10.0 (2020-07-17)
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
* Update rubocop to `0.88.0`. ([@r.dubrovsky][])
|
|
48
|
+
* Enable new cops `Lint/MixedRegexpCaptureTypes`, `Style/RedundantRegexpCharacterClass` and `Style/RedundantRegexpEscape`. Cops were added in version `0.85`.
|
|
49
|
+
* Enable new cop `Style/RedundantFetchBlock`. Cop was added in version `0.86`.
|
|
50
|
+
* Enable new cops `Style/AccessorGrouping`, `Style/BisectedAttrAccessor` and `Style/RedundantAssignment`. Cops were added in version `0.87`.
|
|
51
|
+
* Enable new cops `Lint/DuplicateElsifCondition`, `Style/ArrayCoercion`, `Style/CaseLikeIf`, `Style/HashAsLastArrayItem`, `Style/HashLikeCase` and `Style/RedundantFileExtensionInRequire`. Cops were added in version `0.88`.
|
|
52
|
+
* Update rubocop-rails to `2.6.0`.
|
|
53
|
+
* Update rubocop-rspec to `1.42.0`.
|
|
54
|
+
|
|
55
|
+
* Setup `no_braces` rule for `Style/HashAsLastArrayItem` cop which added in the rubocop version `0.88`.
|
|
56
|
+
|
|
57
|
+
## 0.9.0 (2020-05-27)
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
* **(Breaking)** Drop support for Ruby 2.3. ([@r.dubrovsky][])
|
|
62
|
+
|
|
63
|
+
* Update rubocop to `0.84.0`. ([@r.dubrovsky][])
|
|
64
|
+
* Enable new cops `Lint/RaiseException` and `Lint/StructNewOverride`. Cops were added in version `0.81`.
|
|
65
|
+
* Enable new cops `Layout/SpaceAroundMethodCallOperator` and `Style/ExponentialNotation`. Cops were added in version `0.82`.
|
|
66
|
+
* Enable new cops `Layout/EmptyLinesAroundAttributeAccessor` and `Style/SlicingWithRange`. Cops were added in version `0.83`.
|
|
67
|
+
* Enable new cop `Lint/DeprecatedOpenSSLConstant`. Cop was added in version `0.84`.
|
|
68
|
+
|
|
69
|
+
* Update rubocop-rails to `2.5.2`.
|
|
70
|
+
* Update rubocop-rspec to `1.39`.
|
|
71
|
+
* Update `activesupport` for fixing security issues.
|
|
6
72
|
|
|
7
73
|
## 0.8.1 (2020-03-02)
|
|
8
74
|
|
|
@@ -155,4 +221,4 @@ The format is described in [Contributing notes](CONTRIBUTING.md#changelog-entry-
|
|
|
155
221
|
[@v.kuzmik]: https://github.com/TheBlackArroVV/
|
|
156
222
|
[@a.branzeanu]: https://github.com/texpert
|
|
157
223
|
[@nikitasakov]: https://github.com/nikitasakov
|
|
158
|
-
|
|
224
|
+
[@paydaylight]: https://github.com/paydaylight
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,61 +1,79 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
datarockets-style (
|
|
5
|
-
rubocop (
|
|
6
|
-
rubocop-rails (
|
|
7
|
-
rubocop-rspec (~>
|
|
4
|
+
datarockets-style (1.1.0)
|
|
5
|
+
rubocop (>= 1.2, < 2.0)
|
|
6
|
+
rubocop-rails (>= 2.8.0, < 2.10.0)
|
|
7
|
+
rubocop-rspec (~> 2.0)
|
|
8
8
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
activesupport (6.1.1)
|
|
13
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
14
|
+
i18n (>= 1.6, < 2)
|
|
15
|
+
minitest (>= 5.1)
|
|
16
|
+
tzinfo (~> 2.0)
|
|
17
|
+
zeitwerk (~> 2.3)
|
|
18
|
+
ast (2.4.2)
|
|
19
|
+
byebug (11.1.3)
|
|
14
20
|
coderay (1.1.2)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
pry
|
|
21
|
+
concurrent-ruby (1.1.7)
|
|
22
|
+
diff-lcs (1.4.4)
|
|
23
|
+
i18n (1.8.7)
|
|
24
|
+
concurrent-ruby (~> 1.0)
|
|
25
|
+
method_source (1.0.0)
|
|
26
|
+
minitest (5.14.3)
|
|
27
|
+
parallel (1.20.1)
|
|
28
|
+
parser (3.0.0.0)
|
|
29
|
+
ast (~> 2.4.1)
|
|
30
|
+
pry (0.13.1)
|
|
31
|
+
coderay (~> 1.1)
|
|
32
|
+
method_source (~> 1.0)
|
|
33
|
+
pry-byebug (3.9.0)
|
|
25
34
|
byebug (~> 11.0)
|
|
26
|
-
pry (~> 0.
|
|
27
|
-
rack (2.2.
|
|
35
|
+
pry (~> 0.13.0)
|
|
36
|
+
rack (2.2.3)
|
|
28
37
|
rainbow (3.0.0)
|
|
29
|
-
rake (13.0.
|
|
38
|
+
rake (13.0.3)
|
|
39
|
+
regexp_parser (2.0.3)
|
|
30
40
|
rexml (3.2.4)
|
|
31
|
-
rspec (3.
|
|
32
|
-
rspec-core (~> 3.
|
|
33
|
-
rspec-expectations (~> 3.
|
|
34
|
-
rspec-mocks (~> 3.
|
|
35
|
-
rspec-core (3.
|
|
36
|
-
rspec-support (~> 3.
|
|
37
|
-
rspec-expectations (3.
|
|
41
|
+
rspec (3.10.0)
|
|
42
|
+
rspec-core (~> 3.10.0)
|
|
43
|
+
rspec-expectations (~> 3.10.0)
|
|
44
|
+
rspec-mocks (~> 3.10.0)
|
|
45
|
+
rspec-core (3.10.0)
|
|
46
|
+
rspec-support (~> 3.10.0)
|
|
47
|
+
rspec-expectations (3.10.0)
|
|
38
48
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
39
|
-
rspec-support (~> 3.
|
|
40
|
-
rspec-mocks (3.
|
|
49
|
+
rspec-support (~> 3.10.0)
|
|
50
|
+
rspec-mocks (3.10.0)
|
|
41
51
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
42
|
-
rspec-support (~> 3.
|
|
43
|
-
rspec-support (3.
|
|
44
|
-
rubocop (
|
|
45
|
-
jaro_winkler (~> 1.5.1)
|
|
52
|
+
rspec-support (~> 3.10.0)
|
|
53
|
+
rspec-support (3.10.0)
|
|
54
|
+
rubocop (1.9.1)
|
|
46
55
|
parallel (~> 1.10)
|
|
47
|
-
parser (>=
|
|
56
|
+
parser (>= 3.0.0.0)
|
|
48
57
|
rainbow (>= 2.2.2, < 4.0)
|
|
58
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
49
59
|
rexml
|
|
60
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
|
50
61
|
ruby-progressbar (~> 1.7)
|
|
51
|
-
unicode-display_width (>= 1.4.0, <
|
|
52
|
-
rubocop-
|
|
62
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
63
|
+
rubocop-ast (1.4.1)
|
|
64
|
+
parser (>= 2.7.1.5)
|
|
65
|
+
rubocop-rails (2.9.1)
|
|
66
|
+
activesupport (>= 4.2.0)
|
|
53
67
|
rack (>= 1.1)
|
|
54
|
-
rubocop (>= 0.
|
|
55
|
-
rubocop-rspec (1.
|
|
56
|
-
rubocop (
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
rubocop (>= 0.90.0, < 2.0)
|
|
69
|
+
rubocop-rspec (2.1.0)
|
|
70
|
+
rubocop (~> 1.0)
|
|
71
|
+
rubocop-ast (>= 1.1.0)
|
|
72
|
+
ruby-progressbar (1.11.0)
|
|
73
|
+
tzinfo (2.0.4)
|
|
74
|
+
concurrent-ruby (~> 1.0)
|
|
75
|
+
unicode-display_width (2.0.0)
|
|
76
|
+
zeitwerk (2.4.2)
|
|
59
77
|
|
|
60
78
|
PLATFORMS
|
|
61
79
|
ruby
|
|
@@ -64,7 +82,7 @@ DEPENDENCIES
|
|
|
64
82
|
datarockets-style!
|
|
65
83
|
pry-byebug
|
|
66
84
|
rake (~> 13.0)
|
|
67
|
-
rspec (~> 3.
|
|
85
|
+
rspec (~> 3.10)
|
|
68
86
|
|
|
69
87
|
BUNDLED WITH
|
|
70
|
-
1.
|
|
88
|
+
2.1.4
|
data/README.md
CHANGED
|
@@ -10,14 +10,14 @@ Add this line to your application's Gemfile:
|
|
|
10
10
|
|
|
11
11
|
```ruby
|
|
12
12
|
group :test, :development do
|
|
13
|
-
gem 'datarockets-style'
|
|
13
|
+
gem 'datarockets-style', '~> 1.0.0'
|
|
14
14
|
end
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Or, for a Ruby library, add this to your gemspec:
|
|
18
18
|
|
|
19
19
|
```ruby
|
|
20
|
-
spec.add_development_dependency 'datarockets-style'
|
|
20
|
+
spec.add_development_dependency 'datarockets-style', '~> 1.0.0'
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
And then execute:
|
data/RELEASING.md
CHANGED
|
@@ -15,3 +15,19 @@ gem push *built_file*
|
|
|
15
15
|
* Announce the new release,
|
|
16
16
|
making sure to say "thank you" to the contributors
|
|
17
17
|
who helped shape this version!
|
|
18
|
+
|
|
19
|
+
## Versioning stragety
|
|
20
|
+
|
|
21
|
+
As versioning strategy, we're using SemVer: `MAJOR.MINOR.PATCH`
|
|
22
|
+
|
|
23
|
+
A `MAJOR` version must be incremented if there are any backward-incompatible breaking changes included in a release. This has the benefit of making it easy for anyone to quickly identify if a new version will work differently than a previous one.
|
|
24
|
+
|
|
25
|
+
Usually, we'll increment it on updating major versions of rubocop dependencies. Ideally, it should be synchronized with the major verion of `rubocop`.
|
|
26
|
+
|
|
27
|
+
The `MINOR` version must be incremented if backward-compatible functionality is introduced. In the strictest sense, this means you should be able to upgrade to a new minor version without experiencing any breaking changes.
|
|
28
|
+
|
|
29
|
+
Usually, we'll increment it on changing the list of cops, updating minor versions of dependencies.
|
|
30
|
+
|
|
31
|
+
The `PATCH` version is meant for backward-compatible bug fixes. You should expect no new functionality with a new patch version, only improvements.
|
|
32
|
+
|
|
33
|
+
Usually, we'll use it for updating patch versions of dependencies or fixing bugs of the last version. Changed rules of cops in most cases should be added to minor version.
|
data/bin/console
CHANGED
data/config/base.yml
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
require:
|
|
1
|
+
require: datarockets_style
|
|
2
|
+
|
|
3
|
+
AllCops:
|
|
4
|
+
NewCops: enable
|
|
2
5
|
|
|
3
6
|
Bundler/DuplicatedGem:
|
|
4
7
|
Enabled: true
|
|
@@ -29,6 +32,9 @@ Layout/ParameterAlignment:
|
|
|
29
32
|
EnforcedStyle: with_fixed_indentation
|
|
30
33
|
IndentationWidth: 2
|
|
31
34
|
|
|
35
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
|
36
|
+
Enabled: true
|
|
37
|
+
|
|
32
38
|
Layout/EndAlignment:
|
|
33
39
|
EnforcedStyleAlignWith: variable
|
|
34
40
|
|
|
@@ -44,25 +50,101 @@ Layout/FirstHashElementIndentation:
|
|
|
44
50
|
Layout/MultilineMethodCallIndentation:
|
|
45
51
|
EnforcedStyle: indented
|
|
46
52
|
|
|
53
|
+
Layout/MultilineOperationIndentation:
|
|
54
|
+
EnforcedStyle: indented
|
|
55
|
+
|
|
56
|
+
Layout/SpaceAroundMethodCallOperator:
|
|
57
|
+
Enabled: true
|
|
58
|
+
|
|
47
59
|
Layout/SpaceInsideHashLiteralBraces:
|
|
48
60
|
EnforcedStyle: no_space
|
|
49
61
|
EnforcedStyleForEmptyBraces: no_space
|
|
50
62
|
|
|
63
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
|
64
|
+
Enabled: true
|
|
65
|
+
|
|
66
|
+
Lint/DeprecatedOpenSSLConstant:
|
|
67
|
+
Enabled: true
|
|
68
|
+
|
|
69
|
+
Lint/DuplicateElsifCondition:
|
|
70
|
+
Enabled: true
|
|
71
|
+
|
|
72
|
+
Lint/DuplicateRescueException:
|
|
73
|
+
Enabled: true
|
|
74
|
+
|
|
75
|
+
Lint/EmptyConditionalBody:
|
|
76
|
+
Enabled: true
|
|
77
|
+
|
|
78
|
+
Lint/FloatComparison:
|
|
79
|
+
Enabled: true
|
|
80
|
+
|
|
81
|
+
Lint/MissingSuper:
|
|
82
|
+
Enabled: true
|
|
83
|
+
|
|
84
|
+
Lint/MixedRegexpCaptureTypes:
|
|
85
|
+
Enabled: true
|
|
86
|
+
|
|
87
|
+
Lint/OutOfRangeRegexpRef:
|
|
88
|
+
Enabled: true
|
|
89
|
+
|
|
90
|
+
Lint/RaiseException:
|
|
91
|
+
Enabled: true
|
|
92
|
+
|
|
93
|
+
Lint/SelfAssignment:
|
|
94
|
+
Enabled: true
|
|
95
|
+
|
|
96
|
+
Lint/StructNewOverride:
|
|
97
|
+
Enabled: true
|
|
98
|
+
|
|
99
|
+
Lint/TopLevelReturnWithArgument:
|
|
100
|
+
Enabled: true
|
|
101
|
+
|
|
102
|
+
Lint/UnreachableLoop:
|
|
103
|
+
Enabled: true
|
|
104
|
+
|
|
51
105
|
Naming/MemoizedInstanceVariableName:
|
|
52
106
|
EnforcedStyleForLeadingUnderscores: required
|
|
53
107
|
|
|
54
108
|
Naming/RescuedExceptionsVariableName:
|
|
55
109
|
PreferredName: error
|
|
56
110
|
|
|
111
|
+
Style/AccessorGrouping:
|
|
112
|
+
Enabled: true
|
|
113
|
+
|
|
114
|
+
Style/ArrayCoercion:
|
|
115
|
+
Enabled: true
|
|
116
|
+
|
|
117
|
+
Style/BisectedAttrAccessor:
|
|
118
|
+
Enabled: true
|
|
119
|
+
|
|
120
|
+
Style/CaseLikeIf:
|
|
121
|
+
Enabled: true
|
|
122
|
+
|
|
57
123
|
Style/ClassAndModuleChildren:
|
|
58
124
|
EnforcedStyle: nested
|
|
59
125
|
|
|
60
126
|
Style/EmptyMethod:
|
|
61
127
|
EnforcedStyle: expanded
|
|
62
128
|
|
|
129
|
+
Style/ExplicitBlockArgument:
|
|
130
|
+
Enabled: true
|
|
131
|
+
|
|
132
|
+
Style/ExponentialNotation:
|
|
133
|
+
Enabled: true
|
|
134
|
+
|
|
135
|
+
Style/GlobalStdStream:
|
|
136
|
+
Enabled: true
|
|
137
|
+
|
|
138
|
+
Style/HashAsLastArrayItem:
|
|
139
|
+
Enabled: true
|
|
140
|
+
EnforcedStyle: no_braces
|
|
141
|
+
|
|
63
142
|
Style/HashEachMethods:
|
|
64
143
|
Enabled: true
|
|
65
144
|
|
|
145
|
+
Style/HashLikeCase:
|
|
146
|
+
Enabled: true
|
|
147
|
+
|
|
66
148
|
Style/HashTransformKeys:
|
|
67
149
|
Enabled: true
|
|
68
150
|
|
|
@@ -75,5 +157,38 @@ Style/FrozenStringLiteralComment:
|
|
|
75
157
|
Style/NestedInterpolation:
|
|
76
158
|
Enabled: true
|
|
77
159
|
|
|
160
|
+
Style/OptionalBooleanParameter:
|
|
161
|
+
Enabled: true
|
|
162
|
+
|
|
163
|
+
Style/RedundantAssignment:
|
|
164
|
+
Enabled: true
|
|
165
|
+
|
|
166
|
+
Style/RedundantFetchBlock:
|
|
167
|
+
Enabled: true
|
|
168
|
+
|
|
169
|
+
Style/RedundantFileExtensionInRequire:
|
|
170
|
+
Enabled: true
|
|
171
|
+
|
|
172
|
+
Style/RedundantRegexpCharacterClass:
|
|
173
|
+
Enabled: true
|
|
174
|
+
|
|
175
|
+
Style/RedundantRegexpEscape:
|
|
176
|
+
Enabled: true
|
|
177
|
+
|
|
178
|
+
Style/SingleArgumentDig:
|
|
179
|
+
Enabled: true
|
|
180
|
+
|
|
181
|
+
Style/SlicingWithRange:
|
|
182
|
+
Enabled: true
|
|
183
|
+
|
|
184
|
+
Style/SoleNestedConditional:
|
|
185
|
+
Enabled: true
|
|
186
|
+
|
|
187
|
+
Style/StringConcatenation:
|
|
188
|
+
Enabled: true
|
|
189
|
+
|
|
78
190
|
Style/StringLiterals:
|
|
79
191
|
EnforcedStyle: double_quotes
|
|
192
|
+
|
|
193
|
+
Style/TrailingCommaInHashLiteral:
|
|
194
|
+
EnforcedStyleForMultiline: comma
|
data/config/rails.yml
CHANGED
data/config/rspec.yml
CHANGED
data/datarockets-style.gemspec
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
lib = File.expand_path("lib", __dir__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require "
|
|
3
|
+
require "datarockets_style/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = "datarockets-style"
|
|
7
|
-
spec.version =
|
|
7
|
+
spec.version = DatarocketsStyle::VERSION
|
|
8
8
|
spec.authors = ["Roman Dubrovsky"]
|
|
9
9
|
spec.email = ["r.dubrovsky@datarockets.com"]
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.homepage = "https://github.com/datarockets/datarockets-style"
|
|
13
13
|
spec.license = "MIT"
|
|
14
14
|
|
|
15
|
-
spec.required_ruby_version = ">= 2.
|
|
15
|
+
spec.required_ruby_version = ">= 2.4.0"
|
|
16
16
|
|
|
17
17
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
18
18
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
31
31
|
spec.require_paths = ["lib"]
|
|
32
32
|
|
|
33
|
-
spec.add_dependency "rubocop", "
|
|
34
|
-
spec.add_dependency "rubocop-rails", "
|
|
35
|
-
spec.add_dependency "rubocop-rspec", "~>
|
|
33
|
+
spec.add_dependency "rubocop", ">= 1.2 ", "< 2.0"
|
|
34
|
+
spec.add_dependency "rubocop-rails", ">= 2.8.0", "< 2.10.0"
|
|
35
|
+
spec.add_dependency "rubocop-rspec", "~> 2.0"
|
|
36
36
|
end
|
data/doc/STYLE_GUIDE.md
CHANGED
|
@@ -392,6 +392,46 @@ def foo
|
|
|
392
392
|
end
|
|
393
393
|
```
|
|
394
394
|
|
|
395
|
+
* <a name="style-trailing-comma-in-hash-literal"></a>
|
|
396
|
+
Requires a comma after the last item in a hash.
|
|
397
|
+
<sup>[[link](#style-trailing-comma-in-hash-literal)]</sup>
|
|
398
|
+
|
|
399
|
+
```ruby
|
|
400
|
+
# bad
|
|
401
|
+
a = { foo: 1, bar: 2, }
|
|
402
|
+
|
|
403
|
+
# good
|
|
404
|
+
a = { foo: 1, bar: 2 }
|
|
405
|
+
|
|
406
|
+
# bad
|
|
407
|
+
a = {
|
|
408
|
+
foo: 1, bar: 2,
|
|
409
|
+
qux: 3,
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
# good
|
|
413
|
+
a = {
|
|
414
|
+
foo: 1, bar: 2,
|
|
415
|
+
qux: 3
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
# bad
|
|
419
|
+
a = {
|
|
420
|
+
foo: 1, bar: 2, qux: 3,
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
# good
|
|
424
|
+
a = {
|
|
425
|
+
foo: 1, bar: 2, qux: 3
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
# good
|
|
429
|
+
a = {
|
|
430
|
+
foo: 1,
|
|
431
|
+
bar: 2,
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
395
435
|
* <a name="style-magic-link"></a>
|
|
396
436
|
There are not any required rules for `frozen_string_literal` magic url.
|
|
397
437
|
Set up [this cop](https://rubocop.readthedocs.io/en/latest/cops_style/#stylefrozenstringliteralcomment) depends on the project.
|
data/doc/STYLE_GUIDE_RSPEC.md
CHANGED
|
@@ -15,6 +15,10 @@ This style guide recommends best practices for writing a clear Rspec tests and e
|
|
|
15
15
|
So there are not any limits for deep or nested groups.
|
|
16
16
|
<sup>[[link](#rspec-nested-groups)]</sup>
|
|
17
17
|
|
|
18
|
+
* <a name="rspec-let-count"></a>
|
|
19
|
+
We're not limiting a number of `let` blocks in describe and context blocks.
|
|
20
|
+
<sup>[[link](#rspec-let-count)]</sup>
|
|
21
|
+
|
|
18
22
|
* <a name="rspec-subject"></a>
|
|
19
23
|
Each subject should be named, and we should not use `subject` in our test cases.
|
|
20
24
|
Prefer to use `is_expected` that `expect(subject_name)` for small tests.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require "rubocop"
|
|
2
|
+
require "datarockets_style/formatter/todo_list_formatter"
|
|
3
|
+
|
|
4
|
+
require "datarockets_style/version"
|
|
5
|
+
|
|
6
|
+
require "datarockets_style/cop/layout/array_alignment_extended"
|
|
7
|
+
require "datarockets_style/cop/style/nested_interpolation"
|
|
8
|
+
|
|
9
|
+
# Top level module for datarockets-style
|
|
10
|
+
module DatarocketsStyle
|
|
11
|
+
# Datarickors sharable config
|
|
12
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DatarocketsStyle
|
|
4
|
+
module Cop
|
|
5
|
+
module Layout
|
|
6
|
+
# Here we check if the elements of a multi-line array literal are
|
|
7
|
+
# aligned.
|
|
8
|
+
#
|
|
9
|
+
# @example EnforcedStyle: with_first_argument (default)
|
|
10
|
+
# # good
|
|
11
|
+
#
|
|
12
|
+
# array = [1, 2, 3,
|
|
13
|
+
# 4, 5, 6]
|
|
14
|
+
# array = ['run',
|
|
15
|
+
# 'forrest',
|
|
16
|
+
# 'run']
|
|
17
|
+
#
|
|
18
|
+
# # bad
|
|
19
|
+
#
|
|
20
|
+
# array = [1, 2, 3,
|
|
21
|
+
# 4, 5, 6]
|
|
22
|
+
# array = ['run',
|
|
23
|
+
# 'forrest',
|
|
24
|
+
# 'run']
|
|
25
|
+
#
|
|
26
|
+
# @example EnforcedStyle: with_fixed_indentation
|
|
27
|
+
# # good
|
|
28
|
+
#
|
|
29
|
+
# array = [1, 2, 3,
|
|
30
|
+
# 4, 5, 6]
|
|
31
|
+
#
|
|
32
|
+
# # bad
|
|
33
|
+
#
|
|
34
|
+
# array = [1, 2, 3,
|
|
35
|
+
# 4, 5, 6]
|
|
36
|
+
class ArrayAlignmentExtended < RuboCop::Cop::Cop
|
|
37
|
+
include RuboCop::Cop::Alignment
|
|
38
|
+
|
|
39
|
+
ALIGN_PARAMS_MSG = "Align the elements of an array literal if they span more than one line."
|
|
40
|
+
|
|
41
|
+
FIXED_INDENT_MSG = "Use one level of indentation for elements " \
|
|
42
|
+
"following the first line of a multi-line array."
|
|
43
|
+
|
|
44
|
+
def on_array(node)
|
|
45
|
+
return if node.children.size < 2
|
|
46
|
+
|
|
47
|
+
check_alignment(node.children, base_column(node, node.children))
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def autocorrect(node)
|
|
51
|
+
RuboCop::Cop::AlignmentCorrector.correct(processed_source, node, column_delta)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def message(_node)
|
|
57
|
+
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def fixed_indentation?
|
|
61
|
+
cop_config["EnforcedStyle"] == "with_fixed_indentation"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def base_column(node, args)
|
|
65
|
+
fixed_indentation? ? line_indentation(node) : display_column(args.first.source_range)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def line_indentation(node)
|
|
69
|
+
lineno = target_method_lineno(node)
|
|
70
|
+
line = node.source_range.source_buffer.source_line(lineno)
|
|
71
|
+
line_indentation = /\S.*/.match(line).begin(0)
|
|
72
|
+
line_indentation + configured_indentation_width
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def target_method_lineno(node)
|
|
76
|
+
node.loc.line
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module DatarocketsStyle
|
|
2
|
+
module Cop
|
|
3
|
+
module Style
|
|
4
|
+
# This cop checks nested interpolations
|
|
5
|
+
#
|
|
6
|
+
# @example
|
|
7
|
+
#
|
|
8
|
+
# # bad
|
|
9
|
+
# "Hello, #{user.blank? ? 'guest' : "dear #{user.name}"}"
|
|
10
|
+
#
|
|
11
|
+
# # good
|
|
12
|
+
# user_name = user.blank? ? 'guest' : "dear #{user.name}"
|
|
13
|
+
# "Hello, #{user_name}"
|
|
14
|
+
class NestedInterpolation < RuboCop::Cop::Cop
|
|
15
|
+
include RuboCop::Cop::Interpolation
|
|
16
|
+
|
|
17
|
+
MSG = "Redundant nested interpolation.".freeze
|
|
18
|
+
|
|
19
|
+
def on_interpolation(node)
|
|
20
|
+
node.each_descendant(:dstr) do |descendant_node|
|
|
21
|
+
detect_double_interpolation(descendant_node)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def detect_double_interpolation(node)
|
|
28
|
+
node.each_child_node(:begin) do |begin_node|
|
|
29
|
+
add_offense(begin_node)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -42,9 +42,10 @@ class TodoListFormatter < RuboCop::Formatter::ProgressFormatter
|
|
|
42
42
|
def finished(inspected_files)
|
|
43
43
|
report_summary(inspected_files.length,
|
|
44
44
|
@total_offense_count,
|
|
45
|
-
@total_correction_count
|
|
45
|
+
@total_correction_count,
|
|
46
|
+
@total_correctable_count)
|
|
46
47
|
output.puts
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
DatarocketsStyle::Formatter::TodoListFormatter::ReportSummary.new(offense_list).call(output)
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module DatarocketsStyle
|
|
2
|
+
module Formatter
|
|
3
|
+
module TodoListFormatter
|
|
4
|
+
# Get file of pairs: file path and cop name - and prepare report for ToDo list formatter.
|
|
5
|
+
#
|
|
6
|
+
# Example of result:
|
|
7
|
+
#
|
|
8
|
+
# LineLength
|
|
9
|
+
# Exclude:
|
|
10
|
+
# - "really/bad/file.rb" # 100500
|
|
11
|
+
# - "almost/ok.rb" # 1
|
|
12
|
+
class ReportSummary
|
|
13
|
+
attr_reader :offense_list
|
|
14
|
+
|
|
15
|
+
FileGroup = Struct.new(:file, :offenses_count) do
|
|
16
|
+
def print(output)
|
|
17
|
+
output.puts " - '#{file}' # #{offenses_count}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
OffenseGroup = Struct.new(:cop_name, :offenses) do
|
|
22
|
+
def file_groups
|
|
23
|
+
@_file_groups ||= offenses.group_by(&:file_path).map do |file, offenses|
|
|
24
|
+
FileGroup.new(file, offenses.length)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def print(output)
|
|
29
|
+
output.puts("#{cop_name}:")
|
|
30
|
+
output.puts(" Exclude:")
|
|
31
|
+
file_groups.sort_by(&:file).each do |file_group|
|
|
32
|
+
file_group.print(output)
|
|
33
|
+
end
|
|
34
|
+
output.puts
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def initialize(offense_list)
|
|
39
|
+
@offense_list = offense_list
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def call(output)
|
|
43
|
+
offense_groups.sort_by(&:cop_name).each { |group| group.print(output) }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def offense_groups
|
|
49
|
+
@_offense_groups ||= offense_list.group_by(&:cop_name)
|
|
50
|
+
.map { |cop_name, offenses| OffenseGroup.new(cop_name, offenses) }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
metadata
CHANGED
|
@@ -1,57 +1,69 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datarockets-style
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Roman Dubrovsky
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-02-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rubocop
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.2'
|
|
20
|
+
- - "<"
|
|
18
21
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0
|
|
22
|
+
version: '2.0'
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '1.2'
|
|
30
|
+
- - "<"
|
|
25
31
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0
|
|
32
|
+
version: '2.0'
|
|
27
33
|
- !ruby/object:Gem::Dependency
|
|
28
34
|
name: rubocop-rails
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
30
36
|
requirements:
|
|
31
|
-
- - "
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 2.8.0
|
|
40
|
+
- - "<"
|
|
32
41
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
42
|
+
version: 2.10.0
|
|
34
43
|
type: :runtime
|
|
35
44
|
prerelease: false
|
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
46
|
requirements:
|
|
38
|
-
- - "
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: 2.8.0
|
|
50
|
+
- - "<"
|
|
39
51
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
52
|
+
version: 2.10.0
|
|
41
53
|
- !ruby/object:Gem::Dependency
|
|
42
54
|
name: rubocop-rspec
|
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
|
44
56
|
requirements:
|
|
45
57
|
- - "~>"
|
|
46
58
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
59
|
+
version: '2.0'
|
|
48
60
|
type: :runtime
|
|
49
61
|
prerelease: false
|
|
50
62
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
63
|
requirements:
|
|
52
64
|
- - "~>"
|
|
53
65
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
66
|
+
version: '2.0'
|
|
55
67
|
description:
|
|
56
68
|
email:
|
|
57
69
|
- r.dubrovsky@datarockets.com
|
|
@@ -86,12 +98,12 @@ files:
|
|
|
86
98
|
- doc/STYLE_GUIDE.md
|
|
87
99
|
- doc/STYLE_GUIDE_RAILS.md
|
|
88
100
|
- doc/STYLE_GUIDE_RSPEC.md
|
|
89
|
-
- lib/
|
|
90
|
-
- lib/
|
|
91
|
-
- lib/
|
|
92
|
-
- lib/
|
|
93
|
-
- lib/
|
|
94
|
-
- lib/
|
|
101
|
+
- lib/datarockets_style.rb
|
|
102
|
+
- lib/datarockets_style/cop/layout/array_alignment_extended.rb
|
|
103
|
+
- lib/datarockets_style/cop/style/nested_interpolation.rb
|
|
104
|
+
- lib/datarockets_style/formatter/todo_list_formatter.rb
|
|
105
|
+
- lib/datarockets_style/formatter/todo_list_formatter/report_summary.rb
|
|
106
|
+
- lib/datarockets_style/version.rb
|
|
95
107
|
- manual/cops_layout.md
|
|
96
108
|
homepage: https://github.com/datarockets/datarockets-style
|
|
97
109
|
licenses:
|
|
@@ -106,15 +118,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
106
118
|
requirements:
|
|
107
119
|
- - ">="
|
|
108
120
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 2.
|
|
121
|
+
version: 2.4.0
|
|
110
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
123
|
requirements:
|
|
112
124
|
- - ">="
|
|
113
125
|
- !ruby/object:Gem::Version
|
|
114
126
|
version: '0'
|
|
115
127
|
requirements: []
|
|
116
|
-
|
|
117
|
-
rubygems_version: 2.6.14
|
|
128
|
+
rubygems_version: 3.2.5
|
|
118
129
|
signing_key:
|
|
119
130
|
specification_version: 4
|
|
120
131
|
summary: Datarockets style guides and shared style configs
|
data/lib/datarockets/style.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require "rubocop"
|
|
2
|
-
require "datarockets/style/formatter/todo_list_formatter"
|
|
3
|
-
|
|
4
|
-
require "datarockets/style/version"
|
|
5
|
-
|
|
6
|
-
require "datarockets/style/cop/layout/array_alignment_extended"
|
|
7
|
-
require "datarockets/style/cop/style/nested_interpolation"
|
|
8
|
-
|
|
9
|
-
module Datarockets
|
|
10
|
-
# Datarickors sharable config
|
|
11
|
-
module Style
|
|
12
|
-
# Your code goes here...
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Datarockets
|
|
4
|
-
module Style
|
|
5
|
-
module Cop
|
|
6
|
-
module Layout
|
|
7
|
-
# Here we check if the elements of a multi-line array literal are
|
|
8
|
-
# aligned.
|
|
9
|
-
#
|
|
10
|
-
# @example EnforcedStyle: with_first_argument (default)
|
|
11
|
-
# # good
|
|
12
|
-
#
|
|
13
|
-
# array = [1, 2, 3,
|
|
14
|
-
# 4, 5, 6]
|
|
15
|
-
# array = ['run',
|
|
16
|
-
# 'forrest',
|
|
17
|
-
# 'run']
|
|
18
|
-
#
|
|
19
|
-
# # bad
|
|
20
|
-
#
|
|
21
|
-
# array = [1, 2, 3,
|
|
22
|
-
# 4, 5, 6]
|
|
23
|
-
# array = ['run',
|
|
24
|
-
# 'forrest',
|
|
25
|
-
# 'run']
|
|
26
|
-
#
|
|
27
|
-
# @example EnforcedStyle: with_fixed_indentation
|
|
28
|
-
# # good
|
|
29
|
-
#
|
|
30
|
-
# array = [1, 2, 3,
|
|
31
|
-
# 4, 5, 6]
|
|
32
|
-
#
|
|
33
|
-
# # bad
|
|
34
|
-
#
|
|
35
|
-
# array = [1, 2, 3,
|
|
36
|
-
# 4, 5, 6]
|
|
37
|
-
class ArrayAlignmentExtended < RuboCop::Cop::Cop
|
|
38
|
-
include RuboCop::Cop::Alignment
|
|
39
|
-
|
|
40
|
-
ALIGN_PARAMS_MSG = "Align the elements of an array literal if they span more than one line."
|
|
41
|
-
|
|
42
|
-
FIXED_INDENT_MSG = "Use one level of indentation for elements " \
|
|
43
|
-
"following the first line of a multi-line array."
|
|
44
|
-
|
|
45
|
-
def on_array(node)
|
|
46
|
-
return if node.children.size < 2
|
|
47
|
-
|
|
48
|
-
check_alignment(node.children, base_column(node, node.children))
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def autocorrect(node)
|
|
52
|
-
RuboCop::Cop::AlignmentCorrector.correct(processed_source, node, column_delta)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
def message(_node)
|
|
58
|
-
fixed_indentation? ? FIXED_INDENT_MSG : ALIGN_PARAMS_MSG
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def fixed_indentation?
|
|
62
|
-
cop_config["EnforcedStyle"] == "with_fixed_indentation"
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def base_column(node, args)
|
|
66
|
-
fixed_indentation? ? line_indentation(node) : display_column(args.first.source_range)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def line_indentation(node)
|
|
70
|
-
lineno = target_method_lineno(node)
|
|
71
|
-
line = node.source_range.source_buffer.source_line(lineno)
|
|
72
|
-
line_indentation = /\S.*/.match(line).begin(0)
|
|
73
|
-
line_indentation + configured_indentation_width
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def target_method_lineno(node)
|
|
77
|
-
node.loc.line
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module Datarockets
|
|
2
|
-
module Style
|
|
3
|
-
module Cop
|
|
4
|
-
module Style
|
|
5
|
-
# This cop checks nested interpolations
|
|
6
|
-
#
|
|
7
|
-
# @example
|
|
8
|
-
#
|
|
9
|
-
# # bad
|
|
10
|
-
# "Hello, #{user.blank? ? 'guest' : "dear #{user.name}"}"
|
|
11
|
-
#
|
|
12
|
-
# # good
|
|
13
|
-
# user_name = user.blank? ? 'guest' : "dear #{user.name}"
|
|
14
|
-
# "Hello, #{user_name}"
|
|
15
|
-
class NestedInterpolation < RuboCop::Cop::Cop
|
|
16
|
-
include RuboCop::Cop::Interpolation
|
|
17
|
-
|
|
18
|
-
MSG = "Redundant nested interpolation.".freeze
|
|
19
|
-
|
|
20
|
-
def on_interpolation(node)
|
|
21
|
-
node.each_descendant(:dstr) do |descendant_node|
|
|
22
|
-
detect_double_interpolation(descendant_node)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def detect_double_interpolation(node)
|
|
29
|
-
node.each_child_node(:begin) do |begin_node|
|
|
30
|
-
add_offense(begin_node)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
module Datarockets
|
|
2
|
-
module Style
|
|
3
|
-
module Formatter
|
|
4
|
-
module TodoListFormatter
|
|
5
|
-
# Get file of pairs: file path and cop name - and prepare report for ToDo list formatter.
|
|
6
|
-
#
|
|
7
|
-
# Example of result:
|
|
8
|
-
#
|
|
9
|
-
# LineLength
|
|
10
|
-
# Exclude:
|
|
11
|
-
# - "really/bad/file.rb" # 100500
|
|
12
|
-
# - "almost/ok.rb" # 1
|
|
13
|
-
class ReportSummary
|
|
14
|
-
attr_reader :offense_list
|
|
15
|
-
|
|
16
|
-
FileGroup = Struct.new(:file, :count) do
|
|
17
|
-
def print(output)
|
|
18
|
-
output.puts " - '#{file}' # #{count}"
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
OffenseGroup = Struct.new(:cop_name, :offenses) do
|
|
23
|
-
def file_groups
|
|
24
|
-
@_file_groups ||= offenses.group_by(&:file_path).map do |file, offenses|
|
|
25
|
-
FileGroup.new(file, offenses.length)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def print(output)
|
|
30
|
-
output.puts(cop_name + ":")
|
|
31
|
-
output.puts(" Exclude:")
|
|
32
|
-
file_groups.sort_by(&:file).each do |file_group|
|
|
33
|
-
file_group.print(output)
|
|
34
|
-
end
|
|
35
|
-
output.puts
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def initialize(offense_list)
|
|
40
|
-
@offense_list = offense_list
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def call(output)
|
|
44
|
-
offense_groups.sort_by(&:cop_name).each { |group| group.print(output) }
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
def offense_groups
|
|
50
|
-
@_offense_groups ||= offense_list.group_by(&:cop_name)
|
|
51
|
-
.map { |cop_name, offenses| OffenseGroup.new(cop_name, offenses) }
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|