reek 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -21
- data/.travis.yml +1 -0
- data/.yardopts +3 -6
- data/CHANGELOG +6 -0
- data/CONTRIBUTING.md +8 -3
- data/README.md +94 -42
- data/config/defaults.reek +0 -1
- data/docs/API.md +50 -0
- data/docs/Attribute.md +43 -0
- data/docs/Basic-Smell-Options.md +44 -0
- data/docs/Boolean-Parameter.md +52 -0
- data/docs/Class-Variable.md +40 -0
- data/docs/Code-Smells.md +34 -0
- data/docs/Command-Line-Options.md +84 -0
- data/docs/Configuration-Files.md +38 -0
- data/docs/Control-Couple.md +22 -0
- data/docs/Control-Parameter.md +29 -0
- data/docs/Data-Clump.md +44 -0
- data/docs/Duplicate-Method-Call.md +49 -0
- data/docs/Feature-Envy.md +29 -0
- data/docs/How-reek-works-internally.md +44 -0
- data/docs/Irresponsible-Module.md +39 -0
- data/docs/Large-Class.md +20 -0
- data/docs/Long-Parameter-List.md +38 -0
- data/docs/Long-Yield-List.md +36 -0
- data/docs/Module-Initialize.md +62 -0
- data/docs/Nested-Iterators.md +38 -0
- data/docs/Nil-Check.md +39 -0
- data/docs/Prima-Donna-Method.md +53 -0
- data/docs/RSpec-matchers.md +133 -0
- data/docs/Rake-Task.md +58 -0
- data/docs/Reek-Driven-Development.md +45 -0
- data/docs/Repeated-Conditional.md +44 -0
- data/docs/Simulated-Polymorphism.md +16 -0
- data/docs/Smell-Suppression.md +32 -0
- data/docs/Too-Many-Instance-Variables.md +43 -0
- data/docs/Too-Many-Methods.md +55 -0
- data/docs/Too-Many-Statements.md +50 -0
- data/docs/Uncommunicative-Method-Name.md +24 -0
- data/docs/Uncommunicative-Module-Name.md +23 -0
- data/docs/Uncommunicative-Name.md +16 -0
- data/docs/Uncommunicative-Parameter-Name.md +24 -0
- data/docs/Uncommunicative-Variable-Name.md +24 -0
- data/docs/Unused-Parameters.md +27 -0
- data/docs/Utility-Function.md +46 -0
- data/docs/Versioning-Policy.md +7 -0
- data/docs/YAML-Reports.md +111 -0
- data/docs/yard_plugin.rb +14 -0
- data/features/command_line_interface/options.feature +1 -0
- data/features/programmatic_access.feature +1 -1
- data/features/samples.feature +3 -3
- data/lib/reek.rb +2 -2
- data/lib/reek/cli/input.rb +2 -2
- data/lib/reek/cli/option_interpreter.rb +2 -0
- data/lib/reek/cli/options.rb +10 -4
- data/lib/reek/cli/reek_command.rb +2 -2
- data/lib/reek/cli/report/report.rb +60 -0
- data/lib/reek/cli/silencer.rb +13 -0
- data/lib/reek/{source → core}/ast_node.rb +1 -1
- data/lib/reek/{source → core}/ast_node_class_map.rb +10 -11
- data/lib/reek/{source → core}/code_comment.rb +1 -1
- data/lib/reek/core/code_context.rb +1 -1
- data/lib/reek/core/examiner.rb +85 -0
- data/lib/reek/core/method_context.rb +1 -1
- data/lib/reek/core/module_context.rb +2 -2
- data/lib/reek/core/reference_collector.rb +31 -0
- data/lib/reek/core/singleton_method_context.rb +0 -4
- data/lib/reek/core/smell_repository.rb +4 -2
- data/lib/reek/{source → core}/tree_dresser.rb +1 -1
- data/lib/reek/{source → sexp}/sexp_extensions.rb +5 -5
- data/lib/reek/sexp/sexp_formatter.rb +29 -0
- data/lib/reek/sexp/sexp_node.rb +91 -0
- data/lib/reek/smells.rb +4 -2
- data/lib/reek/smells/attribute.rb +35 -7
- data/lib/reek/smells/boolean_parameter.rb +1 -1
- data/lib/reek/smells/class_variable.rb +1 -1
- data/lib/reek/smells/control_parameter.rb +1 -1
- data/lib/reek/smells/data_clump.rb +1 -1
- data/lib/reek/smells/duplicate_method_call.rb +12 -4
- data/lib/reek/smells/feature_envy.rb +1 -1
- data/lib/reek/smells/irresponsible_module.rb +3 -3
- data/lib/reek/smells/long_parameter_list.rb +1 -1
- data/lib/reek/smells/long_yield_list.rb +1 -1
- data/lib/reek/smells/module_initialize.rb +1 -1
- data/lib/reek/smells/nested_iterators.rb +1 -1
- data/lib/reek/smells/nil_check.rb +3 -2
- data/lib/reek/smells/prima_donna_method.rb +18 -11
- data/lib/reek/smells/repeated_conditional.rb +3 -3
- data/lib/reek/smells/smell_detector.rb +5 -1
- data/lib/reek/smells/smell_warning.rb +99 -0
- data/lib/reek/smells/too_many_instance_variables.rb +1 -1
- data/lib/reek/smells/too_many_methods.rb +1 -1
- data/lib/reek/smells/too_many_statements.rb +1 -1
- data/lib/reek/smells/uncommunicative_method_name.rb +1 -1
- data/lib/reek/smells/uncommunicative_module_name.rb +1 -1
- data/lib/reek/smells/uncommunicative_parameter_name.rb +1 -1
- data/lib/reek/smells/uncommunicative_variable_name.rb +1 -1
- data/lib/reek/smells/unused_parameters.rb +1 -1
- data/lib/reek/smells/utility_function.rb +3 -16
- data/lib/reek/source/source_code.rb +31 -13
- data/lib/reek/source/source_locator.rb +16 -17
- data/lib/reek/source/source_repository.rb +10 -11
- data/lib/reek/spec/should_reek.rb +2 -2
- data/lib/reek/spec/should_reek_of.rb +2 -2
- data/lib/reek/spec/should_reek_only_of.rb +2 -2
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +3 -4
- data/spec/factories/factories.rb +1 -1
- data/spec/gem/yard_spec.rb +1 -1
- data/spec/quality/reek_source_spec.rb +2 -2
- data/spec/reek/cli/html_report_spec.rb +3 -3
- data/spec/reek/cli/json_report_spec.rb +3 -3
- data/spec/reek/cli/{option_interperter_spec.rb → option_interpreter_spec.rb} +1 -1
- data/spec/reek/cli/options_spec.rb +19 -0
- data/spec/reek/cli/text_report_spec.rb +7 -7
- data/spec/reek/cli/xml_report_spec.rb +34 -0
- data/spec/reek/cli/yaml_report_spec.rb +3 -3
- data/spec/reek/configuration/app_configuration_spec.rb +1 -1
- data/spec/reek/configuration/configuration_file_finder_spec.rb +22 -1
- data/spec/reek/{source → core}/code_comment_spec.rb +14 -14
- data/spec/reek/core/code_context_spec.rb +1 -1
- data/spec/reek/{examiner_spec.rb → core/examiner_spec.rb} +12 -12
- data/spec/reek/core/method_context_spec.rb +27 -22
- data/spec/reek/core/module_context_spec.rb +2 -2
- data/spec/reek/core/object_refs_spec.rb +1 -1
- data/spec/reek/{source → core}/object_source_spec.rb +1 -1
- data/spec/reek/{source → core}/reference_collector_spec.rb +25 -16
- data/spec/reek/core/singleton_method_context_spec.rb +12 -2
- data/spec/reek/core/smell_configuration_spec.rb +1 -1
- data/spec/reek/core/smell_repository_spec.rb +12 -1
- data/spec/reek/core/stop_context_spec.rb +1 -1
- data/spec/reek/core/tree_dresser_spec.rb +16 -0
- data/spec/reek/core/tree_walker_spec.rb +3 -3
- data/spec/reek/core/warning_collector_spec.rb +6 -6
- data/spec/reek/{source → sexp}/sexp_extensions_spec.rb +8 -8
- data/spec/reek/{source → sexp}/sexp_formatter_spec.rb +11 -5
- data/spec/reek/{source → sexp}/sexp_node_spec.rb +3 -3
- data/spec/reek/smells/attribute_spec.rb +89 -85
- data/spec/reek/smells/behaves_like_variable_detector.rb +1 -1
- data/spec/reek/smells/boolean_parameter_spec.rb +1 -1
- data/spec/reek/smells/class_variable_spec.rb +1 -1
- data/spec/reek/smells/control_parameter_spec.rb +1 -1
- data/spec/reek/smells/data_clump_spec.rb +2 -2
- data/spec/reek/smells/duplicate_method_call_spec.rb +1 -1
- data/spec/reek/smells/feature_envy_spec.rb +2 -2
- data/spec/reek/smells/irresponsible_module_spec.rb +1 -1
- data/spec/reek/smells/long_parameter_list_spec.rb +2 -2
- data/spec/reek/smells/long_yield_list_spec.rb +1 -1
- data/spec/reek/smells/module_initialize_spec.rb +1 -1
- data/spec/reek/smells/nested_iterators_spec.rb +2 -2
- data/spec/reek/smells/nil_check_spec.rb +1 -1
- data/spec/reek/smells/prima_donna_method_spec.rb +1 -1
- data/spec/reek/smells/repeated_conditional_spec.rb +1 -1
- data/spec/reek/smells/smell_detector_shared.rb +2 -2
- data/spec/reek/{smell_warning_spec.rb → smells/smell_warning_spec.rb} +7 -7
- data/spec/reek/smells/too_many_instance_variables_spec.rb +1 -1
- data/spec/reek/smells/too_many_methods_spec.rb +1 -1
- data/spec/reek/smells/too_many_statements_spec.rb +4 -4
- data/spec/reek/smells/uncommunicative_method_name_spec.rb +1 -1
- data/spec/reek/smells/uncommunicative_module_name_spec.rb +1 -1
- data/spec/reek/smells/uncommunicative_parameter_name_spec.rb +1 -1
- data/spec/reek/smells/uncommunicative_variable_name_spec.rb +1 -1
- data/spec/reek/smells/unused_parameters_spec.rb +1 -1
- data/spec/reek/smells/utility_function_spec.rb +1 -1
- data/spec/reek/source/source_code_spec.rb +1 -1
- data/spec/reek/spec/should_reek_of_spec.rb +1 -1
- data/spec/reek/spec/should_reek_only_of_spec.rb +1 -1
- data/spec/reek/spec/should_reek_spec.rb +1 -1
- data/spec/samples/checkstyle.xml +2 -0
- data/spec/spec_helper.rb +15 -3
- metadata +68 -38
- data/.ruby-gemset +0 -1
- data/lib/reek/examiner.rb +0 -79
- data/lib/reek/smell_warning.rb +0 -87
- data/lib/reek/source/reference_collector.rb +0 -27
- data/lib/reek/source/sexp_formatter.rb +0 -22
- data/lib/reek/source/sexp_node.rb +0 -79
- data/spec/reek/source/tree_dresser_spec.rb +0 -16
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/boolean_parameter'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::BooleanParameter do
|
5
|
+
RSpec.describe Reek::Smells::BooleanParameter do
|
6
6
|
context 'parameter defaulted with boolean' do
|
7
7
|
context 'in a method' do
|
8
8
|
it 'reports a parameter defaulted to true' do
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/smells/class_variable'
|
|
3
3
|
require_relative '../../../lib/reek/core/module_context'
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
|
-
describe Reek::Smells::ClassVariable do
|
6
|
+
RSpec.describe Reek::Smells::ClassVariable do
|
7
7
|
before :each do
|
8
8
|
@source_name = 'dummy_source'
|
9
9
|
@detector = build(:smell_detector, smell_type: :ClassVariable, source: @source_name)
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/control_parameter'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::ControlParameter do
|
5
|
+
RSpec.describe Reek::Smells::ControlParameter do
|
6
6
|
before(:each) do
|
7
7
|
@source_name = 'dummy_source'
|
8
8
|
@detector = build(:smell_detector, smell_type: :ControlParameter, source: @source_name)
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/data_clump'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
shared_examples_for 'a data clump detector' do
|
5
|
+
RSpec.shared_examples_for 'a data clump detector' do
|
6
6
|
it 'does not report small parameter sets' do
|
7
7
|
src = <<-EOS
|
8
8
|
# test module
|
@@ -160,7 +160,7 @@ shared_examples_for 'a data clump detector' do
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
describe Reek::Smells::DataClump do
|
163
|
+
RSpec.describe Reek::Smells::DataClump do
|
164
164
|
before(:each) do
|
165
165
|
@detector = build(:smell_detector, smell_type: :DataClump)
|
166
166
|
end
|
@@ -4,7 +4,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
4
4
|
require_relative '../../../lib/reek/core/tree_walker'
|
5
5
|
require_relative 'smell_detector_shared'
|
6
6
|
|
7
|
-
describe Reek::Smells::DuplicateMethodCall do
|
7
|
+
RSpec.describe Reek::Smells::DuplicateMethodCall do
|
8
8
|
context 'when a smell is reported' do
|
9
9
|
before :each do
|
10
10
|
@source_name = 'dummy_source'
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/feature_envy'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::FeatureEnvy do
|
5
|
+
RSpec.describe Reek::Smells::FeatureEnvy do
|
6
6
|
context 'with no smell' do
|
7
7
|
it 'should not report use of self' do
|
8
8
|
expect('def simple() self.to_s + self.to_i end').not_to reek_of(:FeatureEnvy)
|
@@ -211,7 +211,7 @@ describe Reek::Smells::FeatureEnvy do
|
|
211
211
|
end
|
212
212
|
end
|
213
213
|
|
214
|
-
describe Reek::Smells::FeatureEnvy do
|
214
|
+
RSpec.describe Reek::Smells::FeatureEnvy do
|
215
215
|
before(:each) do
|
216
216
|
@source_name = 'dummy_source'
|
217
217
|
@detector = build(:smell_detector, smell_type: :FeatureEnvy, source: @source_name)
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
3
3
|
require_relative '../../../lib/reek/smells/irresponsible_module'
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
|
-
describe Reek::Smells::IrresponsibleModule do
|
6
|
+
RSpec.describe Reek::Smells::IrresponsibleModule do
|
7
7
|
before(:each) do
|
8
8
|
@bad_module_name = 'WrongUn'
|
9
9
|
@source_name = 'dummy_source'
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
3
3
|
require_relative '../../../lib/reek/smells/long_parameter_list'
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
|
-
describe Reek::Smells::LongParameterList do
|
6
|
+
RSpec.describe Reek::Smells::LongParameterList do
|
7
7
|
context 'for methods with few parameters' do
|
8
8
|
it 'should report nothing for no parameters' do
|
9
9
|
expect('def simple; f(3);true; end').not_to reek_of(:LongParameterList)
|
@@ -73,7 +73,7 @@ describe Reek::Smells::LongParameterList do
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
describe Reek::Smells::LongParameterList do
|
76
|
+
RSpec.describe Reek::Smells::LongParameterList do
|
77
77
|
before(:each) do
|
78
78
|
@source_name = 'dummy_source'
|
79
79
|
@detector = build(:smell_detector, smell_type: :LongParameterList, source: @source_name)
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
3
3
|
require_relative '../../../lib/reek/smells/long_yield_list'
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
|
-
describe Reek::Smells::LongYieldList do
|
6
|
+
RSpec.describe Reek::Smells::LongYieldList do
|
7
7
|
before(:each) do
|
8
8
|
@source_name = 'dummy_source'
|
9
9
|
@detector = build(:smell_detector, smell_type: :LongYieldList, source: @source_name)
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/module_initialize'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::ModuleInitialize do
|
5
|
+
RSpec.describe Reek::Smells::ModuleInitialize do
|
6
6
|
context 'module' do
|
7
7
|
context 'with method named initialize' do
|
8
8
|
it 'smells' do
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/nested_iterators'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::NestedIterators do
|
5
|
+
RSpec.describe Reek::Smells::NestedIterators do
|
6
6
|
context 'with no iterators' do
|
7
7
|
it 'reports no smells' do
|
8
8
|
src = 'def fred() nothing = true; end'
|
@@ -220,7 +220,7 @@ describe Reek::Smells::NestedIterators do
|
|
220
220
|
end
|
221
221
|
end
|
222
222
|
|
223
|
-
describe Reek::Smells::NestedIterators do
|
223
|
+
RSpec.describe Reek::Smells::NestedIterators do
|
224
224
|
before(:each) do
|
225
225
|
@source_name = 'dummy_source'
|
226
226
|
@detector = build(:smell_detector, smell_type: :NestedIterators, source: @source_name)
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
3
3
|
require_relative '../../../lib/reek/smells/nil_check'
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
|
-
describe Reek::Smells::NilCheck do
|
6
|
+
RSpec.describe Reek::Smells::NilCheck do
|
7
7
|
context 'for methods' do
|
8
8
|
it 'reports the correct line number' do
|
9
9
|
src = <<-EOS
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/core/module_context'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::PrimaDonnaMethod do
|
5
|
+
RSpec.describe Reek::Smells::PrimaDonnaMethod do
|
6
6
|
it 'should report nothing when method and bang counterpart exist' do
|
7
7
|
expect('class C; def m; end; def m!; end; end').not_to reek_of(:PrimaDonnaMethod)
|
8
8
|
end
|
@@ -4,7 +4,7 @@ require_relative '../../../lib/reek/core/code_context'
|
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
require_relative '../../../lib/reek/source/source_code'
|
6
6
|
|
7
|
-
describe Reek::Smells::RepeatedConditional do
|
7
|
+
RSpec.describe Reek::Smells::RepeatedConditional do
|
8
8
|
before(:each) do
|
9
9
|
@source_name = 'dummy_source'
|
10
10
|
@detector = build(:smell_detector, smell_type: :RepeatedConditional, source: @source_name)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
2
|
require_relative '../../../lib/reek/core/smell_configuration'
|
3
3
|
|
4
|
-
shared_examples_for 'SmellDetector' do
|
4
|
+
RSpec.shared_examples_for 'SmellDetector' do
|
5
5
|
context 'exception matching follows the context' do
|
6
6
|
before :each do
|
7
7
|
@ctx = double('context')
|
@@ -28,7 +28,7 @@ shared_examples_for 'SmellDetector' do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
shared_examples_for 'common fields set correctly' do
|
31
|
+
RSpec.shared_examples_for 'common fields set correctly' do
|
32
32
|
it 'reports the source' do
|
33
33
|
expect(@warning.source).to eq(@source_name)
|
34
34
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative '
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
require_relative '../../../lib/reek/smells/smell_warning'
|
3
3
|
|
4
|
-
describe Reek::SmellWarning do
|
4
|
+
RSpec.describe Reek::Smells::SmellWarning do
|
5
5
|
let(:duplication_detector) { build(:smell_detector, smell_type: 'DuplicateMethodCall') }
|
6
6
|
let(:feature_envy_detector) { build(:smell_detector, smell_type: 'FeatureEnvy') }
|
7
7
|
let(:utility_function_detector) { build(:smell_detector, smell_type: 'UtilityFunction') }
|
@@ -117,10 +117,10 @@ describe Reek::SmellWarning do
|
|
117
117
|
@smell_type = 'FeatureEnvy'
|
118
118
|
@parameters = { 'one' => 34, 'two' => 'second' }
|
119
119
|
@detector = Reek::Smells::FeatureEnvy.new @source
|
120
|
-
@warning = Reek::SmellWarning.new(@detector, context: @context_name,
|
121
|
-
|
122
|
-
|
123
|
-
|
120
|
+
@warning = Reek::Smells::SmellWarning.new(@detector, context: @context_name,
|
121
|
+
lines: @lines,
|
122
|
+
message: @message,
|
123
|
+
parameters: @parameters)
|
124
124
|
@yaml = @warning.yaml_hash
|
125
125
|
end
|
126
126
|
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/too_many_instance_variables'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::TooManyInstanceVariables do
|
5
|
+
RSpec.describe Reek::Smells::TooManyInstanceVariables do
|
6
6
|
before(:each) do
|
7
7
|
@source_name = 'dummy_source'
|
8
8
|
@detector = build(:smell_detector, smell_type: :TooManyInstanceVariables, source: @source_name)
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/too_many_methods'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::TooManyMethods do
|
5
|
+
RSpec.describe Reek::Smells::TooManyMethods do
|
6
6
|
before(:each) do
|
7
7
|
@source_name = 'dummy_source'
|
8
8
|
@detector = described_class.new(@source_name)
|
@@ -11,7 +11,7 @@ def process_singleton_method(source)
|
|
11
11
|
Reek::Core::TreeWalker.new.process_defs(Reek::Source::SourceCode.from(source).syntax_tree)
|
12
12
|
end
|
13
13
|
|
14
|
-
describe Reek::Smells::TooManyStatements do
|
14
|
+
RSpec.describe Reek::Smells::TooManyStatements do
|
15
15
|
it 'should not report short methods' do
|
16
16
|
src = 'def short(arga) alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;end'
|
17
17
|
expect(src).not_to reek_of(:TooManyStatements)
|
@@ -49,7 +49,7 @@ describe Reek::Smells::TooManyStatements do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
describe Reek::Smells::TooManyStatements do
|
52
|
+
RSpec.describe Reek::Smells::TooManyStatements do
|
53
53
|
it 'counts 1 assignment' do
|
54
54
|
method = process_method('def one() val = 4; end')
|
55
55
|
expect(method.num_statements).to eq(1)
|
@@ -91,7 +91,7 @@ describe Reek::Smells::TooManyStatements do
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
-
describe Reek::Smells::TooManyStatements, 'does not count control statements' do
|
94
|
+
RSpec.describe Reek::Smells::TooManyStatements, 'does not count control statements' do
|
95
95
|
it 'counts 1 statement in a conditional expression' do
|
96
96
|
method = process_method('def one() if val == 4; callee(); end; end')
|
97
97
|
expect(method.num_statements).to eq(1)
|
@@ -248,7 +248,7 @@ describe Reek::Smells::TooManyStatements, 'does not count control statements' do
|
|
248
248
|
end
|
249
249
|
end
|
250
250
|
|
251
|
-
describe Reek::Smells::TooManyStatements do
|
251
|
+
RSpec.describe Reek::Smells::TooManyStatements do
|
252
252
|
before(:each) do
|
253
253
|
@detector = build(:smell_detector, smell_type: :TooManyStatements, source: 'source_name')
|
254
254
|
end
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/uncommunicative_method_name'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::UncommunicativeMethodName do
|
5
|
+
RSpec.describe Reek::Smells::UncommunicativeMethodName do
|
6
6
|
before do
|
7
7
|
@source_name = 'dummy_source'
|
8
8
|
@detector = build(:smell_detector, smell_type: :UncommunicativeMethodName, source: @source_name)
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/smells/uncommunicative_module_name'
|
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
require_relative '../../../lib/reek/core/code_context'
|
5
5
|
|
6
|
-
describe Reek::Smells::UncommunicativeModuleName do
|
6
|
+
RSpec.describe Reek::Smells::UncommunicativeModuleName do
|
7
7
|
before do
|
8
8
|
@source_name = 'dummy_source'
|
9
9
|
@detector = build(:smell_detector, smell_type: :UncommunicativeModuleName, source: @source_name)
|
@@ -3,7 +3,7 @@ require_relative '../../../lib/reek/smells/uncommunicative_parameter_name'
|
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
require_relative '../../../lib/reek/core/method_context'
|
5
5
|
|
6
|
-
describe Reek::Smells::UncommunicativeParameterName do
|
6
|
+
RSpec.describe Reek::Smells::UncommunicativeParameterName do
|
7
7
|
before :each do
|
8
8
|
@source_name = 'dummy_source'
|
9
9
|
@detector = build(:smell_detector,
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/uncommunicative_variable_name'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::UncommunicativeVariableName do
|
5
|
+
RSpec.describe Reek::Smells::UncommunicativeVariableName do
|
6
6
|
before :each do
|
7
7
|
@source_name = 'dummy_source'
|
8
8
|
@detector = build(:smell_detector,
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/unused_parameters'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::UnusedParameters do
|
5
|
+
RSpec.describe Reek::Smells::UnusedParameters do
|
6
6
|
context 'for methods' do
|
7
7
|
it 'reports nothing for no parameters' do
|
8
8
|
expect('def simple; true end').not_to reek_of(:UnusedParameters)
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require_relative '../../../lib/reek/smells/utility_function'
|
3
3
|
require_relative 'smell_detector_shared'
|
4
4
|
|
5
|
-
describe Reek::Smells::UtilityFunction do
|
5
|
+
RSpec.describe Reek::Smells::UtilityFunction do
|
6
6
|
describe 'a detector' do
|
7
7
|
before(:each) do
|
8
8
|
@source_name = 'dummy_source'
|
@@ -2,7 +2,7 @@ require_relative '../../spec_helper'
|
|
2
2
|
require 'stringio'
|
3
3
|
require_relative '../../../lib/reek/source/source_code'
|
4
4
|
|
5
|
-
describe Reek::Source::SourceCode do
|
5
|
+
RSpec.describe Reek::Source::SourceCode do
|
6
6
|
describe '#syntax_tree' do
|
7
7
|
it 'associates comments with the AST' do
|
8
8
|
source = "# this is\n# a comment\ndef foo; end"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
2
|
require_relative '../../../lib/reek/spec'
|
3
3
|
|
4
|
-
describe Reek::Spec::ShouldReekOf do
|
4
|
+
RSpec.describe Reek::Spec::ShouldReekOf do
|
5
5
|
context 'rdoc demo example' do
|
6
6
|
before :each do
|
7
7
|
@ruby = 'def double_thing() @other.thing.foo + @other.thing.foo end'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative '../../spec_helper'
|
2
2
|
require_relative '../../../lib/reek/spec'
|
3
3
|
|
4
|
-
describe Reek::Spec::ShouldReekOnlyOf do
|
4
|
+
RSpec.describe Reek::Spec::ShouldReekOnlyOf do
|
5
5
|
before :each do
|
6
6
|
@expected_smell_type = :NestedIterators
|
7
7
|
@expected_context_name = 'SmellyClass#big_method'
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version='1.0'?>
|
2
|
+
<checkstyle><file name='/some/path'><error column='0' line='1' message='doesn't depend on instance state' severity='warning' source='UtilityFunction'/><error column='0' line='1' message='has the parameter name 'a'' severity='warning' source='UncommunicativeParameterName'/></file></checkstyle>
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
require_relative '../lib/reek/spec'
|
2
|
-
require_relative '../lib/reek/
|
2
|
+
require_relative '../lib/reek/core/ast_node_class_map'
|
3
3
|
require_relative '../lib/reek/configuration/app_configuration'
|
4
4
|
|
5
|
-
|
5
|
+
Reek::CLI::Silencer.silently do
|
6
|
+
require 'factory_girl'
|
7
|
+
end
|
8
|
+
if Gem.loaded_specs['factory_girl'].version > Gem::Version.create('4.5.0')
|
9
|
+
raise 'Remove the above silencer as well as this check now that ' \
|
10
|
+
'`factory_girl` gem is updated to version greater than 4.5.0!'
|
11
|
+
end
|
6
12
|
|
7
13
|
begin
|
8
14
|
require 'pry-byebug'
|
@@ -31,7 +37,7 @@ module Helpers
|
|
31
37
|
|
32
38
|
# :reek:UncommunicativeMethodName
|
33
39
|
def s(type, *children)
|
34
|
-
@klass_map ||= Reek::
|
40
|
+
@klass_map ||= Reek::Core::ASTNodeClassMap.new
|
35
41
|
@klass_map.klass_for(type).new(type, children)
|
36
42
|
end
|
37
43
|
|
@@ -46,4 +52,10 @@ RSpec.configure do |config|
|
|
46
52
|
config.run_all_when_everything_filtered = true
|
47
53
|
config.include FactoryGirl::Syntax::Methods
|
48
54
|
config.include Helpers
|
55
|
+
|
56
|
+
config.disable_monkey_patching!
|
57
|
+
|
58
|
+
config.mock_with :rspec do |mocks|
|
59
|
+
mocks.verify_partial_doubles = true
|
60
|
+
end
|
49
61
|
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: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Rutherford
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-05-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parser
|
@@ -40,20 +40,6 @@ dependencies:
|
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '2.0'
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: require_all
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '1.3'
|
50
|
-
type: :runtime
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - "~>"
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '1.3'
|
57
43
|
- !ruby/object:Gem::Dependency
|
58
44
|
name: unparser
|
59
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,7 +194,6 @@ extra_rdoc_files:
|
|
208
194
|
files:
|
209
195
|
- ".gitignore"
|
210
196
|
- ".rubocop.yml"
|
211
|
-
- ".ruby-gemset"
|
212
197
|
- ".travis.yml"
|
213
198
|
- ".yardopts"
|
214
199
|
- CHANGELOG
|
@@ -221,6 +206,47 @@ files:
|
|
221
206
|
- bin/reek
|
222
207
|
- config/cucumber.yml
|
223
208
|
- config/defaults.reek
|
209
|
+
- docs/API.md
|
210
|
+
- docs/Attribute.md
|
211
|
+
- docs/Basic-Smell-Options.md
|
212
|
+
- docs/Boolean-Parameter.md
|
213
|
+
- docs/Class-Variable.md
|
214
|
+
- docs/Code-Smells.md
|
215
|
+
- docs/Command-Line-Options.md
|
216
|
+
- docs/Configuration-Files.md
|
217
|
+
- docs/Control-Couple.md
|
218
|
+
- docs/Control-Parameter.md
|
219
|
+
- docs/Data-Clump.md
|
220
|
+
- docs/Duplicate-Method-Call.md
|
221
|
+
- docs/Feature-Envy.md
|
222
|
+
- docs/How-reek-works-internally.md
|
223
|
+
- docs/Irresponsible-Module.md
|
224
|
+
- docs/Large-Class.md
|
225
|
+
- docs/Long-Parameter-List.md
|
226
|
+
- docs/Long-Yield-List.md
|
227
|
+
- docs/Module-Initialize.md
|
228
|
+
- docs/Nested-Iterators.md
|
229
|
+
- docs/Nil-Check.md
|
230
|
+
- docs/Prima-Donna-Method.md
|
231
|
+
- docs/RSpec-matchers.md
|
232
|
+
- docs/Rake-Task.md
|
233
|
+
- docs/Reek-Driven-Development.md
|
234
|
+
- docs/Repeated-Conditional.md
|
235
|
+
- docs/Simulated-Polymorphism.md
|
236
|
+
- docs/Smell-Suppression.md
|
237
|
+
- docs/Too-Many-Instance-Variables.md
|
238
|
+
- docs/Too-Many-Methods.md
|
239
|
+
- docs/Too-Many-Statements.md
|
240
|
+
- docs/Uncommunicative-Method-Name.md
|
241
|
+
- docs/Uncommunicative-Module-Name.md
|
242
|
+
- docs/Uncommunicative-Name.md
|
243
|
+
- docs/Uncommunicative-Parameter-Name.md
|
244
|
+
- docs/Uncommunicative-Variable-Name.md
|
245
|
+
- docs/Unused-Parameters.md
|
246
|
+
- docs/Utility-Function.md
|
247
|
+
- docs/Versioning-Policy.md
|
248
|
+
- docs/YAML-Reports.md
|
249
|
+
- docs/yard_plugin.rb
|
224
250
|
- features/command_line_interface/options.feature
|
225
251
|
- features/command_line_interface/smell_selection.feature
|
226
252
|
- features/command_line_interface/smells_count.feature
|
@@ -250,21 +276,29 @@ files:
|
|
250
276
|
- lib/reek/cli/report/heading_formatter.rb
|
251
277
|
- lib/reek/cli/report/location_formatter.rb
|
252
278
|
- lib/reek/cli/report/report.rb
|
279
|
+
- lib/reek/cli/silencer.rb
|
253
280
|
- lib/reek/configuration/app_configuration.rb
|
254
281
|
- lib/reek/configuration/configuration_file_finder.rb
|
282
|
+
- lib/reek/core/ast_node.rb
|
283
|
+
- lib/reek/core/ast_node_class_map.rb
|
284
|
+
- lib/reek/core/code_comment.rb
|
255
285
|
- lib/reek/core/code_context.rb
|
286
|
+
- lib/reek/core/examiner.rb
|
256
287
|
- lib/reek/core/method_context.rb
|
257
288
|
- lib/reek/core/module_context.rb
|
258
289
|
- lib/reek/core/object_refs.rb
|
290
|
+
- lib/reek/core/reference_collector.rb
|
259
291
|
- lib/reek/core/singleton_method_context.rb
|
260
292
|
- lib/reek/core/smell_configuration.rb
|
261
293
|
- lib/reek/core/smell_repository.rb
|
262
294
|
- lib/reek/core/stop_context.rb
|
295
|
+
- lib/reek/core/tree_dresser.rb
|
263
296
|
- lib/reek/core/tree_walker.rb
|
264
297
|
- lib/reek/core/warning_collector.rb
|
265
|
-
- lib/reek/examiner.rb
|
266
298
|
- lib/reek/rake/task.rb
|
267
|
-
- lib/reek/
|
299
|
+
- lib/reek/sexp/sexp_extensions.rb
|
300
|
+
- lib/reek/sexp/sexp_formatter.rb
|
301
|
+
- lib/reek/sexp/sexp_node.rb
|
268
302
|
- lib/reek/smells.rb
|
269
303
|
- lib/reek/smells/attribute.rb
|
270
304
|
- lib/reek/smells/boolean_parameter.rb
|
@@ -282,6 +316,7 @@ files:
|
|
282
316
|
- lib/reek/smells/prima_donna_method.rb
|
283
317
|
- lib/reek/smells/repeated_conditional.rb
|
284
318
|
- lib/reek/smells/smell_detector.rb
|
319
|
+
- lib/reek/smells/smell_warning.rb
|
285
320
|
- lib/reek/smells/too_many_instance_variables.rb
|
286
321
|
- lib/reek/smells/too_many_methods.rb
|
287
322
|
- lib/reek/smells/too_many_statements.rb
|
@@ -291,17 +326,9 @@ files:
|
|
291
326
|
- lib/reek/smells/uncommunicative_variable_name.rb
|
292
327
|
- lib/reek/smells/unused_parameters.rb
|
293
328
|
- lib/reek/smells/utility_function.rb
|
294
|
-
- lib/reek/source/ast_node.rb
|
295
|
-
- lib/reek/source/ast_node_class_map.rb
|
296
|
-
- lib/reek/source/code_comment.rb
|
297
|
-
- lib/reek/source/reference_collector.rb
|
298
|
-
- lib/reek/source/sexp_extensions.rb
|
299
|
-
- lib/reek/source/sexp_formatter.rb
|
300
|
-
- lib/reek/source/sexp_node.rb
|
301
329
|
- lib/reek/source/source_code.rb
|
302
330
|
- lib/reek/source/source_locator.rb
|
303
331
|
- lib/reek/source/source_repository.rb
|
304
|
-
- lib/reek/source/tree_dresser.rb
|
305
332
|
- lib/reek/spec.rb
|
306
333
|
- lib/reek/spec/should_reek.rb
|
307
334
|
- lib/reek/spec/should_reek_of.rb
|
@@ -314,23 +341,31 @@ files:
|
|
314
341
|
- spec/quality/reek_source_spec.rb
|
315
342
|
- spec/reek/cli/html_report_spec.rb
|
316
343
|
- spec/reek/cli/json_report_spec.rb
|
317
|
-
- spec/reek/cli/
|
344
|
+
- spec/reek/cli/option_interpreter_spec.rb
|
345
|
+
- spec/reek/cli/options_spec.rb
|
318
346
|
- spec/reek/cli/text_report_spec.rb
|
347
|
+
- spec/reek/cli/xml_report_spec.rb
|
319
348
|
- spec/reek/cli/yaml_report_spec.rb
|
320
349
|
- spec/reek/configuration/app_configuration_spec.rb
|
321
350
|
- spec/reek/configuration/configuration_file_finder_spec.rb
|
351
|
+
- spec/reek/core/code_comment_spec.rb
|
322
352
|
- spec/reek/core/code_context_spec.rb
|
353
|
+
- spec/reek/core/examiner_spec.rb
|
323
354
|
- spec/reek/core/method_context_spec.rb
|
324
355
|
- spec/reek/core/module_context_spec.rb
|
325
356
|
- spec/reek/core/object_refs_spec.rb
|
357
|
+
- spec/reek/core/object_source_spec.rb
|
358
|
+
- spec/reek/core/reference_collector_spec.rb
|
326
359
|
- spec/reek/core/singleton_method_context_spec.rb
|
327
360
|
- spec/reek/core/smell_configuration_spec.rb
|
328
361
|
- spec/reek/core/smell_repository_spec.rb
|
329
362
|
- spec/reek/core/stop_context_spec.rb
|
363
|
+
- spec/reek/core/tree_dresser_spec.rb
|
330
364
|
- spec/reek/core/tree_walker_spec.rb
|
331
365
|
- spec/reek/core/warning_collector_spec.rb
|
332
|
-
- spec/reek/
|
333
|
-
- spec/reek/
|
366
|
+
- spec/reek/sexp/sexp_extensions_spec.rb
|
367
|
+
- spec/reek/sexp/sexp_formatter_spec.rb
|
368
|
+
- spec/reek/sexp/sexp_node_spec.rb
|
334
369
|
- spec/reek/smells/attribute_spec.rb
|
335
370
|
- spec/reek/smells/behaves_like_variable_detector.rb
|
336
371
|
- spec/reek/smells/boolean_parameter_spec.rb
|
@@ -348,6 +383,7 @@ files:
|
|
348
383
|
- spec/reek/smells/prima_donna_method_spec.rb
|
349
384
|
- spec/reek/smells/repeated_conditional_spec.rb
|
350
385
|
- spec/reek/smells/smell_detector_shared.rb
|
386
|
+
- spec/reek/smells/smell_warning_spec.rb
|
351
387
|
- spec/reek/smells/too_many_instance_variables_spec.rb
|
352
388
|
- spec/reek/smells/too_many_methods_spec.rb
|
353
389
|
- spec/reek/smells/too_many_statements_spec.rb
|
@@ -357,20 +393,14 @@ files:
|
|
357
393
|
- spec/reek/smells/uncommunicative_variable_name_spec.rb
|
358
394
|
- spec/reek/smells/unused_parameters_spec.rb
|
359
395
|
- spec/reek/smells/utility_function_spec.rb
|
360
|
-
- spec/reek/source/code_comment_spec.rb
|
361
|
-
- spec/reek/source/object_source_spec.rb
|
362
|
-
- spec/reek/source/reference_collector_spec.rb
|
363
|
-
- spec/reek/source/sexp_extensions_spec.rb
|
364
|
-
- spec/reek/source/sexp_formatter_spec.rb
|
365
|
-
- spec/reek/source/sexp_node_spec.rb
|
366
396
|
- spec/reek/source/source_code_spec.rb
|
367
|
-
- spec/reek/source/tree_dresser_spec.rb
|
368
397
|
- spec/reek/spec/should_reek_of_spec.rb
|
369
398
|
- spec/reek/spec/should_reek_only_of_spec.rb
|
370
399
|
- spec/reek/spec/should_reek_spec.rb
|
371
400
|
- spec/samples/all_but_one_masked/clean_one.rb
|
372
401
|
- spec/samples/all_but_one_masked/dirty.rb
|
373
402
|
- spec/samples/all_but_one_masked/masked.reek
|
403
|
+
- spec/samples/checkstyle.xml
|
374
404
|
- spec/samples/clean_due_to_masking/clean_one.rb
|
375
405
|
- spec/samples/clean_due_to_masking/clean_three.rb
|
376
406
|
- spec/samples/clean_due_to_masking/clean_two.rb
|
@@ -421,7 +451,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
421
451
|
version: '0'
|
422
452
|
requirements: []
|
423
453
|
rubyforge_project:
|
424
|
-
rubygems_version: 2.
|
454
|
+
rubygems_version: 2.4.5
|
425
455
|
signing_key:
|
426
456
|
specification_version: 4
|
427
457
|
summary: Code smell detector for Ruby
|