rubocop 1.57.2 → 1.62.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/assets/output.css.erb +159 -0
- data/assets/output.html.erb +1 -160
- data/config/default.yml +87 -15
- data/lib/rubocop/cli/command/auto_generate_config.rb +12 -3
- data/lib/rubocop/cli/command/lsp.rb +2 -2
- data/lib/rubocop/cli.rb +6 -1
- data/lib/rubocop/config.rb +4 -2
- data/lib/rubocop/config_finder.rb +12 -2
- data/lib/rubocop/config_loader.rb +0 -1
- data/lib/rubocop/config_obsoletion.rb +11 -8
- data/lib/rubocop/config_validator.rb +14 -7
- data/lib/rubocop/cop/autocorrect_logic.rb +6 -1
- data/lib/rubocop/cop/base.rb +17 -2
- data/lib/rubocop/cop/bundler/gem_comment.rb +2 -2
- data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -8
- data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +5 -13
- data/lib/rubocop/cop/exclude_limit.rb +1 -1
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +2 -2
- data/lib/rubocop/cop/gemspec/required_ruby_version.rb +5 -1
- data/lib/rubocop/cop/internal_affairs/example_description.rb +4 -4
- data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +8 -6
- data/lib/rubocop/cop/internal_affairs/method_name_equal.rb +19 -20
- data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +53 -0
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +123 -29
- data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
- data/lib/rubocop/cop/internal_affairs.rb +2 -0
- data/lib/rubocop/cop/layout/argument_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +14 -7
- data/lib/rubocop/cop/layout/end_alignment.rb +8 -2
- data/lib/rubocop/cop/layout/extra_spacing.rb +4 -10
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +22 -7
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -2
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +1 -1
- data/lib/rubocop/cop/layout/redundant_line_break.rb +16 -3
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +4 -4
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +5 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +50 -20
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +19 -10
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -1
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +4 -4
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -2
- data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
- data/lib/rubocop/cop/lint/debugger.rb +2 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -1
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +1 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -3
- data/lib/rubocop/cop/lint/float_comparison.rb +10 -0
- data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +2 -1
- data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +56 -0
- data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +85 -0
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +6 -21
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +3 -5
- data/lib/rubocop/cop/lint/number_conversion.rb +9 -4
- data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +54 -6
- data/lib/rubocop/cop/lint/redundant_with_index.rb +3 -2
- data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
- data/lib/rubocop/cop/lint/rescue_type.rb +1 -3
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +3 -4
- data/lib/rubocop/cop/lint/script_permission.rb +3 -3
- data/lib/rubocop/cop/lint/self_assignment.rb +38 -0
- data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -0
- data/lib/rubocop/cop/lint/symbol_conversion.rb +7 -2
- data/lib/rubocop/cop/lint/syntax.rb +6 -3
- data/lib/rubocop/cop/lint/to_enum_arguments.rb +7 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +2 -2
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +2 -2
- data/lib/rubocop/cop/lint/useless_times.rb +2 -2
- data/lib/rubocop/cop/lint/void.rb +20 -2
- data/lib/rubocop/cop/metrics/abc_size.rb +3 -3
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +1 -1
- data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -0
- data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +1 -1
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
- data/lib/rubocop/cop/naming/block_forwarding.rb +12 -4
- data/lib/rubocop/cop/naming/constant_name.rb +1 -2
- data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
- data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
- data/lib/rubocop/cop/registry.rb +1 -1
- data/lib/rubocop/cop/security/open.rb +2 -2
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +2 -2
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +152 -21
- data/lib/rubocop/cop/style/array_first_last.rb +64 -0
- data/lib/rubocop/cop/style/auto_resource_cleanup.rb +21 -14
- data/lib/rubocop/cop/style/bisected_attr_accessor.rb +2 -2
- data/lib/rubocop/cop/style/case_like_if.rb +5 -5
- data/lib/rubocop/cop/style/class_check.rb +1 -0
- data/lib/rubocop/cop/style/class_vars.rb +3 -3
- data/lib/rubocop/cop/style/collection_compact.rb +18 -8
- data/lib/rubocop/cop/style/combinable_loops.rb +13 -7
- data/lib/rubocop/cop/style/commented_keyword.rb +5 -2
- data/lib/rubocop/cop/style/concat_array_literals.rb +1 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +6 -7
- data/lib/rubocop/cop/style/date_time.rb +5 -4
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +7 -7
- data/lib/rubocop/cop/style/each_with_object.rb +2 -2
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/eval_with_location.rb +3 -14
- data/lib/rubocop/cop/style/exact_regexp_match.rb +2 -1
- data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
- data/lib/rubocop/cop/style/for.rb +2 -0
- data/lib/rubocop/cop/style/hash_each_methods.rb +105 -11
- data/lib/rubocop/cop/style/hash_except.rb +2 -1
- data/lib/rubocop/cop/style/hash_syntax.rb +6 -2
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +4 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +14 -13
- data/lib/rubocop/cop/style/invertible_unless_condition.rb +44 -2
- data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +8 -10
- data/lib/rubocop/cop/style/map_to_hash.rb +17 -7
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +14 -5
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -4
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +20 -0
- data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/missing_respond_to_missing.rb +2 -2
- data/lib/rubocop/cop/style/multiline_method_signature.rb +10 -1
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +5 -3
- data/lib/rubocop/cop/style/next.rb +1 -1
- data/lib/rubocop/cop/style/nil_comparison.rb +2 -0
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/object_then.rb +5 -3
- data/lib/rubocop/cop/style/operator_method_call.rb +2 -2
- data/lib/rubocop/cop/style/parallel_assignment.rb +3 -5
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +8 -0
- data/lib/rubocop/cop/style/raise_args.rb +4 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +4 -3
- data/lib/rubocop/cop/style/redundant_assignment.rb +10 -2
- data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +4 -3
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +3 -3
- data/lib/rubocop/cop/style/redundant_each.rb +7 -4
- data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -3
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +27 -7
- data/lib/rubocop/cop/style/redundant_parentheses.rb +33 -10
- data/lib/rubocop/cop/style/redundant_return.rb +7 -1
- data/lib/rubocop/cop/style/redundant_self.rb +17 -2
- data/lib/rubocop/cop/style/redundant_sort.rb +9 -8
- data/lib/rubocop/cop/style/redundant_sort_by.rb +2 -2
- data/lib/rubocop/cop/style/redundant_string_escape.rb +1 -1
- data/lib/rubocop/cop/style/sample.rb +3 -4
- data/lib/rubocop/cop/style/select_by_regexp.rb +7 -6
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/semicolon.rb +8 -0
- data/lib/rubocop/cop/style/single_argument_dig.rb +5 -2
- data/lib/rubocop/cop/style/slicing_with_range.rb +76 -10
- data/lib/rubocop/cop/style/string_chars.rb +1 -0
- data/lib/rubocop/cop/style/strip.rb +7 -4
- data/lib/rubocop/cop/style/super_with_args_parentheses.rb +35 -0
- data/lib/rubocop/cop/style/symbol_proc.rb +36 -0
- data/lib/rubocop/cop/style/unpack_first.rb +11 -14
- data/lib/rubocop/cop/utils/regexp_ranges.rb +1 -1
- data/lib/rubocop/cops_documentation_generator.rb +15 -3
- data/lib/rubocop/directive_comment.rb +10 -8
- data/lib/rubocop/ext/regexp_node.rb +9 -4
- data/lib/rubocop/formatter/disabled_config_formatter.rb +17 -6
- data/lib/rubocop/formatter/html_formatter.rb +31 -12
- data/lib/rubocop/formatter/json_formatter.rb +0 -1
- data/lib/rubocop/formatter/offense_count_formatter.rb +12 -2
- data/lib/rubocop/formatter.rb +1 -1
- data/lib/rubocop/lsp/logger.rb +1 -1
- data/lib/rubocop/lsp/routes.rb +2 -2
- data/lib/rubocop/lsp/runtime.rb +1 -1
- data/lib/rubocop/lsp/server.rb +5 -2
- data/lib/rubocop/lsp/severity.rb +1 -1
- data/lib/rubocop/lsp.rb +29 -0
- data/lib/rubocop/magic_comment.rb +1 -1
- data/lib/rubocop/options.rb +11 -8
- data/lib/rubocop/path_util.rb +6 -2
- data/lib/rubocop/result_cache.rb +0 -1
- data/lib/rubocop/rspec/cop_helper.rb +8 -2
- data/lib/rubocop/rspec/expect_offense.rb +8 -8
- data/lib/rubocop/rspec/shared_contexts.rb +40 -15
- data/lib/rubocop/rspec/support.rb +2 -0
- data/lib/rubocop/runner.rb +10 -3
- data/lib/rubocop/server/cache.rb +1 -2
- data/lib/rubocop/server/client_command/exec.rb +0 -1
- data/lib/rubocop/server/server_command/exec.rb +0 -1
- data/lib/rubocop/target_finder.rb +84 -78
- data/lib/rubocop/target_ruby.rb +82 -80
- data/lib/rubocop/version.rb +18 -3
- data/lib/rubocop.rb +4 -0
- metadata +18 -10
- /data/lib/rubocop/formatter/{git_hub_actions_formatter.rb → github_actions_formatter.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8daa4ef7dd74b8608039d7dfda5f1e3fe739738949390a6f1347acaccf7bd1c4
|
4
|
+
data.tar.gz: 271a978db956def596a5b06a7fd69d189d807b27db0acdda03fd6200b95ef541
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 484294f43781f114ba01470b22331ef17648219e26dc4ba2f28073f609c909af2997c47e1f1aad62860124f6f4594a2e536cd793f05352a78d588f979732a290
|
7
|
+
data.tar.gz: 6a8313e61422bcd568eea747c0f9a88f61f50620b4dd4f478da0bdd3e067c1aa8bcf70e15744e02118d4c525eb0632fae3cc19caf73db6db1f63ea76dbb84b45
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<p align="center">
|
2
|
-
<img src="https://raw.githubusercontent.com/rubocop/rubocop/master/logo/rubo-logo-horizontal.png" alt="RuboCop Logo"/>
|
2
|
+
<img src="https://raw.githubusercontent.com/rubocop/rubocop/master/logo/rubo-logo-horizontal-white.png" alt="RuboCop Logo"/>
|
3
3
|
</p>
|
4
4
|
|
5
5
|
----------
|
@@ -53,7 +53,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
|
|
53
53
|
in your `Gemfile`:
|
54
54
|
|
55
55
|
```rb
|
56
|
-
gem 'rubocop', '~> 1.
|
56
|
+
gem 'rubocop', '~> 1.62', require: false
|
57
57
|
```
|
58
58
|
|
59
59
|
See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
|
@@ -67,7 +67,7 @@ $ cd my/cool/ruby/project
|
|
67
67
|
$ rubocop
|
68
68
|
```
|
69
69
|
|
70
|
-
You can also use this magic in your favorite editor with RuboCop's [built-in LSP](https://docs.rubocop.org/rubocop/usage/lsp.html).
|
70
|
+
You can also use this magic in your favorite editor with RuboCop's [built-in LSP server](https://docs.rubocop.org/rubocop/usage/lsp.html).
|
71
71
|
|
72
72
|
## Documentation
|
73
73
|
|
@@ -248,5 +248,5 @@ RuboCop's changelog is available [here](CHANGELOG.md).
|
|
248
248
|
|
249
249
|
## Copyright
|
250
250
|
|
251
|
-
Copyright (c) 2012-
|
251
|
+
Copyright (c) 2012-2024 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
|
252
252
|
further details.
|
@@ -0,0 +1,159 @@
|
|
1
|
+
* {
|
2
|
+
-webkit-box-sizing: border-box;
|
3
|
+
-moz-box-sizing: border-box;
|
4
|
+
box-sizing: border-box;
|
5
|
+
}
|
6
|
+
|
7
|
+
body, html {
|
8
|
+
font-size: 62.5%;
|
9
|
+
}
|
10
|
+
body {
|
11
|
+
background-color: #ecedf0;
|
12
|
+
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
13
|
+
margin: 0;
|
14
|
+
}
|
15
|
+
code {
|
16
|
+
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
17
|
+
font-size: 85%;
|
18
|
+
}
|
19
|
+
#header {
|
20
|
+
background: #f9f9f9;
|
21
|
+
color: #333;
|
22
|
+
border-bottom: 3px solid #ccc;
|
23
|
+
height: 50px;
|
24
|
+
padding: 0;
|
25
|
+
}
|
26
|
+
#header .logo {
|
27
|
+
float: left;
|
28
|
+
margin: 5px 12px 7px 20px;
|
29
|
+
width: 38px;
|
30
|
+
height: 38px;
|
31
|
+
}
|
32
|
+
#header .title {
|
33
|
+
display: inline-block;
|
34
|
+
float: left;
|
35
|
+
height: 50px;
|
36
|
+
font-size: 2.4rem;
|
37
|
+
letter-spacing: normal;
|
38
|
+
line-height: 50px;
|
39
|
+
margin: 0;
|
40
|
+
}
|
41
|
+
|
42
|
+
.information, #offenses {
|
43
|
+
width: 100%;
|
44
|
+
padding: 20px;
|
45
|
+
color: #333;
|
46
|
+
}
|
47
|
+
#offenses {
|
48
|
+
padding: 0 20px;
|
49
|
+
}
|
50
|
+
|
51
|
+
.information .infobox {
|
52
|
+
border-left: 3px solid;
|
53
|
+
border-radius: 4px;
|
54
|
+
background-color: #fff;
|
55
|
+
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
56
|
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
57
|
+
padding: 15px;
|
58
|
+
border-color: #0088cc;
|
59
|
+
font-size: 1.4rem;
|
60
|
+
}
|
61
|
+
.information .infobox .info-title {
|
62
|
+
font-size: 1.8rem;
|
63
|
+
line-height: 2.2rem;
|
64
|
+
margin: 0 0 0.5em;
|
65
|
+
}
|
66
|
+
.information .offenses-list li {
|
67
|
+
line-height: 1.8rem
|
68
|
+
}
|
69
|
+
.information .offenses-list {
|
70
|
+
padding-left: 20px;
|
71
|
+
margin-bottom: 0;
|
72
|
+
}
|
73
|
+
|
74
|
+
#offenses .offense-box {
|
75
|
+
border-radius: 4px;
|
76
|
+
margin-bottom: 20px;
|
77
|
+
background-color: #fff;
|
78
|
+
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
79
|
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
80
|
+
}
|
81
|
+
.fixed .box-title {
|
82
|
+
position: fixed;
|
83
|
+
top: 0;
|
84
|
+
z-index: 10;
|
85
|
+
width: 100%;
|
86
|
+
}
|
87
|
+
.box-title-placeholder {
|
88
|
+
display: none;
|
89
|
+
}
|
90
|
+
.fixed .box-title-placeholder {
|
91
|
+
display: block;
|
92
|
+
}
|
93
|
+
#offenses .offense-box .box-title h3, #offenses .offense-box .box-title-placeholder h3 {
|
94
|
+
color: #33353f;
|
95
|
+
background-color: #f6f6f6;
|
96
|
+
font-size: 2rem;
|
97
|
+
line-height: 2rem;
|
98
|
+
display: block;
|
99
|
+
padding: 15px;
|
100
|
+
border-radius: 5px;
|
101
|
+
margin: 0;
|
102
|
+
}
|
103
|
+
#offenses .offense-box .offense-reports {
|
104
|
+
padding: 0 15px;
|
105
|
+
}
|
106
|
+
#offenses .offense-box .offense-reports .report {
|
107
|
+
border-bottom: 1px dotted #ddd;
|
108
|
+
padding: 15px 0px;
|
109
|
+
position: relative;
|
110
|
+
font-size: 1.3rem;
|
111
|
+
}
|
112
|
+
#offenses .offense-box .offense-reports .report:last-child {
|
113
|
+
border-bottom: none;
|
114
|
+
}
|
115
|
+
#offenses .offense-box .offense-reports .report pre code {
|
116
|
+
display: block;
|
117
|
+
background: #000;
|
118
|
+
color: #fff;
|
119
|
+
padding: 10px 15px;
|
120
|
+
border-radius: 5px;
|
121
|
+
line-height: 1.6rem;
|
122
|
+
}
|
123
|
+
#offenses .offense-box .offense-reports .report .location {
|
124
|
+
font-weight: bold;
|
125
|
+
}
|
126
|
+
#offenses .offense-box .offense-reports .report .message code {
|
127
|
+
padding: 0.3em;
|
128
|
+
background-color: rgba(0,0,0,0.07);
|
129
|
+
border-radius: 3px;
|
130
|
+
}
|
131
|
+
.severity {
|
132
|
+
text-transform: capitalize;
|
133
|
+
font-weight: bold;
|
134
|
+
}
|
135
|
+
.highlight {
|
136
|
+
padding: 2px;
|
137
|
+
border-radius: 2px;
|
138
|
+
font-weight: bold;
|
139
|
+
}
|
140
|
+
<%- SEVERITY_COLORS.each do |severity, color| %>
|
141
|
+
.severity.<%= severity %> {
|
142
|
+
color: <%= color %>;
|
143
|
+
}
|
144
|
+
.highlight.<%= severity %> {
|
145
|
+
background-color: <%= color.fade_out(0.4) %>;
|
146
|
+
border: 1px solid <%= color.fade_out(0.6) %>;
|
147
|
+
}
|
148
|
+
<%- end %>
|
149
|
+
footer {
|
150
|
+
margin-bottom: 20px;
|
151
|
+
margin-right: 20px;
|
152
|
+
font-size: 1.3rem;
|
153
|
+
color: #777;
|
154
|
+
text-align: right;
|
155
|
+
}
|
156
|
+
.extra-code {
|
157
|
+
color: #ED9C28
|
158
|
+
}
|
159
|
+
|
data/assets/output.html.erb
CHANGED
@@ -3,168 +3,9 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset='UTF-8' />
|
5
5
|
<title>RuboCop Inspection Report</title>
|
6
|
-
<%# TODO: Clean up the messy markup and style definitions. %>
|
7
6
|
<style>
|
8
|
-
|
9
|
-
-webkit-box-sizing: border-box;
|
10
|
-
-moz-box-sizing: border-box;
|
11
|
-
box-sizing: border-box;
|
12
|
-
}
|
13
|
-
|
14
|
-
body, html {
|
15
|
-
font-size: 62.5%;
|
16
|
-
}
|
17
|
-
body {
|
18
|
-
background-color: #ecedf0;
|
19
|
-
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
20
|
-
margin: 0;
|
21
|
-
}
|
22
|
-
code {
|
23
|
-
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
24
|
-
font-size: 85%;
|
25
|
-
}
|
26
|
-
#header {
|
27
|
-
background: #f9f9f9;
|
28
|
-
color: #333;
|
29
|
-
border-bottom: 3px solid #ccc;
|
30
|
-
height: 50px;
|
31
|
-
padding: 0;
|
32
|
-
}
|
33
|
-
#header .logo {
|
34
|
-
float: left;
|
35
|
-
margin: 5px 12px 7px 20px;
|
36
|
-
width: 38px;
|
37
|
-
height: 38px;
|
38
|
-
}
|
39
|
-
#header .title {
|
40
|
-
display: inline-block;
|
41
|
-
float: left;
|
42
|
-
height: 50px;
|
43
|
-
font-size: 2.4rem;
|
44
|
-
letter-spacing: normal;
|
45
|
-
line-height: 50px;
|
46
|
-
margin: 0;
|
47
|
-
}
|
48
|
-
|
49
|
-
.information, #offenses {
|
50
|
-
width: 100%;
|
51
|
-
padding: 20px;
|
52
|
-
color: #333;
|
53
|
-
}
|
54
|
-
#offenses {
|
55
|
-
padding: 0 20px;
|
56
|
-
}
|
57
|
-
|
58
|
-
.information .infobox {
|
59
|
-
border-left: 3px solid;
|
60
|
-
border-radius: 4px;
|
61
|
-
background-color: #fff;
|
62
|
-
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
63
|
-
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
64
|
-
padding: 15px;
|
65
|
-
border-color: #0088cc;
|
66
|
-
font-size: 1.4rem;
|
67
|
-
}
|
68
|
-
.information .infobox .info-title {
|
69
|
-
font-size: 1.8rem;
|
70
|
-
line-height: 2.2rem;
|
71
|
-
margin: 0 0 0.5em;
|
72
|
-
}
|
73
|
-
.information .offenses-list li {
|
74
|
-
line-height: 1.8rem
|
75
|
-
}
|
76
|
-
.information .offenses-list {
|
77
|
-
padding-left: 20px;
|
78
|
-
margin-bottom: 0;
|
79
|
-
}
|
80
|
-
|
81
|
-
#offenses .offense-box {
|
82
|
-
border-radius: 4px;
|
83
|
-
margin-bottom: 20px;
|
84
|
-
background-color: #fff;
|
85
|
-
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
86
|
-
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
87
|
-
}
|
88
|
-
.fixed .box-title {
|
89
|
-
position: fixed;
|
90
|
-
top: 0;
|
91
|
-
z-index: 10;
|
92
|
-
width: 100%;
|
93
|
-
}
|
94
|
-
.box-title-placeholder {
|
95
|
-
display: none;
|
96
|
-
}
|
97
|
-
.fixed .box-title-placeholder {
|
98
|
-
display: block;
|
99
|
-
}
|
100
|
-
#offenses .offense-box .box-title h3, #offenses .offense-box .box-title-placeholder h3 {
|
101
|
-
color: #33353f;
|
102
|
-
background-color: #f6f6f6;
|
103
|
-
font-size: 2rem;
|
104
|
-
line-height: 2rem;
|
105
|
-
display: block;
|
106
|
-
padding: 15px;
|
107
|
-
border-radius: 5px;
|
108
|
-
margin: 0;
|
109
|
-
}
|
110
|
-
#offenses .offense-box .offense-reports {
|
111
|
-
padding: 0 15px;
|
112
|
-
}
|
113
|
-
#offenses .offense-box .offense-reports .report {
|
114
|
-
border-bottom: 1px dotted #ddd;
|
115
|
-
padding: 15px 0px;
|
116
|
-
position: relative;
|
117
|
-
font-size: 1.3rem;
|
118
|
-
}
|
119
|
-
#offenses .offense-box .offense-reports .report:last-child {
|
120
|
-
border-bottom: none;
|
121
|
-
}
|
122
|
-
#offenses .offense-box .offense-reports .report pre code {
|
123
|
-
display: block;
|
124
|
-
background: #000;
|
125
|
-
color: #fff;
|
126
|
-
padding: 10px 15px;
|
127
|
-
border-radius: 5px;
|
128
|
-
line-height: 1.6rem;
|
129
|
-
}
|
130
|
-
#offenses .offense-box .offense-reports .report .location {
|
131
|
-
font-weight: bold;
|
132
|
-
}
|
133
|
-
#offenses .offense-box .offense-reports .report .message code {
|
134
|
-
padding: 0.3em;
|
135
|
-
background-color: rgba(0,0,0,0.07);
|
136
|
-
border-radius: 3px;
|
137
|
-
}
|
138
|
-
.severity {
|
139
|
-
text-transform: capitalize;
|
140
|
-
font-weight: bold;
|
141
|
-
}
|
142
|
-
.highlight {
|
143
|
-
padding: 2px;
|
144
|
-
border-radius: 2px;
|
145
|
-
font-weight: bold;
|
146
|
-
}
|
147
|
-
<%- SEVERITY_COLORS.each do |severity, color| %>
|
148
|
-
.severity.<%= severity %> {
|
149
|
-
color: <%= color %>;
|
150
|
-
}
|
151
|
-
.highlight.<%= severity %> {
|
152
|
-
background-color: <%= color.fade_out(0.4) %>;
|
153
|
-
border: 1px solid <%= color.fade_out(0.6) %>;
|
154
|
-
}
|
155
|
-
<%- end %>
|
156
|
-
footer {
|
157
|
-
margin-bottom: 20px;
|
158
|
-
margin-right: 20px;
|
159
|
-
font-size: 1.3rem;
|
160
|
-
color: #777;
|
161
|
-
text-align: right;
|
162
|
-
}
|
163
|
-
.extra-code {
|
164
|
-
color: #ED9C28
|
165
|
-
}
|
7
|
+
<%= render_css %>
|
166
8
|
</style>
|
167
|
-
|
168
9
|
<script>
|
169
10
|
(function() {
|
170
11
|
// floating headers. requires classList support.
|
data/config/default.yml
CHANGED
@@ -144,6 +144,12 @@ AllCops:
|
|
144
144
|
# Ruby version is still unresolved, RuboCop will use the oldest officially
|
145
145
|
# supported Ruby version (currently Ruby 2.7).
|
146
146
|
TargetRubyVersion: ~
|
147
|
+
# You can specify the parser engine. There are two options available:
|
148
|
+
# - `parser_whitequark` ... https://github.com/whitequark/parser
|
149
|
+
# - `parser_prism` ... https://github.com/ruby/prism (`Prism::Translation::Parser`)
|
150
|
+
# By default, `parser` is used. For the `TargetRubyVersion` value, `parser` can be specified for versions `2.0` and above.
|
151
|
+
# `parser_prism` can be specified for versions `3.3` and above. `parser_prism` is faster but still considered experimental.
|
152
|
+
ParserEngine: parser_whitequark
|
147
153
|
# Determines if a notification for extension libraries should be shown when
|
148
154
|
# rubocop is run. Keys are the name of the extension, and values are an array
|
149
155
|
# of gems in the Gemfile that the extension is suggested for, if not already
|
@@ -556,7 +562,9 @@ Layout/ElseAlignment:
|
|
556
562
|
Layout/EmptyComment:
|
557
563
|
Description: 'Checks empty comment.'
|
558
564
|
Enabled: true
|
565
|
+
AutoCorrect: contextual
|
559
566
|
VersionAdded: '0.53'
|
567
|
+
VersionChanged: '1.61'
|
560
568
|
AllowBorderComment: true
|
561
569
|
AllowMarginComment: true
|
562
570
|
|
@@ -1351,6 +1359,10 @@ Layout/SpaceAroundOperators:
|
|
1351
1359
|
SupportedStylesForExponentOperator:
|
1352
1360
|
- space
|
1353
1361
|
- no_space
|
1362
|
+
EnforcedStyleForRationalLiterals: no_space
|
1363
|
+
SupportedStylesForRationalLiterals:
|
1364
|
+
- space
|
1365
|
+
- no_space
|
1354
1366
|
|
1355
1367
|
Layout/SpaceBeforeBlockBraces:
|
1356
1368
|
Description: >-
|
@@ -1821,16 +1833,18 @@ Lint/EmptyClass:
|
|
1821
1833
|
Lint/EmptyConditionalBody:
|
1822
1834
|
Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
|
1823
1835
|
Enabled: true
|
1836
|
+
AutoCorrect: contextual
|
1824
1837
|
SafeAutoCorrect: false
|
1825
1838
|
AllowComments: true
|
1826
1839
|
VersionAdded: '0.89'
|
1827
|
-
VersionChanged: '1.
|
1840
|
+
VersionChanged: '1.61'
|
1828
1841
|
|
1829
1842
|
Lint/EmptyEnsure:
|
1830
1843
|
Description: 'Checks for empty ensure block.'
|
1831
1844
|
Enabled: true
|
1845
|
+
AutoCorrect: contextual
|
1832
1846
|
VersionAdded: '0.10'
|
1833
|
-
VersionChanged: '
|
1847
|
+
VersionChanged: '1.61'
|
1834
1848
|
|
1835
1849
|
Lint/EmptyExpression:
|
1836
1850
|
Description: 'Checks for empty expressions.'
|
@@ -1852,8 +1866,9 @@ Lint/EmptyInPattern:
|
|
1852
1866
|
Lint/EmptyInterpolation:
|
1853
1867
|
Description: 'Checks for empty string interpolation.'
|
1854
1868
|
Enabled: true
|
1869
|
+
AutoCorrect: contextual
|
1855
1870
|
VersionAdded: '0.20'
|
1856
|
-
VersionChanged: '
|
1871
|
+
VersionChanged: '1.61'
|
1857
1872
|
|
1858
1873
|
Lint/EmptyWhen:
|
1859
1874
|
Description: 'Checks for `when` branches with empty bodies.'
|
@@ -1959,6 +1974,12 @@ Lint/InterpolationCheck:
|
|
1959
1974
|
VersionAdded: '0.50'
|
1960
1975
|
VersionChanged: '1.40'
|
1961
1976
|
|
1977
|
+
Lint/ItWithoutArgumentsInBlock:
|
1978
|
+
Description: 'Checks uses of `it` calls without arguments in block.'
|
1979
|
+
Reference: 'https://bugs.ruby-lang.org/issues/18980'
|
1980
|
+
Enabled: pending
|
1981
|
+
VersionAdded: '1.59'
|
1982
|
+
|
1962
1983
|
Lint/LambdaWithoutLiteralBlock:
|
1963
1984
|
Description: 'Checks uses of lambda without a literal block.'
|
1964
1985
|
Enabled: pending
|
@@ -1969,6 +1990,11 @@ Lint/LiteralAsCondition:
|
|
1969
1990
|
Enabled: true
|
1970
1991
|
VersionAdded: '0.51'
|
1971
1992
|
|
1993
|
+
Lint/LiteralAssignmentInCondition:
|
1994
|
+
Description: 'Checks for literal assignments in the conditions.'
|
1995
|
+
Enabled: pending
|
1996
|
+
VersionAdded: '1.58'
|
1997
|
+
|
1972
1998
|
Lint/LiteralInInterpolation:
|
1973
1999
|
Description: 'Checks for literals used in interpolation.'
|
1974
2000
|
Enabled: true
|
@@ -2380,7 +2406,9 @@ Lint/TopLevelReturnWithArgument:
|
|
2380
2406
|
Lint/TrailingCommaInAttributeDeclaration:
|
2381
2407
|
Description: 'Checks for trailing commas in attribute declarations.'
|
2382
2408
|
Enabled: true
|
2409
|
+
AutoCorrect: contextual
|
2383
2410
|
VersionAdded: '0.90'
|
2411
|
+
VersionChanged: '1.61'
|
2384
2412
|
|
2385
2413
|
Lint/TripleQuotes:
|
2386
2414
|
Description: 'Checks for useless triple quote constructs.'
|
@@ -2440,8 +2468,9 @@ Lint/UnusedBlockArgument:
|
|
2440
2468
|
Description: 'Checks for unused block arguments.'
|
2441
2469
|
StyleGuide: '#underscore-unused-vars'
|
2442
2470
|
Enabled: true
|
2471
|
+
AutoCorrect: contextual
|
2443
2472
|
VersionAdded: '0.21'
|
2444
|
-
VersionChanged: '
|
2473
|
+
VersionChanged: '1.61'
|
2445
2474
|
IgnoreEmptyBlocks: true
|
2446
2475
|
AllowUnusedKeywordArguments: false
|
2447
2476
|
|
@@ -2449,8 +2478,9 @@ Lint/UnusedMethodArgument:
|
|
2449
2478
|
Description: 'Checks for unused method arguments.'
|
2450
2479
|
StyleGuide: '#underscore-unused-vars'
|
2451
2480
|
Enabled: true
|
2481
|
+
AutoCorrect: contextual
|
2452
2482
|
VersionAdded: '0.21'
|
2453
|
-
VersionChanged: '
|
2483
|
+
VersionChanged: '1.61'
|
2454
2484
|
AllowUnusedKeywordArguments: false
|
2455
2485
|
IgnoreEmptyMethods: true
|
2456
2486
|
IgnoreNotImplementedMethods: true
|
@@ -2474,8 +2504,9 @@ Lint/UriRegexp:
|
|
2474
2504
|
Lint/UselessAccessModifier:
|
2475
2505
|
Description: 'Checks for useless access modifiers.'
|
2476
2506
|
Enabled: true
|
2507
|
+
AutoCorrect: contextual
|
2477
2508
|
VersionAdded: '0.20'
|
2478
|
-
VersionChanged: '
|
2509
|
+
VersionChanged: '1.61'
|
2479
2510
|
ContextCreatingMethods: []
|
2480
2511
|
MethodCreatingMethods: []
|
2481
2512
|
|
@@ -2483,8 +2514,9 @@ Lint/UselessAssignment:
|
|
2483
2514
|
Description: 'Checks for useless assignment to a local variable.'
|
2484
2515
|
StyleGuide: '#underscore-unused-vars'
|
2485
2516
|
Enabled: true
|
2517
|
+
AutoCorrect: contextual
|
2486
2518
|
VersionAdded: '0.11'
|
2487
|
-
VersionChanged: '1.
|
2519
|
+
VersionChanged: '1.61'
|
2488
2520
|
SafeAutoCorrect: false
|
2489
2521
|
|
2490
2522
|
Lint/UselessElseWithoutRescue:
|
@@ -2496,8 +2528,9 @@ Lint/UselessElseWithoutRescue:
|
|
2496
2528
|
Lint/UselessMethodDefinition:
|
2497
2529
|
Description: 'Checks for useless method definitions.'
|
2498
2530
|
Enabled: true
|
2531
|
+
AutoCorrect: contextual
|
2499
2532
|
VersionAdded: '0.90'
|
2500
|
-
VersionChanged: '
|
2533
|
+
VersionChanged: '1.61'
|
2501
2534
|
Safe: false
|
2502
2535
|
|
2503
2536
|
Lint/UselessRescue:
|
@@ -2520,13 +2553,17 @@ Lint/UselessSetterCall:
|
|
2520
2553
|
Lint/UselessTimes:
|
2521
2554
|
Description: 'Checks for useless `Integer#times` calls.'
|
2522
2555
|
Enabled: true
|
2523
|
-
VersionAdded: '0.91'
|
2524
2556
|
Safe: false
|
2557
|
+
AutoCorrect: contextual
|
2558
|
+
VersionAdded: '0.91'
|
2559
|
+
VersionChanged: '1.61'
|
2525
2560
|
|
2526
2561
|
Lint/Void:
|
2527
2562
|
Description: 'Possible use of operator/literal/variable in void context.'
|
2528
2563
|
Enabled: true
|
2564
|
+
AutoCorrect: contextual
|
2529
2565
|
VersionAdded: '0.9'
|
2566
|
+
VersionChanged: '1.61'
|
2530
2567
|
CheckForMethodsWithNoSideEffects: false
|
2531
2568
|
|
2532
2569
|
#################### Metrics ###############################
|
@@ -3085,7 +3122,19 @@ Style/ArgumentsForwarding:
|
|
3085
3122
|
Enabled: pending
|
3086
3123
|
AllowOnlyRestArgument: true
|
3087
3124
|
UseAnonymousForwarding: true
|
3125
|
+
RedundantRestArgumentNames:
|
3126
|
+
- args
|
3127
|
+
- arguments
|
3128
|
+
RedundantKeywordRestArgumentNames:
|
3129
|
+
- kwargs
|
3130
|
+
- options
|
3131
|
+
- opts
|
3132
|
+
RedundantBlockArgumentNames:
|
3133
|
+
- blk
|
3134
|
+
- block
|
3135
|
+
- proc
|
3088
3136
|
VersionAdded: '1.1'
|
3137
|
+
VersionChanged: '1.58'
|
3089
3138
|
|
3090
3139
|
Style/ArrayCoercion:
|
3091
3140
|
Description: >-
|
@@ -3096,6 +3145,13 @@ Style/ArrayCoercion:
|
|
3096
3145
|
Enabled: false
|
3097
3146
|
VersionAdded: '0.88'
|
3098
3147
|
|
3148
|
+
Style/ArrayFirstLast:
|
3149
|
+
Description: 'Use `arr.first` and `arr.last` instead of `arr[0]` and `arr[-1]`.'
|
3150
|
+
Reference: '#first-and-last'
|
3151
|
+
Enabled: false
|
3152
|
+
VersionAdded: '1.58'
|
3153
|
+
Safe: false
|
3154
|
+
|
3099
3155
|
Style/ArrayIntersect:
|
3100
3156
|
Description: 'Use `array1.intersect?(array2)` instead of `(array1 & array2).any?`.'
|
3101
3157
|
Enabled: 'pending'
|
@@ -3667,8 +3723,9 @@ Style/EmptyCaseCondition:
|
|
3667
3723
|
Style/EmptyElse:
|
3668
3724
|
Description: 'Avoid empty else-clauses.'
|
3669
3725
|
Enabled: true
|
3726
|
+
AutoCorrect: contextual
|
3670
3727
|
VersionAdded: '0.28'
|
3671
|
-
VersionChanged: '
|
3728
|
+
VersionChanged: '1.61'
|
3672
3729
|
EnforcedStyle: both
|
3673
3730
|
# empty - warn only on empty `else`
|
3674
3731
|
# nil - warn on `else` with nil in it
|
@@ -3682,7 +3739,9 @@ Style/EmptyElse:
|
|
3682
3739
|
Style/EmptyHeredoc:
|
3683
3740
|
Description: 'Checks for using empty heredoc to reduce redundancy.'
|
3684
3741
|
Enabled: pending
|
3742
|
+
AutoCorrect: contextual
|
3685
3743
|
VersionAdded: '1.32'
|
3744
|
+
VersionChanged: '1.61'
|
3686
3745
|
|
3687
3746
|
Style/EmptyLambdaParameter:
|
3688
3747
|
Description: 'Omit parens for empty lambda parameters.'
|
@@ -3700,7 +3759,9 @@ Style/EmptyMethod:
|
|
3700
3759
|
Description: 'Checks the formatting of empty method definitions.'
|
3701
3760
|
StyleGuide: '#no-single-line-methods'
|
3702
3761
|
Enabled: true
|
3762
|
+
AutoCorrect: contextual
|
3703
3763
|
VersionAdded: '0.46'
|
3764
|
+
VersionChanged: '1.61'
|
3704
3765
|
EnforcedStyle: compact
|
3705
3766
|
SupportedStyles:
|
3706
3767
|
- compact
|
@@ -4678,6 +4739,7 @@ Style/OperatorMethodCall:
|
|
4678
4739
|
|
4679
4740
|
Style/OptionHash:
|
4680
4741
|
Description: "Don't use option hashes when you can use keyword arguments."
|
4742
|
+
StyleGuide: '#keyword-arguments-vs-option-hashes'
|
4681
4743
|
Enabled: false
|
4682
4744
|
VersionAdded: '0.33'
|
4683
4745
|
VersionChanged: '0.34'
|
@@ -4800,8 +4862,9 @@ Style/RaiseArgs:
|
|
4800
4862
|
Description: 'Checks the arguments passed to raise/fail.'
|
4801
4863
|
StyleGuide: '#exception-class-messages'
|
4802
4864
|
Enabled: true
|
4865
|
+
Safe: false
|
4803
4866
|
VersionAdded: '0.14'
|
4804
|
-
VersionChanged: '1.
|
4867
|
+
VersionChanged: '1.61'
|
4805
4868
|
EnforcedStyle: exploded
|
4806
4869
|
SupportedStyles:
|
4807
4870
|
- compact # raise Exception.new(msg)
|
@@ -4902,7 +4965,7 @@ Style/RedundantFetchBlock:
|
|
4902
4965
|
Description: >-
|
4903
4966
|
Use `fetch(key, value)` instead of `fetch(key) { value }`
|
4904
4967
|
when value has Numeric, Rational, Complex, Symbol or String type, `false`, `true`, `nil` or is a constant.
|
4905
|
-
Reference: 'https://github.com/
|
4968
|
+
Reference: 'https://github.com/fastruby/fast-ruby#hashfetch-with-argument-vs-hashfetch--block-code'
|
4906
4969
|
Enabled: true
|
4907
4970
|
Safe: false
|
4908
4971
|
# If enabled, this cop will autocorrect usages of
|
@@ -4942,10 +5005,11 @@ Style/RedundantHeredocDelimiterQuotes:
|
|
4942
5005
|
Style/RedundantInitialize:
|
4943
5006
|
Description: 'Checks for redundant `initialize` methods.'
|
4944
5007
|
Enabled: pending
|
5008
|
+
AutoCorrect: contextual
|
4945
5009
|
Safe: false
|
4946
5010
|
AllowComments: true
|
4947
5011
|
VersionAdded: '1.27'
|
4948
|
-
VersionChanged: '1.
|
5012
|
+
VersionChanged: '1.61'
|
4949
5013
|
|
4950
5014
|
Style/RedundantInterpolation:
|
4951
5015
|
Description: 'Checks for strings that are just an interpolated expression.'
|
@@ -5123,7 +5187,7 @@ Style/Sample:
|
|
5123
5187
|
Description: >-
|
5124
5188
|
Use `sample` instead of `shuffle.first`,
|
5125
5189
|
`shuffle.last`, and `shuffle[Integer]`.
|
5126
|
-
Reference: 'https://github.com/
|
5190
|
+
Reference: 'https://github.com/fastruby/fast-ruby#arrayshufflefirst-vs-arraysample-code'
|
5127
5191
|
Enabled: true
|
5128
5192
|
VersionAdded: '0.30'
|
5129
5193
|
|
@@ -5190,6 +5254,7 @@ Style/SingleLineBlockParams:
|
|
5190
5254
|
|
5191
5255
|
Style/SingleLineDoEndBlock:
|
5192
5256
|
Description: 'Checks for single-line `do`...`end` blocks.'
|
5257
|
+
StyleGuide: '#single-line-do-end-block'
|
5193
5258
|
Enabled: pending
|
5194
5259
|
VersionAdded: '1.57'
|
5195
5260
|
|
@@ -5202,7 +5267,8 @@ Style/SingleLineMethods:
|
|
5202
5267
|
AllowIfMethodIsEmpty: true
|
5203
5268
|
|
5204
5269
|
Style/SlicingWithRange:
|
5205
|
-
Description: 'Checks array slicing is done with endless ranges when suitable.'
|
5270
|
+
Description: 'Checks array slicing is done with redundant, endless, and beginless ranges when suitable.'
|
5271
|
+
StyleGuide: '#slicing-with-ranges'
|
5206
5272
|
Enabled: true
|
5207
5273
|
VersionAdded: '0.83'
|
5208
5274
|
Safe: false
|
@@ -5329,6 +5395,12 @@ Style/StructInheritance:
|
|
5329
5395
|
VersionAdded: '0.29'
|
5330
5396
|
VersionChanged: '1.20'
|
5331
5397
|
|
5398
|
+
Style/SuperWithArgsParentheses:
|
5399
|
+
Description: 'Use parentheses for `super` with arguments.'
|
5400
|
+
StyleGuide: '#super-with-args'
|
5401
|
+
Enabled: pending
|
5402
|
+
VersionAdded: '1.58'
|
5403
|
+
|
5332
5404
|
Style/SwapValues:
|
5333
5405
|
Description: 'Enforces the use of shorthand-style swapping of 2 variables.'
|
5334
5406
|
StyleGuide: '#values-swapping'
|