reek 5.4.1 → 6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
* ![](http://ruby-gem-downloads-badge.herokuapp.com/reek?type=total)
|
46
46
|
* ![](http://ruby-gem-downloads-badge.herokuapp.com/reek?label=downloads-current-version)
|
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
|
|