reek 5.4.1 → 6.0.2
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/.gitignore +1 -0
- data/.rubocop.yml +8 -6
- data/.rubocop_todo.yml +25 -20
- data/.simplecov +1 -0
- data/.travis.yml +17 -11
- data/CHANGELOG.md +31 -3
- data/Dockerfile +1 -0
- data/Gemfile +14 -17
- data/README.md +15 -11
- data/bin/code_climate_reek +12 -2
- data/docs/Attribute.md +1 -1
- data/docs/Boolean-Parameter.md +1 -1
- data/docs/Control-Couple.md +1 -1
- data/docs/Nil-Check.md +4 -1
- data/features/command_line_interface/options.feature +2 -3
- data/features/configuration_files/schema_validation.feature +1 -1
- data/features/reports/codeclimate.feature +2 -2
- data/features/reports/json.feature +3 -3
- data/features/reports/reports.feature +4 -4
- data/features/reports/yaml.feature +3 -3
- data/features/step_definitions/reek_steps.rb +5 -1
- data/features/step_definitions/sample_file_steps.rb +2 -2
- data/features/support/env.rb +1 -2
- data/lib/reek.rb +1 -0
- data/lib/reek/ast/sexp_extensions/arguments.rb +11 -0
- data/lib/reek/cli/options.rb +3 -3
- data/lib/reek/code_comment.rb +45 -38
- data/lib/reek/configuration/app_configuration.rb +4 -3
- data/lib/reek/configuration/configuration_converter.rb +2 -2
- data/lib/reek/configuration/directory_directives.rb +9 -3
- data/lib/reek/context/module_context.rb +3 -1
- data/lib/reek/errors/legacy_comment_separator_error.rb +36 -0
- data/lib/reek/examiner.rb +3 -3
- data/lib/reek/report.rb +5 -7
- data/lib/reek/report/code_climate/code_climate_configuration.yml +1 -1
- data/lib/reek/report/code_climate/code_climate_report.rb +2 -1
- data/lib/reek/report/simple_warning_formatter.rb +0 -7
- data/lib/reek/report/text_report.rb +2 -2
- data/lib/reek/smell_detectors/base_detector.rb +1 -9
- data/lib/reek/smell_detectors/boolean_parameter.rb +3 -1
- data/lib/reek/smell_detectors/data_clump.rb +23 -56
- data/lib/reek/smell_detectors/nil_check.rb +1 -12
- data/lib/reek/smell_detectors/subclassed_from_core_class.rb +3 -7
- data/lib/reek/smell_detectors/uncommunicative_variable_name.rb +1 -1
- data/lib/reek/smell_warning.rb +1 -2
- data/lib/reek/source/source_code.rb +3 -2
- data/lib/reek/source/source_locator.rb +13 -10
- data/lib/reek/spec/smell_matcher.rb +2 -1
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +13 -6
- data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +2 -4
- data/spec/quality/documentation_spec.rb +2 -1
- data/spec/reek/ast/sexp_extensions_spec.rb +15 -33
- data/spec/reek/code_comment_spec.rb +41 -42
- data/spec/reek/configuration/directory_directives_spec.rb +6 -0
- data/spec/reek/context_builder_spec.rb +110 -113
- data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +1 -3
- data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +26 -26
- data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +6 -6
- data/spec/reek/report/code_climate/code_climate_report_spec.rb +1 -1
- data/spec/reek/report/json_report_spec.rb +1 -1
- data/spec/reek/report/location_formatter_spec.rb +3 -3
- data/spec/reek/report/text_report_spec.rb +1 -7
- data/spec/reek/report/yaml_report_spec.rb +1 -1
- data/spec/reek/smell_detectors/base_detector_spec.rb +3 -13
- data/spec/reek/smell_detectors/data_clump_spec.rb +14 -0
- data/spec/reek/smell_detectors/missing_safe_method_spec.rb +8 -2
- data/spec/reek/smell_detectors/nil_check_spec.rb +3 -3
- data/spec/reek/smell_warning_spec.rb +12 -12
- data/spec/reek/source/source_code_spec.rb +13 -0
- data/spec/reek/spec/should_reek_of_spec.rb +0 -1
- data/spec/reek/spec/should_reek_only_of_spec.rb +6 -6
- data/spec/reek/spec/smell_matcher_spec.rb +1 -1
- data/spec/spec_helper.rb +20 -6
- data/tasks/configuration.rake +1 -2
- metadata +15 -25
- data/spec/factories/factories.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83760bf0344db6b8f65cd5bbb6e57f90ee4e1b54c10edb3920821a517e6649cd
|
4
|
+
data.tar.gz: 258214d9022fda0ecbe287c4313719472c30f056c1ff6ffd4f7ff023b255b199
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56c12a16cc200dd475d84a543fd9edf2ce888f550a5d4d22cbe813c3439ed0915263340d7c02654417666bcd728ee5e9ba976670cae46098293b58595589f36c
|
7
|
+
data.tar.gz: 0f012f16ec237bdece4f797ea2977c0db5fa083df32ac86ce57b14911777eec0d832aff8e861df67c5cc80b847b0c3caf801a157b759724cc9f858ae4236ace9
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -9,10 +9,11 @@ AllCops:
|
|
9
9
|
- 'samples/**/*'
|
10
10
|
- 'tmp/**/*'
|
11
11
|
- 'vendor/**/*'
|
12
|
-
|
12
|
+
NewCops: enable
|
13
|
+
TargetRubyVersion: 2.4
|
13
14
|
|
14
15
|
# Tables are nice
|
15
|
-
Layout/
|
16
|
+
Layout/HashAlignment:
|
16
17
|
EnforcedColonStyle: table
|
17
18
|
EnforcedHashRocketStyle: table
|
18
19
|
EnforcedLastArgumentHashStyle: ignore_implicit
|
@@ -25,6 +26,10 @@ Layout/DotPosition:
|
|
25
26
|
Layout/EmptyLineBetweenDefs:
|
26
27
|
AllowAdjacentOneLineDefs: true
|
27
28
|
|
29
|
+
# Be rather lenient with line length
|
30
|
+
Layout/LineLength:
|
31
|
+
Max: 120
|
32
|
+
|
28
33
|
# Always put the closing brace on the last line
|
29
34
|
Layout/MultilineMethodCallBraceLayout:
|
30
35
|
EnforcedStyle: same_line
|
@@ -53,12 +58,9 @@ Lint/BooleanSymbol:
|
|
53
58
|
# Spec blocks can be any size
|
54
59
|
Metrics/BlockLength:
|
55
60
|
Exclude:
|
61
|
+
- '**/*.gemspec'
|
56
62
|
- 'spec/**/*'
|
57
63
|
|
58
|
-
# Be rather lenient with line length
|
59
|
-
Metrics/LineLength:
|
60
|
-
Max: 120
|
61
|
-
|
62
64
|
# Keyword arguments make long parameter lists readable
|
63
65
|
Metrics/ParameterLists:
|
64
66
|
CountKeywordArgs: false
|
data/.rubocop_todo.yml
CHANGED
@@ -1,22 +1,34 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2020-08-19 19:02:50 UTC using RuboCop version 0.89.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 2
|
10
|
+
Lint/MissingSuper:
|
11
|
+
Exclude:
|
12
|
+
- 'lib/reek/rake/task.rb'
|
13
|
+
- 'lib/reek/smell_detectors/base_detector.rb'
|
14
|
+
|
15
|
+
# Offense count: 2
|
16
|
+
Lint/UnreachableLoop:
|
17
|
+
Exclude:
|
18
|
+
- 'spec/reek/ast/node_spec.rb'
|
19
|
+
|
20
|
+
# Offense count: 2
|
21
|
+
# Configuration parameters: IgnoredMethods.
|
10
22
|
Metrics/AbcSize:
|
11
23
|
Max: 21
|
12
24
|
|
13
25
|
# Offense count: 1
|
14
|
-
# Configuration parameters: CountComments.
|
26
|
+
# Configuration parameters: CountComments, CountAsOne.
|
15
27
|
Metrics/ClassLength:
|
16
28
|
Max: 161
|
17
29
|
|
18
30
|
# Offense count: 13
|
19
|
-
# Configuration parameters: CountComments, ExcludedMethods.
|
31
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods.
|
20
32
|
Metrics/MethodLength:
|
21
33
|
Max: 16
|
22
34
|
|
@@ -25,17 +37,6 @@ RSpec/AnyInstance:
|
|
25
37
|
Exclude:
|
26
38
|
- 'spec/reek/cli/application_spec.rb'
|
27
39
|
|
28
|
-
# Offense count: 1
|
29
|
-
# Configuration parameters: CustomIncludeMethods.
|
30
|
-
RSpec/EmptyExampleGroup:
|
31
|
-
Exclude:
|
32
|
-
- 'spec/factories/factories.rb'
|
33
|
-
|
34
|
-
# Offense count: 1
|
35
|
-
RSpec/MissingExampleGroupArgument:
|
36
|
-
Exclude:
|
37
|
-
- 'spec/factories/factories.rb'
|
38
|
-
|
39
40
|
# Offense count: 4
|
40
41
|
RSpec/MultipleDescribes:
|
41
42
|
Exclude:
|
@@ -44,19 +45,23 @@ RSpec/MultipleDescribes:
|
|
44
45
|
- 'spec/reek/report/location_formatter_spec.rb'
|
45
46
|
- 'spec/reek/report/progress_formatter_spec.rb'
|
46
47
|
|
47
|
-
# Offense count:
|
48
|
-
# Configuration parameters: AggregateFailuresByDefault.
|
48
|
+
# Offense count: 30
|
49
49
|
RSpec/MultipleExpectations:
|
50
50
|
Max: 5
|
51
51
|
|
52
|
-
# Offense count:
|
52
|
+
# Offense count: 16
|
53
|
+
# Configuration parameters: AllowSubject.
|
54
|
+
RSpec/MultipleMemoizedHelpers:
|
55
|
+
Max: 9
|
56
|
+
|
57
|
+
# Offense count: 27
|
53
58
|
RSpec/NestedGroups:
|
54
59
|
Max: 5
|
55
60
|
|
56
61
|
# Offense count: 2
|
57
62
|
# Cop supports --auto-correct.
|
58
|
-
# Configuration parameters: ConvertCodeThatCanStartToReturnNil,
|
59
|
-
#
|
63
|
+
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
|
64
|
+
# AllowedMethods: present?, blank?, presence, try, try!
|
60
65
|
Style/SafeNavigation:
|
61
66
|
Exclude:
|
62
67
|
- 'lib/reek/ast/node.rb'
|
data/.simplecov
CHANGED
data/.travis.yml
CHANGED
@@ -1,34 +1,40 @@
|
|
1
|
-
dist: trusty
|
2
|
-
cache: bundler
|
3
1
|
language: ruby
|
2
|
+
|
3
|
+
dist: xenial
|
4
|
+
|
5
|
+
cache:
|
6
|
+
bundler: true
|
7
|
+
|
4
8
|
bundler_args: --without debugging
|
5
|
-
|
6
|
-
# Avoid Java announcing _JAVA_OPTIONS environment variable
|
7
|
-
# See https://github.com/travis-ci/travis-ci/issues/8408
|
8
|
-
- unset _JAVA_OPTIONS
|
9
|
+
|
9
10
|
script: bundle exec rake ci
|
11
|
+
|
10
12
|
rvm:
|
11
|
-
- 2.3
|
12
13
|
- 2.4
|
13
14
|
- 2.5
|
14
15
|
- 2.6
|
15
|
-
-
|
16
|
-
- jruby-9.2
|
16
|
+
- 2.7
|
17
|
+
- jruby-9.2
|
17
18
|
- jruby-head
|
18
19
|
- ruby-head
|
19
|
-
|
20
|
+
|
20
21
|
matrix:
|
21
22
|
allow_failures:
|
22
23
|
- rvm: jruby-head
|
23
24
|
- rvm: ruby-head
|
24
|
-
- rvm: rubinius-3
|
25
25
|
fast_finish: true
|
26
|
+
|
26
27
|
notifications:
|
27
28
|
email:
|
28
29
|
- timo.roessner@googlemail.com
|
29
30
|
- matijs@matijs.net
|
30
31
|
- chastell@chastell.net
|
31
32
|
irc: irc.freenode.org#reek
|
33
|
+
|
32
34
|
branches:
|
33
35
|
only:
|
34
36
|
- master
|
37
|
+
|
38
|
+
env:
|
39
|
+
global:
|
40
|
+
- JRUBY_OPTS="--dev"
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,39 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
-
##
|
3
|
+
## 6.0.2 (2020-10-17)
|
4
|
+
|
5
|
+
* (mvz) Loosen dependency on psych. This should resolve installation problems on
|
6
|
+
mingw32
|
7
|
+
* (Cesario Uy) Fix typo in docs for "Boolean Parameter" smell
|
8
|
+
* (mvz) Set link metadata in gemspec
|
9
|
+
|
10
|
+
## 6.0.1 (2020-05-26)
|
11
|
+
|
12
|
+
* (Maxim Pertsov) Handle absolute paths for directories correctly
|
13
|
+
|
14
|
+
## 6.0.0 (2020-03-30)
|
15
|
+
|
16
|
+
* (mvz) Make codeclimate-engine-rb a development dependency
|
17
|
+
* (mvz) Drop support for Ruby 2.3
|
18
|
+
* (mvz) Raise error when legacy code comment format is used
|
19
|
+
* (mvz) Stop reporting NilCheck for safe navigation
|
20
|
+
* (likeath) Properly handle "Forward all" syntax
|
21
|
+
|
22
|
+
## 5.6.0 (2020-01-20)
|
23
|
+
|
24
|
+
* (mvz) Support Ruby 2.7
|
25
|
+
* (mvz) Loosen parser dependency to allow version 2.7.x
|
26
|
+
|
27
|
+
## 5.5.0 (2019-11-13)
|
28
|
+
|
29
|
+
* (mvz) Use the Parser class matching current ruby for parsing, instead of
|
30
|
+
always picking version 2.6.
|
4
31
|
|
5
32
|
## 5.4.1 (2019-11-12)
|
6
33
|
|
7
|
-
* (Filipe Esperandio) Bump base image to a more recent ruby version
|
8
|
-
* (Fernando Contreras) Add quotes inside directory configuration
|
34
|
+
* (Filipe Esperandio) Bump base Docker image to a more recent ruby version
|
35
|
+
* (Fernando Contreras) Add quotes inside directory configuration example in
|
36
|
+
README
|
9
37
|
|
10
38
|
## 5.4.0 (2019-04-24)
|
11
39
|
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
@@ -5,19 +5,19 @@ gemspec
|
|
5
5
|
ruby RUBY_VERSION
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
gem 'aruba',
|
9
|
-
gem '
|
10
|
-
gem '
|
11
|
-
gem 'kramdown',
|
12
|
-
gem 'kramdown-parser-gfm',
|
13
|
-
gem 'rake',
|
14
|
-
gem 'rspec',
|
15
|
-
gem 'rspec-benchmark',
|
16
|
-
gem 'rubocop',
|
17
|
-
gem 'rubocop-performance',
|
18
|
-
gem 'rubocop-rspec',
|
19
|
-
gem 'simplecov',
|
20
|
-
gem 'yard',
|
8
|
+
gem 'aruba', '~> 1.0'
|
9
|
+
gem 'codeclimate-engine-rb', '~> 0.4.0'
|
10
|
+
gem 'cucumber', ['>= 4.0', '< 6.0']
|
11
|
+
gem 'kramdown', '~> 2.1'
|
12
|
+
gem 'kramdown-parser-gfm', '~> 1.0'
|
13
|
+
gem 'rake', '~> 13.0'
|
14
|
+
gem 'rspec', '~> 3.0'
|
15
|
+
gem 'rspec-benchmark', '~> 0.6.0'
|
16
|
+
gem 'rubocop', '~> 0.93.0'
|
17
|
+
gem 'rubocop-performance', '~> 1.8.0'
|
18
|
+
gem 'rubocop-rspec', '~> 1.43.1'
|
19
|
+
gem 'simplecov', ['>= 0.18.0', '< 0.20.0']
|
20
|
+
gem 'yard', '~> 0.9.5'
|
21
21
|
|
22
22
|
platforms :mri do
|
23
23
|
gem 'redcarpet', '~> 3.4'
|
@@ -25,8 +25,5 @@ group :development do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
group :debugging do
|
28
|
-
gem 'pry'
|
29
|
-
platforms :mri do
|
30
|
-
gem 'pry-byebug'
|
31
|
-
end
|
28
|
+
gem 'pry', '~> 0.13.0'
|
32
29
|
end
|
data/README.md
CHANGED
@@ -45,12 +45,6 @@
|
|
45
45
|
* 
|
46
46
|
* 
|
47
47
|
|
48
|
-
## Reek 5 is out!
|
49
|
-
|
50
|
-
Reek 5 is out and with it a bunch of breaking changes. If you're a new user you can just
|
51
|
-
continue with the quickstart below. If you're a Reek 4 user and would like to upgrade to 5, don't
|
52
|
-
worry, this shouldn't take you more than 10 minutes. Check out our [Upgrade Guide](docs/Reek-4-to-Reek-5-migration.md).
|
53
|
-
|
54
48
|
## Quickstart
|
55
49
|
|
56
50
|
Reek is a tool that examines Ruby classes, modules and methods and reports any
|
@@ -100,10 +94,14 @@ demo.rb -- 2 warnings:
|
|
100
94
|
|
101
95
|
## Supported Ruby versions
|
102
96
|
|
103
|
-
Reek is officially supported for CRuby 2.
|
97
|
+
Reek is officially supported for CRuby 2.4 to 2.7 and for JRuby 9.2.
|
104
98
|
Other Ruby implementations (like Rubinius) are not officially supported but
|
105
99
|
should work as well.
|
106
100
|
|
101
|
+
Note that, on each Ruby version, Reek will use the parser for that version of
|
102
|
+
Ruby. So, you should always run Reek using one of your project's target Ruby
|
103
|
+
versions.
|
104
|
+
|
107
105
|
## Fixing Smell Warnings
|
108
106
|
|
109
107
|
Reek focuses on high-level code smells, so we can't tell you how to fix warnings in
|
@@ -288,7 +286,7 @@ detectors:
|
|
288
286
|
# You can disable smells completely
|
289
287
|
IrresponsibleModule:
|
290
288
|
enabled: false
|
291
|
-
|
289
|
+
|
292
290
|
# You can use filters to silence Reek warnings.
|
293
291
|
# Either because you simply disagree with Reek (we are not the police) or
|
294
292
|
# because you want to fix this at a later point in time.
|
@@ -296,7 +294,7 @@ detectors:
|
|
296
294
|
exclude:
|
297
295
|
- "MyWorker#self.class_method" # should be refactored
|
298
296
|
- "AnotherWorker#instance_method" # should be refactored as well
|
299
|
-
|
297
|
+
|
300
298
|
# A lot of smells allow fine tuning their configuration. You can look up all available options
|
301
299
|
# in the corresponding smell documentation in /docs. In most cases you probably can just go
|
302
300
|
# with the defaults as documented in defaults.reek.yml.
|
@@ -351,9 +349,14 @@ This configuration for instance:
|
|
351
349
|
detectors:
|
352
350
|
IrresponsibleModule:
|
353
351
|
enabled: false
|
354
|
-
|
352
|
+
|
355
353
|
TooManyStatements:
|
356
354
|
max_statements: 5
|
355
|
+
|
356
|
+
directories:
|
357
|
+
"app/controllers":
|
358
|
+
TooManyStatements:
|
359
|
+
max_statements: 10
|
357
360
|
```
|
358
361
|
|
359
362
|
translates to:
|
@@ -370,7 +373,7 @@ are documented in the corresponding smell type /docs page (if you want to get a
|
|
370
373
|
configurations you can also check out [the `defaults.reek.yml` file in this repository](docs/defaults.reek.yml).
|
371
374
|
|
372
375
|
Note that you do not need a configuration file at all.
|
373
|
-
If you're fine with all the [defaults
|
376
|
+
If you're fine with all the [defaults](docs/defaults.reek.yml) we set you can skip this completely.
|
374
377
|
|
375
378
|
Don't worry about introducing a mistake in your configuration file that might go unnoticed - Reek uses a
|
376
379
|
schema to validate your configuration against on start up and will faily loudly in case you
|
@@ -609,6 +612,7 @@ Be careful though, Reek does not merge your configuration entries, so if you alr
|
|
609
612
|
Reek
|
610
613
|
* [ruby-critic](https://github.com/whitesmith/rubycritic) - gem that wraps around static analysis gems such as Reek, [flay](https://github.com/seattlerb/flay) and [flog](https://github.com/seattlerb/flog)
|
611
614
|
* [pronto-reek](https://github.com/mmozuras/pronto-reek) - Reek integration for [pronto](https://github.com/mmozuras/pronto)
|
615
|
+
* [action-reek](https://github.com/reviewdog/action-reek) - GitHub Action to run reek with [reviewdog](https://github.com/reviewdog/reviewdog) 🐶
|
612
616
|
|
613
617
|
### Misc
|
614
618
|
|
data/bin/code_climate_reek
CHANGED
@@ -6,15 +6,16 @@
|
|
6
6
|
|
7
7
|
require_relative '../lib/reek'
|
8
8
|
require_relative '../lib/reek/cli/application'
|
9
|
+
require_relative '../lib/reek/report/code_climate'
|
9
10
|
|
10
11
|
# Map input coming from CodeClimate to Reek.
|
11
12
|
class CodeClimateToReek
|
12
13
|
# Following the spec (https://github.com/codeclimate/spec/blob/master/SPEC.md)
|
13
14
|
# we have to exit with a zero for both failure and success.
|
14
15
|
ENGINE_CONFIGURATION = [
|
15
|
-
'-f', 'code_climate',
|
16
16
|
'--failure-exit-code', '0',
|
17
|
-
'--success-exit-code', '0'
|
17
|
+
'--success-exit-code', '0',
|
18
|
+
'.'
|
18
19
|
].freeze
|
19
20
|
|
20
21
|
attr_reader :configuration_file_path, :include_paths_key, :include_paths_default
|
@@ -54,6 +55,15 @@ class CodeClimateToReek
|
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
58
|
+
# Override for ReportCommand to force the use of CodeClimateReport.
|
59
|
+
module ReportClassOverride
|
60
|
+
def report_class
|
61
|
+
Reek::Report::CodeClimateReport
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
Reek::CLI::Command::ReportCommand.prepend ReportClassOverride
|
66
|
+
|
57
67
|
application = Reek::CLI::Application.new(CodeClimateToReek.new.cli_arguments)
|
58
68
|
|
59
69
|
exit application.execute
|
data/docs/Attribute.md
CHANGED
@@ -29,7 +29,7 @@ test.rb -- 1 warning:
|
|
29
29
|
|
30
30
|
## Support in Reek
|
31
31
|
|
32
|
-
This detector
|
32
|
+
This detector raises a warning for every public `attr_writer`,
|
33
33
|
`attr_accessor`, and `attr` with the writable flag set to `true`.
|
34
34
|
|
35
35
|
Reek does not raise warnings for read-only attributes.
|
data/docs/Boolean-Parameter.md
CHANGED
@@ -38,7 +38,7 @@ Note that both smells are reported, _Boolean Parameter_ and _Control Parameter_.
|
|
38
38
|
|
39
39
|
## Getting rid of the smell
|
40
40
|
|
41
|
-
This is highly
|
41
|
+
This is highly dependent on your exact architecture, but looking at the example above what you could do is:
|
42
42
|
|
43
43
|
* Move everything in the `if` branch into a separate method
|
44
44
|
* Move everything in the `else` branch into a separate method
|
data/docs/Control-Couple.md
CHANGED
@@ -14,7 +14,7 @@ controlling parameter must be reflected on both sides of the call. A _Control
|
|
14
14
|
Couple_ also reveals a loss of simplicity: the called method probably has more
|
15
15
|
than one responsibility, because it includes at least two different code paths.
|
16
16
|
|
17
|
-
You can find a good write-up regarding this problem [here](
|
17
|
+
You can find a good write-up regarding this problem [here](https://solnic.codes/2012/04/11/get-rid-of-that-code-smell-control-couple/).
|
18
18
|
|
19
19
|
## Current Support in Reek
|
20
20
|
|
data/docs/Nil-Check.md
CHANGED
@@ -37,7 +37,10 @@ _Nil Check_ reports use of
|
|
37
37
|
* <code>.nil?</code> method
|
38
38
|
* <code>==</code> and <code>===</code> operators when checking vs. <code>nil</code>
|
39
39
|
* case statements that use syntax like <code>when nil</code>
|
40
|
-
|
40
|
+
|
41
|
+
_Nil Check_ allows use of
|
42
|
+
|
43
|
+
* the safe navigation operator like `foo&.bar`
|
41
44
|
|
42
45
|
## Configuration
|
43
46
|
|