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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +8 -6
  4. data/.rubocop_todo.yml +25 -20
  5. data/.simplecov +1 -0
  6. data/.travis.yml +17 -11
  7. data/CHANGELOG.md +31 -3
  8. data/Dockerfile +1 -0
  9. data/Gemfile +14 -17
  10. data/README.md +15 -11
  11. data/bin/code_climate_reek +12 -2
  12. data/docs/Attribute.md +1 -1
  13. data/docs/Boolean-Parameter.md +1 -1
  14. data/docs/Control-Couple.md +1 -1
  15. data/docs/Nil-Check.md +4 -1
  16. data/features/command_line_interface/options.feature +2 -3
  17. data/features/configuration_files/schema_validation.feature +1 -1
  18. data/features/reports/codeclimate.feature +2 -2
  19. data/features/reports/json.feature +3 -3
  20. data/features/reports/reports.feature +4 -4
  21. data/features/reports/yaml.feature +3 -3
  22. data/features/step_definitions/reek_steps.rb +5 -1
  23. data/features/step_definitions/sample_file_steps.rb +2 -2
  24. data/features/support/env.rb +1 -2
  25. data/lib/reek.rb +1 -0
  26. data/lib/reek/ast/sexp_extensions/arguments.rb +11 -0
  27. data/lib/reek/cli/options.rb +3 -3
  28. data/lib/reek/code_comment.rb +45 -38
  29. data/lib/reek/configuration/app_configuration.rb +4 -3
  30. data/lib/reek/configuration/configuration_converter.rb +2 -2
  31. data/lib/reek/configuration/directory_directives.rb +9 -3
  32. data/lib/reek/context/module_context.rb +3 -1
  33. data/lib/reek/errors/legacy_comment_separator_error.rb +36 -0
  34. data/lib/reek/examiner.rb +3 -3
  35. data/lib/reek/report.rb +5 -7
  36. data/lib/reek/report/code_climate/code_climate_configuration.yml +1 -1
  37. data/lib/reek/report/code_climate/code_climate_report.rb +2 -1
  38. data/lib/reek/report/simple_warning_formatter.rb +0 -7
  39. data/lib/reek/report/text_report.rb +2 -2
  40. data/lib/reek/smell_detectors/base_detector.rb +1 -9
  41. data/lib/reek/smell_detectors/boolean_parameter.rb +3 -1
  42. data/lib/reek/smell_detectors/data_clump.rb +23 -56
  43. data/lib/reek/smell_detectors/nil_check.rb +1 -12
  44. data/lib/reek/smell_detectors/subclassed_from_core_class.rb +3 -7
  45. data/lib/reek/smell_detectors/uncommunicative_variable_name.rb +1 -1
  46. data/lib/reek/smell_warning.rb +1 -2
  47. data/lib/reek/source/source_code.rb +3 -2
  48. data/lib/reek/source/source_locator.rb +13 -10
  49. data/lib/reek/spec/smell_matcher.rb +2 -1
  50. data/lib/reek/version.rb +1 -1
  51. data/reek.gemspec +13 -6
  52. data/spec/performance/reek/smell_detectors/runtime_speed_spec.rb +2 -4
  53. data/spec/quality/documentation_spec.rb +2 -1
  54. data/spec/reek/ast/sexp_extensions_spec.rb +15 -33
  55. data/spec/reek/code_comment_spec.rb +41 -42
  56. data/spec/reek/configuration/directory_directives_spec.rb +6 -0
  57. data/spec/reek/context_builder_spec.rb +110 -113
  58. data/spec/reek/report/code_climate/code_climate_configuration_spec.rb +1 -3
  59. data/spec/reek/report/code_climate/code_climate_fingerprint_spec.rb +26 -26
  60. data/spec/reek/report/code_climate/code_climate_formatter_spec.rb +6 -6
  61. data/spec/reek/report/code_climate/code_climate_report_spec.rb +1 -1
  62. data/spec/reek/report/json_report_spec.rb +1 -1
  63. data/spec/reek/report/location_formatter_spec.rb +3 -3
  64. data/spec/reek/report/text_report_spec.rb +1 -7
  65. data/spec/reek/report/yaml_report_spec.rb +1 -1
  66. data/spec/reek/smell_detectors/base_detector_spec.rb +3 -13
  67. data/spec/reek/smell_detectors/data_clump_spec.rb +14 -0
  68. data/spec/reek/smell_detectors/missing_safe_method_spec.rb +8 -2
  69. data/spec/reek/smell_detectors/nil_check_spec.rb +3 -3
  70. data/spec/reek/smell_warning_spec.rb +12 -12
  71. data/spec/reek/source/source_code_spec.rb +13 -0
  72. data/spec/reek/spec/should_reek_of_spec.rb +0 -1
  73. data/spec/reek/spec/should_reek_only_of_spec.rb +6 -6
  74. data/spec/reek/spec/smell_matcher_spec.rb +1 -1
  75. data/spec/spec_helper.rb +20 -6
  76. data/tasks/configuration.rake +1 -2
  77. metadata +15 -25
  78. data/spec/factories/factories.rb +0 -37
@@ -8,11 +8,10 @@ require 'yaml'
8
8
  namespace :configuration do
9
9
  desc 'Updates the default configuration file when smell defaults change'
10
10
  task :update_default_configuration do
11
- DEFAULT_SMELL_CONFIGURATION = 'docs/defaults.reek.yml'.freeze
12
11
  content = Reek::DetectorRepository.smell_types.each_with_object({}) do |klass, hash|
13
12
  hash[klass.smell_type] = Reek::Configuration::RakeTaskConverter.convert klass.default_config
14
13
  end
15
- File.open(DEFAULT_SMELL_CONFIGURATION, 'w') do |file|
14
+ File.open(Reek::DEFAULT_SMELL_CONFIGURATION, 'w') do |file|
16
15
  YAML.dump({ Reek::DETECTORS_KEY => content }, file)
17
16
  end
18
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reek
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.1
4
+ version: 6.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rutherford
@@ -11,22 +11,8 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-11-12 00:00:00.000000000 Z
14
+ date: 2020-10-17 00:00:00.000000000 Z
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: codeclimate-engine-rb
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - "~>"
21
- - !ruby/object:Gem::Version
22
- version: 0.4.0
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: 0.4.0
30
16
  - !ruby/object:Gem::Dependency
31
17
  name: kwalify
32
18
  requirement: !ruby/object:Gem::Requirement
@@ -47,7 +33,7 @@ dependencies:
47
33
  requirements:
48
34
  - - "<"
49
35
  - !ruby/object:Gem::Version
50
- version: '2.7'
36
+ version: '2.8'
51
37
  - - ">="
52
38
  - !ruby/object:Gem::Version
53
39
  version: 2.5.0.0
@@ -60,7 +46,7 @@ dependencies:
60
46
  requirements:
61
47
  - - "<"
62
48
  - !ruby/object:Gem::Version
63
- version: '2.7'
49
+ version: '2.8'
64
50
  - - ">="
65
51
  - !ruby/object:Gem::Version
66
52
  version: 2.5.0.0
@@ -73,14 +59,14 @@ dependencies:
73
59
  requirements:
74
60
  - - "~>"
75
61
  - !ruby/object:Gem::Version
76
- version: 3.1.0
62
+ version: '3.1'
77
63
  type: :runtime
78
64
  prerelease: false
79
65
  version_requirements: !ruby/object:Gem::Requirement
80
66
  requirements:
81
67
  - - "~>"
82
68
  - !ruby/object:Gem::Version
83
- version: 3.1.0
69
+ version: '3.1'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: rainbow
86
72
  requirement: !ruby/object:Gem::Requirement
@@ -281,6 +267,7 @@ files:
281
267
  - lib/reek/errors/encoding_error.rb
282
268
  - lib/reek/errors/garbage_detector_configuration_in_comment_error.rb
283
269
  - lib/reek/errors/incomprehensible_source_error.rb
270
+ - lib/reek/errors/legacy_comment_separator_error.rb
284
271
  - lib/reek/errors/syntax_error.rb
285
272
  - lib/reek/examiner.rb
286
273
  - lib/reek/logging_error_handler.rb
@@ -385,7 +372,6 @@ files:
385
372
  - samples/source_with_non_ruby_files/gibberish
386
373
  - samples/source_with_non_ruby_files/python_source.py
387
374
  - samples/source_with_non_ruby_files/ruby.rb
388
- - spec/factories/factories.rb
389
375
  - spec/performance/reek/smell_detectors/runtime_speed_spec.rb
390
376
  - spec/quality/documentation_spec.rb
391
377
  - spec/quality/reek_source_spec.rb
@@ -479,7 +465,12 @@ files:
479
465
  homepage: https://github.com/troessner/reek
480
466
  licenses:
481
467
  - MIT
482
- metadata: {}
468
+ metadata:
469
+ homepage_uri: https://github.com/troessner/reek
470
+ source_code_uri: https://github.com/troessner/reek
471
+ bug_tracker_uri: https://github.com/troessner/reek/issues
472
+ changelog_uri: https://github.com/troessner/reek/CHANGELOG.md
473
+ documentation_uri: https://www.rubydoc.info/gems/reek
483
474
  post_install_message:
484
475
  rdoc_options:
485
476
  - "--main"
@@ -492,15 +483,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
492
483
  requirements:
493
484
  - - ">="
494
485
  - !ruby/object:Gem::Version
495
- version: 2.3.0
486
+ version: 2.4.0
496
487
  required_rubygems_version: !ruby/object:Gem::Requirement
497
488
  requirements:
498
489
  - - ">="
499
490
  - !ruby/object:Gem::Version
500
491
  version: '0'
501
492
  requirements: []
502
- rubyforge_project:
503
- rubygems_version: 2.7.7
493
+ rubygems_version: 3.1.2
504
494
  signing_key:
505
495
  specification_version: 4
506
496
  summary: Code smell detector for Ruby
@@ -1,37 +0,0 @@
1
- require_relative '../../lib/reek/smell_detectors'
2
- require_relative '../../lib/reek/smell_detectors/base_detector'
3
- require_relative '../../lib/reek/smell_warning'
4
- require_relative '../../lib/reek/cli/options'
5
-
6
- FactoryBot.define do
7
- factory :smell_warning, class: Reek::SmellWarning do
8
- skip_create
9
-
10
- smell_type { 'FeatureEnvy' }
11
- source { 'dummy_file' }
12
- lines { [42] }
13
- message { 'smell warning message' }
14
- parameters { {} }
15
- context { 'self' }
16
-
17
- initialize_with do
18
- new(smell_type,
19
- source: source,
20
- context: context,
21
- lines: lines,
22
- message: message,
23
- parameters: parameters)
24
- end
25
- end
26
-
27
- factory :code_comment, class: Reek::CodeComment do
28
- comment { '' }
29
- line { 1 }
30
- source { 'string' }
31
- initialize_with do
32
- new comment: comment,
33
- line: line,
34
- source: source
35
- end
36
- end
37
- end