reek 3.11 → 4.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -0
  3. data/.travis.yml +0 -1
  4. data/CHANGELOG.md +13 -1
  5. data/README.md +0 -1
  6. data/bin/code_climate_reek +1 -0
  7. data/bin/reek +1 -0
  8. data/docs/API.md +2 -2
  9. data/docs/RSpec-matchers.md +4 -7
  10. data/features/reports/json.feature +0 -4
  11. data/features/reports/yaml.feature +4 -8
  12. data/lib/reek.rb +1 -0
  13. data/lib/reek/ast/ast_node_class_map.rb +1 -0
  14. data/lib/reek/ast/node.rb +1 -0
  15. data/lib/reek/ast/object_refs.rb +2 -1
  16. data/lib/reek/ast/reference_collector.rb +1 -0
  17. data/lib/reek/ast/sexp_extensions.rb +1 -0
  18. data/lib/reek/ast/sexp_extensions/arguments.rb +1 -0
  19. data/lib/reek/ast/sexp_extensions/attribute_assignments.rb +1 -0
  20. data/lib/reek/ast/sexp_extensions/block.rb +1 -0
  21. data/lib/reek/ast/sexp_extensions/case.rb +1 -0
  22. data/lib/reek/ast/sexp_extensions/constant.rb +1 -0
  23. data/lib/reek/ast/sexp_extensions/if.rb +1 -0
  24. data/lib/reek/ast/sexp_extensions/literal.rb +1 -0
  25. data/lib/reek/ast/sexp_extensions/logical_operators.rb +1 -0
  26. data/lib/reek/ast/sexp_extensions/methods.rb +1 -0
  27. data/lib/reek/ast/sexp_extensions/module.rb +1 -0
  28. data/lib/reek/ast/sexp_extensions/nested_assignables.rb +1 -0
  29. data/lib/reek/ast/sexp_extensions/self.rb +1 -0
  30. data/lib/reek/ast/sexp_extensions/send.rb +1 -0
  31. data/lib/reek/ast/sexp_extensions/super.rb +1 -0
  32. data/lib/reek/ast/sexp_extensions/symbols.rb +1 -0
  33. data/lib/reek/ast/sexp_extensions/variables.rb +1 -0
  34. data/lib/reek/ast/sexp_extensions/when.rb +1 -0
  35. data/lib/reek/ast/sexp_extensions/yield.rb +1 -0
  36. data/lib/reek/cli/application.rb +1 -0
  37. data/lib/reek/cli/command/base_command.rb +1 -0
  38. data/lib/reek/cli/command/report_command.rb +2 -1
  39. data/lib/reek/cli/command/todo_list_command.rb +2 -1
  40. data/lib/reek/cli/input.rb +1 -0
  41. data/lib/reek/cli/option_interpreter.rb +1 -0
  42. data/lib/reek/cli/options.rb +1 -0
  43. data/lib/reek/cli/silencer.rb +1 -0
  44. data/lib/reek/cli/warning_collector.rb +1 -0
  45. data/lib/reek/code_comment.rb +1 -0
  46. data/lib/reek/configuration/app_configuration.rb +1 -0
  47. data/lib/reek/configuration/configuration_file_finder.rb +1 -0
  48. data/lib/reek/configuration/configuration_validator.rb +1 -0
  49. data/lib/reek/configuration/default_directive.rb +1 -0
  50. data/lib/reek/configuration/directory_directives.rb +1 -0
  51. data/lib/reek/configuration/excluded_paths.rb +1 -0
  52. data/lib/reek/context/attribute_context.rb +1 -0
  53. data/lib/reek/context/class_context.rb +1 -0
  54. data/lib/reek/context/code_context.rb +1 -0
  55. data/lib/reek/context/ghost_context.rb +1 -0
  56. data/lib/reek/context/method_context.rb +1 -0
  57. data/lib/reek/context/module_context.rb +1 -0
  58. data/lib/reek/context/root_context.rb +1 -0
  59. data/lib/reek/context/send_context.rb +1 -0
  60. data/lib/reek/context/singleton_attribute_context.rb +1 -0
  61. data/lib/reek/context/singleton_method_context.rb +1 -0
  62. data/lib/reek/context/statement_counter.rb +1 -0
  63. data/lib/reek/context/visibility_tracker.rb +3 -2
  64. data/lib/reek/context_builder.rb +1 -0
  65. data/lib/reek/examiner.rb +2 -1
  66. data/lib/reek/rake/task.rb +1 -0
  67. data/lib/reek/report.rb +1 -0
  68. data/lib/reek/report/code_climate/code_climate_formatter.rb +2 -2
  69. data/lib/reek/report/formatter.rb +1 -0
  70. data/lib/reek/report/heading_formatter.rb +1 -0
  71. data/lib/reek/report/location_formatter.rb +1 -0
  72. data/lib/reek/report/report.rb +3 -3
  73. data/lib/reek/smells.rb +1 -0
  74. data/lib/reek/smells/attribute.rb +1 -0
  75. data/lib/reek/smells/boolean_parameter.rb +1 -4
  76. data/lib/reek/smells/class_variable.rb +1 -0
  77. data/lib/reek/smells/control_parameter.rb +7 -4
  78. data/lib/reek/smells/data_clump.rb +1 -0
  79. data/lib/reek/smells/duplicate_method_call.rb +5 -4
  80. data/lib/reek/smells/feature_envy.rb +1 -4
  81. data/lib/reek/smells/irresponsible_module.rb +1 -0
  82. data/lib/reek/smells/long_parameter_list.rb +1 -0
  83. data/lib/reek/smells/long_yield_list.rb +1 -4
  84. data/lib/reek/smells/module_initialize.rb +1 -0
  85. data/lib/reek/smells/nested_iterators.rb +2 -1
  86. data/lib/reek/smells/nil_check.rb +3 -4
  87. data/lib/reek/smells/prima_donna_method.rb +1 -0
  88. data/lib/reek/smells/repeated_conditional.rb +1 -4
  89. data/lib/reek/smells/smell_configuration.rb +1 -0
  90. data/lib/reek/smells/smell_detector.rb +2 -13
  91. data/lib/reek/smells/smell_repository.rb +1 -0
  92. data/lib/reek/smells/smell_warning.rb +4 -6
  93. data/lib/reek/smells/too_many_instance_variables.rb +1 -4
  94. data/lib/reek/smells/too_many_methods.rb +1 -4
  95. data/lib/reek/smells/too_many_statements.rb +1 -4
  96. data/lib/reek/smells/uncommunicative_method_name.rb +2 -5
  97. data/lib/reek/smells/uncommunicative_module_name.rb +2 -6
  98. data/lib/reek/smells/uncommunicative_parameter_name.rb +3 -6
  99. data/lib/reek/smells/uncommunicative_variable_name.rb +1 -4
  100. data/lib/reek/smells/unused_parameters.rb +1 -4
  101. data/lib/reek/smells/unused_private_method.rb +1 -0
  102. data/lib/reek/smells/utility_function.rb +1 -4
  103. data/lib/reek/source/source_code.rb +2 -1
  104. data/lib/reek/source/source_locator.rb +1 -0
  105. data/lib/reek/spec.rb +16 -23
  106. data/lib/reek/spec/should_reek.rb +3 -2
  107. data/lib/reek/spec/should_reek_of.rb +18 -15
  108. data/lib/reek/spec/should_reek_only_of.rb +6 -5
  109. data/lib/reek/spec/smell_matcher.rb +3 -7
  110. data/lib/reek/tree_dresser.rb +1 -0
  111. data/lib/reek/version.rb +2 -1
  112. data/reek.gemspec +1 -1
  113. data/spec/reek/examiner_spec.rb +8 -4
  114. data/spec/reek/report/code_climate_formatter_spec.rb +1 -1
  115. data/spec/reek/report/code_climate_report_spec.rb +2 -2
  116. data/spec/reek/report/html_report_spec.rb +1 -6
  117. data/spec/reek/report/json_report_spec.rb +0 -4
  118. data/spec/reek/report/yaml_report_spec.rb +0 -4
  119. data/spec/reek/smells/data_clump_spec.rb +2 -2
  120. data/spec/reek/smells/feature_envy_spec.rb +3 -3
  121. data/spec/reek/smells/nested_iterators_spec.rb +0 -1
  122. data/spec/reek/smells/prima_donna_method_spec.rb +0 -1
  123. data/spec/reek/smells/smell_detector_shared.rb +1 -5
  124. data/spec/reek/smells/too_many_methods_spec.rb +0 -1
  125. data/spec/reek/smells/uncommunicative_module_name_spec.rb +0 -1
  126. data/spec/reek/smells/unused_private_method_spec.rb +6 -4
  127. data/spec/reek/smells/utility_function_spec.rb +1 -1
  128. data/spec/reek/spec/should_reek_of_spec.rb +7 -3
  129. data/spec/reek/spec/smell_matcher_spec.rb +0 -4
  130. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 67870a4dc44b9996f80e3daddb3614cbc9a1ee6d
4
- data.tar.gz: 8eedb66acfa7d1b874a2806ffd7b6aab69769794
3
+ metadata.gz: 8309582de93065645810663cbed12c501ffe0b68
4
+ data.tar.gz: 73712e80702d432edc320bb5531846d3eefcf266
5
5
  SHA512:
6
- metadata.gz: ad6862ed6352640db4ff88fbe718c6116579d257a6c83337dd1603e1a8580686da6895be5b478db0d5ebd4fd3e288c3e29a9e56ae25cc5115053eef8a18540f9
7
- data.tar.gz: 8e1cc3bd8e0d9f6c00dfa21e2cd2ba6c9706b817c0a6c895d75be07f58f28f2ce9159f20edbceb1d1e9d676869f65b7771119ac339af04cc2ade6c01854ae8b9
6
+ metadata.gz: bce9a189c55a37b998dbe35a353fd3ab0ec8379a7c8e058712be3d8d3d5a2c0e111375ccb1b12f2146deea7225272a4cfcfe06c2e199d3d0aa75d8450a179cc7
7
+ data.tar.gz: dc7cca14a3c083bd41ce51f6cfbbd1da3339bd70c53282fa1f1d3d73102a3f06fa5718af8c61a339bab10210e558bf626d50e315a822ae3f3168dfefb4b2ddd5
data/.rubocop.yml CHANGED
@@ -3,6 +3,7 @@ AllCops:
3
3
  - 'spec/samples/**/*'
4
4
  - 'tmp/**/*'
5
5
  - 'vendor/**/*'
6
+ TargetRubyVersion: 2.1
6
7
 
7
8
  # FIXME: Make the class shorter
8
9
  Metrics/ClassLength:
@@ -40,6 +41,13 @@ Style/DotPosition:
40
41
  Style/EmptyLineBetweenDefs:
41
42
  AllowAdjacentOneLineDefs: true
42
43
 
44
+ # Require comment for files in lib and bin
45
+ Style/FrozenStringLiteralComment:
46
+ Include:
47
+ - 'bin/*'
48
+ - 'lib/**/*'
49
+ EnforcedStyle: always
50
+
43
51
  # Allow multiline block chains
44
52
  Style/MultilineBlockChain:
45
53
  Enabled: false
data/.travis.yml CHANGED
@@ -6,7 +6,6 @@ script:
6
6
  - bundle exec rake
7
7
  - bundle exec ataru check
8
8
  rvm:
9
- - 2.0.0
10
9
  - 2.1
11
10
  - 2.2
12
11
  - 2.3.0
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Change log
2
2
 
3
- ## Unreleased
3
+ ## 4.0.0.pre1 (2016-03-01)
4
+
5
+ * First pre-release for Reek 4.
6
+ * (troessner) Make all optional arguments to Examiner's constructor keyword
7
+ arguments.
8
+ * (troessner) Use keyword arguments without defaults as allowed by Ruby 2.1.
9
+ * (mvz) Remove smell category concept:
10
+ - The smell category is removed from the YAML and JSON outputs.
11
+ - The smell category can no longer be used to select smells in the reek_of
12
+ matcher.
13
+ * (chastell) Make HTML report print to stdout like the other reports
14
+ * (troessner) Drop support for CRuby 2.0
15
+ * (mvz) Speed up reek_of matcher by only running the given smell
4
16
 
5
17
  ## 3.11 (2016-02-18)
6
18
 
data/README.md CHANGED
@@ -65,7 +65,6 @@ demo.rb -- 8 warnings:
65
65
 
66
66
  Reek is officially running on the following MRI rubies:
67
67
 
68
- - 2.0
69
68
  - 2.1
70
69
  - 2.2
71
70
  - 2.3
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # Wrapper for the CodeClimate integration.
4
5
 
data/bin/reek CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # Reek examines Ruby source code for smells.
4
5
  # Visit https://wiki.github.com/troessner/reek for docs etc.
data/docs/API.md CHANGED
@@ -32,7 +32,7 @@ source = <<-EOS
32
32
  EOS
33
33
 
34
34
  reporter = Reek::Report::TextReport.new
35
- examiner = Reek::Examiner.new(source)
35
+ examiner = Reek::Examiner.new source
36
36
  reporter.add_examiner examiner
37
37
  reporter.show
38
38
  ```
@@ -175,7 +175,7 @@ source = <<-END
175
175
  end
176
176
  END
177
177
 
178
- examiner = Reek::Examiner.new(source)
178
+ examiner = Reek::Examiner.new source
179
179
  examiner.smells.each do |smell|
180
180
  puts smell.message
181
181
  end
@@ -71,21 +71,18 @@ See the "Quickstart" example from above.
71
71
 
72
72
  ### `reek_of`
73
73
 
74
- Checks the target source code for instances of "smell category"
74
+ Checks the target source code for instances of "smell type"
75
75
  and returns true only if it can find one of them that matches.
76
76
 
77
77
  Remember that this includes our "smell types" as well. So it could be the
78
78
  "smell type" UtilityFunction, which is represented as a concrete class
79
79
  in Reek but it could also be "Duplication" which is a "smell categgory".
80
80
 
81
- In theory you could pass many different types of input here:
81
+ You could pass many different types of input here:
82
82
  - `:UtilityFunction`
83
83
  - `"UtilityFunction"`
84
- - `UtilityFunction` (this works in our specs because we tend to do "include
85
- Reek:Smells")
86
84
  - `Reek::Smells::UtilityFunction` (the right way if you really want to pass a
87
85
  class)
88
- - `"Duplication"` or `:Duplication` which is an abstract "smell category"
89
86
 
90
87
  It is recommended to pass this as a symbol like `:UtilityFunction`. However we
91
88
  don't enforce this.
@@ -100,7 +97,7 @@ something that doesn't make much sense.
100
97
 
101
98
  So in a nutshell `reek_of` takes the following two arguments:
102
99
 
103
- - `smell_category` - The "smell category" or "smell_type" we check for.
100
+ - `smell_type` - The "smell type" we check for.
104
101
  - `smells_details` - A hash containing "smell warning" parameters
105
102
 
106
103
  **Examples**
@@ -131,7 +128,7 @@ See the documentaton for `reek_of`.
131
128
 
132
129
  **Notable differences to `reek_of`:**
133
130
 
134
- 1. `reek_of` doesn't mind if there are other smells of a different category.
131
+ 1. `reek_of` doesn't mind if there are other smells of a different type.
135
132
  "reek_only_of" will fail in that case.
136
133
 
137
134
  2. `reek_only_of` doesn't support the additional smell_details hash.
@@ -19,7 +19,6 @@ Feature: Report smells using simple JSON layout
19
19
  """
20
20
  [
21
21
  {
22
- "smell_category": "Duplication",
23
22
  "smell_type": "DuplicateMethodCall",
24
23
  "source": "smelly.rb",
25
24
  "context": "Smelly#m",
@@ -30,7 +29,6 @@ Feature: Report smells using simple JSON layout
30
29
  "count": 2
31
30
  },
32
31
  {
33
- "smell_category": "Duplication",
34
32
  "smell_type": "DuplicateMethodCall",
35
33
  "source": "smelly.rb",
36
34
  "context": "Smelly#m",
@@ -41,7 +39,6 @@ Feature: Report smells using simple JSON layout
41
39
  "count": 2
42
40
  },
43
41
  {
44
- "smell_category": "UncommunicativeName",
45
42
  "smell_type": "UncommunicativeMethodName",
46
43
  "source": "smelly.rb",
47
44
  "context": "Smelly#m",
@@ -60,7 +57,6 @@ Feature: Report smells using simple JSON layout
60
57
  """
61
58
  [
62
59
  {
63
- "smell_category": "IrresponsibleModule",
64
60
  "smell_type": "IrresponsibleModule",
65
61
  "source": "STDIN",
66
62
  "context": "Turn",
@@ -18,8 +18,7 @@ Feature: Report smells using simple YAML layout
18
18
  And it reports this yaml:
19
19
  """
20
20
  ---
21
- - smell_category: Duplication
22
- smell_type: DuplicateMethodCall
21
+ - smell_type: DuplicateMethodCall
23
22
  source: smelly.rb
24
23
  context: Smelly#m
25
24
  lines:
@@ -29,8 +28,7 @@ Feature: Report smells using simple YAML layout
29
28
  name: "@foo.bar"
30
29
  count: 2
31
30
  wiki_link: https://github.com/troessner/reek/blob/master/docs/Duplicate-Method-Call.md
32
- - smell_category: Duplication
33
- smell_type: DuplicateMethodCall
31
+ - smell_type: DuplicateMethodCall
34
32
  source: smelly.rb
35
33
  context: Smelly#m
36
34
  lines:
@@ -40,8 +38,7 @@ Feature: Report smells using simple YAML layout
40
38
  name: puts @foo.bar
41
39
  count: 2
42
40
  wiki_link: https://github.com/troessner/reek/blob/master/docs/Duplicate-Method-Call.md
43
- - smell_category: UncommunicativeName
44
- smell_type: UncommunicativeMethodName
41
+ - smell_type: UncommunicativeMethodName
45
42
  source: smelly.rb
46
43
  context: Smelly#m
47
44
  lines:
@@ -57,8 +54,7 @@ Feature: Report smells using simple YAML layout
57
54
  And it reports this yaml:
58
55
  """
59
56
  ---
60
- - smell_category: IrresponsibleModule
61
- smell_type: IrresponsibleModule
57
+ - smell_type: IrresponsibleModule
62
58
  source: "STDIN"
63
59
  context: Turn
64
60
  lines:
data/lib/reek.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Reek's core functionality
3
4
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'node'
2
3
  require_relative 'sexp_extensions'
3
4
 
data/lib/reek/ast/node.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative '../cli/silencer'
2
3
 
3
4
  Reek::CLI::Silencer.silently do
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  # Represents functionality related to an Abstract Syntax Tree.
3
4
  module AST
@@ -29,7 +30,7 @@ module Reek
29
30
  # @param line [Int] The line number where this reference occurs.
30
31
  #
31
32
  # @return [Int|nil] The line number that was added (which might be nil).
32
- def record_reference(name: raise, line: nil)
33
+ def record_reference(name:, line: nil)
33
34
  refs[name] << line
34
35
  end
35
36
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'reference_collector'
2
3
 
3
4
  require_relative 'sexp_extensions/arguments'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module AST
3
4
  module SexpExtensions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'options'
2
3
  require_relative 'option_interpreter'
3
4
  require_relative '../configuration/app_configuration'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Reek
2
3
  module CLI
3
4
  module Command
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'base_command'
2
3
  require_relative '../../examiner'
3
4
 
@@ -20,7 +21,7 @@ module Reek
20
21
  def populate_reporter_with_smells(app)
21
22
  sources.each do |source|
22
23
  reporter.add_examiner Examiner.new(source,
23
- smell_names,
24
+ filter_by_smells: smell_names,
24
25
  configuration: app.configuration)
25
26
  end
26
27
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'base_command'
2
3
  require_relative '../../examiner'
3
4
 
@@ -29,7 +30,7 @@ module Reek
29
30
  def scan_for_smells(app)
30
31
  sources.map do |source|
31
32
  Examiner.new(source,
32
- smell_names,
33
+ filter_by_smells: smell_names,
33
34
  configuration: app.configuration)
34
35
  end.map(&:smells).flatten
35
36
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative '../source/source_locator'
2
3
 
3
4
  module Reek
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'forwardable'
2
3
  require_relative 'input'
3
4
  require_relative '../report'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'optparse'
2
3
  require 'rainbow'
3
4
  require_relative '../version'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'stringio'
2
3
 
3
4
  module Reek