reek 2.0.0 → 2.0.1
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/CHANGELOG +5 -0
 - data/README.md +13 -2
 - data/Rakefile +2 -1
 - data/features/command_line_interface/options.feature +2 -3
 - data/features/command_line_interface/smell_selection.feature +0 -1
 - data/features/command_line_interface/smells_count.feature +0 -2
 - data/features/command_line_interface/stdin.feature +3 -10
 - data/features/configuration_files/masking_smells.feature +1 -5
 - data/features/configuration_files/overrides_defaults.feature +0 -1
 - data/features/rake_task/rake_task.feature +1 -4
 - data/features/reports/json.feature +73 -0
 - data/features/reports/reports.feature +0 -3
 - data/features/reports/yaml.feature +0 -1
 - data/features/ruby_api/api.feature +0 -1
 - data/features/samples.feature +0 -4
 - data/features/step_definitions/reek_steps.rb +14 -4
 - data/features/support/env.rb +3 -0
 - data/lib/reek/cli/option_interpreter.rb +2 -0
 - data/lib/reek/cli/options.rb +3 -3
 - data/lib/reek/cli/report/formatter.rb +1 -1
 - data/lib/reek/cli/report/location_formatter.rb +11 -0
 - data/lib/reek/cli/report/report.rb +11 -2
 - data/lib/reek/core/code_context.rb +49 -10
 - data/lib/reek/core/sniffer.rb +2 -2
 - data/lib/reek/core/{code_parser.rb → tree_walker.rb} +16 -7
 - data/lib/reek/examiner.rb +0 -39
 - data/lib/reek/smells.rb +3 -25
 - data/lib/reek/smells/feature_envy.rb +0 -2
 - data/lib/reek/smells/smell_detector.rb +0 -6
 - data/lib/reek/source/sexp_extensions.rb +17 -6
 - data/lib/reek/source/sexp_node.rb +1 -1
 - data/lib/reek/spec.rb +66 -0
 - data/lib/reek/spec/should_reek.rb +0 -6
 - data/lib/reek/spec/should_reek_of.rb +0 -49
 - data/lib/reek/spec/should_reek_only_of.rb +0 -11
 - data/lib/reek/version.rb +6 -1
 - data/reek.gemspec +3 -2
 - data/spec/reek/cli/json_report_spec.rb +20 -0
 - data/spec/reek/core/code_context_spec.rb +6 -0
 - data/spec/reek/core/smell_configuration_spec.rb +3 -3
 - data/spec/reek/core/{code_parser_spec.rb → tree_walker_spec.rb} +4 -4
 - data/spec/reek/examiner_spec.rb +0 -19
 - data/spec/reek/smells/attribute_spec.rb +6 -9
 - data/spec/reek/smells/boolean_parameter_spec.rb +13 -15
 - data/spec/reek/smells/class_variable_spec.rb +17 -17
 - data/spec/reek/smells/control_parameter_spec.rb +44 -46
 - data/spec/reek/smells/data_clump_spec.rb +73 -70
 - data/spec/reek/smells/duplicate_method_call_spec.rb +39 -37
 - data/spec/reek/smells/feature_envy_spec.rb +53 -57
 - data/spec/reek/smells/irresponsible_module_spec.rb +12 -11
 - data/spec/reek/smells/long_parameter_list_spec.rb +33 -26
 - data/spec/reek/smells/long_yield_list_spec.rb +15 -19
 - data/spec/reek/smells/module_initialize_spec.rb +4 -6
 - data/spec/reek/smells/nested_iterators_spec.rb +28 -28
 - data/spec/reek/smells/nil_check_spec.rb +18 -20
 - data/spec/reek/smells/prima_donna_method_spec.rb +6 -9
 - data/spec/reek/smells/repeated_conditional_spec.rb +41 -43
 - data/spec/reek/smells/too_many_instance_variables_spec.rb +6 -11
 - data/spec/reek/smells/too_many_methods_spec.rb +44 -61
 - data/spec/reek/smells/too_many_statements_spec.rb +14 -41
 - data/spec/reek/smells/uncommunicative_method_name_spec.rb +6 -11
 - data/spec/reek/smells/uncommunicative_module_name_spec.rb +10 -14
 - data/spec/reek/smells/uncommunicative_parameter_name_spec.rb +15 -16
 - data/spec/reek/smells/uncommunicative_variable_name_spec.rb +33 -36
 - data/spec/reek/smells/unused_parameters_spec.rb +16 -19
 - data/spec/reek/smells/utility_function_spec.rb +7 -10
 - metadata +22 -6
 
| 
         @@ -1,11 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'reek/core/code_context'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'reek/smells/nil_check'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            include Reek::Smells
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            describe NilCheck do
         
     | 
| 
      
 6 
     | 
    
         
            +
            describe Reek::Smells::NilCheck do
         
     | 
| 
       9 
7 
     | 
    
         
             
              context 'for methods' do
         
     | 
| 
       10 
8 
     | 
    
         
             
                it 'reports the correct line number' do
         
     | 
| 
       11 
9 
     | 
    
         
             
                  src = <<-EOS
         
     | 
| 
         @@ -13,43 +11,43 @@ describe NilCheck do 
     | 
|
| 
       13 
11 
     | 
    
         
             
                    foo.nil?
         
     | 
| 
       14 
12 
     | 
    
         
             
                  end
         
     | 
| 
       15 
13 
     | 
    
         
             
                  EOS
         
     | 
| 
       16 
     | 
    
         
            -
                  ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       17 
     | 
    
         
            -
                  detector = NilCheck 
     | 
| 
      
 14 
     | 
    
         
            +
                  ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  detector = build(:smell_detector, smell_type: :NilCheck, source: 'source_name')
         
     | 
| 
       18 
16 
     | 
    
         
             
                  smells = detector.examine_context(ctx)
         
     | 
| 
       19 
17 
     | 
    
         
             
                  expect(smells[0].lines).to eq [2]
         
     | 
| 
       20 
18 
     | 
    
         
             
                end
         
     | 
| 
       21 
19 
     | 
    
         | 
| 
       22 
20 
     | 
    
         
             
                it 'reports nothing when scope includes no nil checks' do
         
     | 
| 
       23 
     | 
    
         
            -
                  expect('def no_nils; end').not_to reek_of(NilCheck)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  expect('def no_nils; end').not_to reek_of(:NilCheck)
         
     | 
| 
       24 
22 
     | 
    
         
             
                end
         
     | 
| 
       25 
23 
     | 
    
         | 
| 
       26 
24 
     | 
    
         
             
                it 'reports when scope uses multiple nil? methods' do
         
     | 
| 
       27 
     | 
    
         
            -
                  src = <<- 
     | 
| 
      
 25 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
       28 
26 
     | 
    
         
             
                  def chk_multi_nil(para)
         
     | 
| 
       29 
27 
     | 
    
         
             
                    para.nil?
         
     | 
| 
       30 
28 
     | 
    
         
             
                    puts "Hello"
         
     | 
| 
       31 
29 
     | 
    
         
             
                    \"\".nil?
         
     | 
| 
       32 
30 
     | 
    
         
             
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                   
     | 
| 
       34 
     | 
    
         
            -
                  expect(src).to reek_of(NilCheck)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 32 
     | 
    
         
            +
                  expect(src).to reek_of(:NilCheck)
         
     | 
| 
       35 
33 
     | 
    
         
             
                end
         
     | 
| 
       36 
34 
     | 
    
         | 
| 
       37 
35 
     | 
    
         
             
                it 'reports twice when scope uses == nil and === nil' do
         
     | 
| 
       38 
     | 
    
         
            -
                  src = <<- 
     | 
| 
      
 36 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
       39 
37 
     | 
    
         
             
                  def chk_eq_nil(para)
         
     | 
| 
       40 
38 
     | 
    
         
             
                    para == nil
         
     | 
| 
       41 
39 
     | 
    
         
             
                    para === nil
         
     | 
| 
       42 
40 
     | 
    
         
             
                  end
         
     | 
| 
       43 
     | 
    
         
            -
                   
     | 
| 
       44 
     | 
    
         
            -
                  expect(src).to reek_of(NilCheck)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect(src).to reek_of(:NilCheck)
         
     | 
| 
       45 
43 
     | 
    
         
             
                end
         
     | 
| 
       46 
44 
     | 
    
         | 
| 
       47 
45 
     | 
    
         
             
                it 'reports when scope uses nil ==' do
         
     | 
| 
       48 
     | 
    
         
            -
                  expect('def chk_eq_nil_rev(para); nil == para; end').to reek_of(NilCheck)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  expect('def chk_eq_nil_rev(para); nil == para; end').to reek_of(:NilCheck)
         
     | 
| 
       49 
47 
     | 
    
         
             
                end
         
     | 
| 
       50 
48 
     | 
    
         | 
| 
       51 
49 
     | 
    
         
             
                it 'reports when scope uses multiple case-clauses checking nil' do
         
     | 
| 
       52 
     | 
    
         
            -
                  src = <<- 
     | 
| 
      
 50 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
       53 
51 
     | 
    
         
             
                  def case_nil
         
     | 
| 
       54 
52 
     | 
    
         
             
                    case @inst_var
         
     | 
| 
       55 
53 
     | 
    
         
             
                    when nil then puts "Nil"
         
     | 
| 
         @@ -60,19 +58,19 @@ describe NilCheck do 
     | 
|
| 
       60 
58 
     | 
    
         
             
                    when nil then puts nil.inspect
         
     | 
| 
       61 
59 
     | 
    
         
             
                    end
         
     | 
| 
       62 
60 
     | 
    
         
             
                  end
         
     | 
| 
       63 
     | 
    
         
            -
                   
     | 
| 
       64 
     | 
    
         
            -
                  expect(src).to reek_of(NilCheck)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 62 
     | 
    
         
            +
                  expect(src).to reek_of(:NilCheck)
         
     | 
| 
       65 
63 
     | 
    
         
             
                end
         
     | 
| 
       66 
64 
     | 
    
         | 
| 
       67 
65 
     | 
    
         
             
                it 'reports a when clause that checks nil and other values' do
         
     | 
| 
       68 
     | 
    
         
            -
                  src = <<- 
     | 
| 
      
 66 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
       69 
67 
     | 
    
         
             
                  def case_nil
         
     | 
| 
       70 
68 
     | 
    
         
             
                    case @inst_var
         
     | 
| 
       71 
69 
     | 
    
         
             
                    when nil, false then puts "Hello"
         
     | 
| 
       72 
70 
     | 
    
         
             
                    end
         
     | 
| 
       73 
71 
     | 
    
         
             
                  end
         
     | 
| 
       74 
     | 
    
         
            -
                   
     | 
| 
       75 
     | 
    
         
            -
                  expect(src).to reek_of(NilCheck)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 73 
     | 
    
         
            +
                  expect(src).to reek_of(:NilCheck)
         
     | 
| 
       76 
74 
     | 
    
         
             
                end
         
     | 
| 
       77 
75 
     | 
    
         
             
              end
         
     | 
| 
       78 
76 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,23 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            require 'reek/core/module_context'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            include Reek::Smells
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            describe PrimaDonnaMethod do
         
     | 
| 
      
 5 
     | 
    
         
            +
            describe Reek::Smells::PrimaDonnaMethod do
         
     | 
| 
       9 
6 
     | 
    
         
             
              it 'should report nothing when method and bang counterpart exist' do
         
     | 
| 
       10 
     | 
    
         
            -
                expect('class C; def m; end; def m!; end; end').not_to reek_of(PrimaDonnaMethod)
         
     | 
| 
      
 7 
     | 
    
         
            +
                expect('class C; def m; end; def m!; end; end').not_to reek_of(:PrimaDonnaMethod)
         
     | 
| 
       11 
8 
     | 
    
         
             
              end
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
10 
     | 
    
         
             
              it 'should report PrimaDonnaMethod when only bang method exists' do
         
     | 
| 
       14 
     | 
    
         
            -
                expect('class C; def m!; end; end').to reek_of(PrimaDonnaMethod)
         
     | 
| 
      
 11 
     | 
    
         
            +
                expect('class C; def m!; end; end').to reek_of(:PrimaDonnaMethod)
         
     | 
| 
       15 
12 
     | 
    
         
             
              end
         
     | 
| 
       16 
13 
     | 
    
         | 
| 
       17 
14 
     | 
    
         
             
              describe 'the right smell' do
         
     | 
| 
       18 
     | 
    
         
            -
                let(:detector) { PrimaDonnaMethod 
     | 
| 
      
 15 
     | 
    
         
            +
                let(:detector) { build(:smell_detector, smell_type: :PrimaDonnaMethod, source: 'source_name') }
         
     | 
| 
       19 
16 
     | 
    
         
             
                let(:src)      { 'class C; def m!; end; end' }
         
     | 
| 
       20 
     | 
    
         
            -
                let(:ctx)      { ModuleContext.new(nil, src.to_reek_source.syntax_tree) }
         
     | 
| 
      
 17 
     | 
    
         
            +
                let(:ctx)      { Reek::Core::ModuleContext.new(nil, src.to_reek_source.syntax_tree) }
         
     | 
| 
       21 
18 
     | 
    
         | 
| 
       22 
19 
     | 
    
         
             
                it 'should be reported' do
         
     | 
| 
       23 
20 
     | 
    
         
             
                  smells = detector.examine_context(ctx)
         
     | 
| 
         @@ -3,13 +3,10 @@ require 'reek/smells/repeated_conditional' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require 'reek/core/code_context'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              before :each do
         
     | 
| 
       11 
     | 
    
         
            -
                @source_name = 'howdy-doody'
         
     | 
| 
       12 
     | 
    
         
            -
                @detector = RepeatedConditional.new(@source_name)
         
     | 
| 
      
 6 
     | 
    
         
            +
            describe Reek::Smells::RepeatedConditional do
         
     | 
| 
      
 7 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 8 
     | 
    
         
            +
                @source_name = 'dummy_source'
         
     | 
| 
      
 9 
     | 
    
         
            +
                @detector = build(:smell_detector, smell_type: :RepeatedConditional, source: @source_name)
         
     | 
| 
       13 
10 
     | 
    
         
             
              end
         
     | 
| 
       14 
11 
     | 
    
         | 
| 
       15 
12 
     | 
    
         
             
              it_should_behave_like 'SmellDetector'
         
     | 
| 
         @@ -17,7 +14,7 @@ describe RepeatedConditional do 
     | 
|
| 
       17 
14 
     | 
    
         
             
              context 'with no conditionals' do
         
     | 
| 
       18 
15 
     | 
    
         
             
                it 'gathers an empty hash' do
         
     | 
| 
       19 
16 
     | 
    
         
             
                  ast = 'module Stable; end'.to_reek_source.syntax_tree
         
     | 
| 
       20 
     | 
    
         
            -
                  ctx = CodeContext.new(nil, ast)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  ctx = Reek::Core::CodeContext.new(nil, ast)
         
     | 
| 
       21 
18 
     | 
    
         
             
                  expect(@detector.conditional_counts(ctx).length).to eq(0)
         
     | 
| 
       22 
19 
     | 
    
         
             
                end
         
     | 
| 
       23 
20 
     | 
    
         
             
              end
         
     | 
| 
         @@ -25,7 +22,7 @@ describe RepeatedConditional do 
     | 
|
| 
       25 
22 
     | 
    
         
             
              context 'with a test of block_given?' do
         
     | 
| 
       26 
23 
     | 
    
         
             
                it 'does not record the condition' do
         
     | 
| 
       27 
24 
     | 
    
         
             
                  ast = 'def fred() yield(3) if block_given?; end'.to_reek_source.syntax_tree
         
     | 
| 
       28 
     | 
    
         
            -
                  ctx = CodeContext.new(nil, ast)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  ctx = Reek::Core::CodeContext.new(nil, ast)
         
     | 
| 
       29 
26 
     | 
    
         
             
                  expect(@detector.conditional_counts(ctx).length).to eq(0)
         
     | 
| 
       30 
27 
     | 
    
         
             
                end
         
     | 
| 
       31 
28 
     | 
    
         
             
              end
         
     | 
| 
         @@ -33,7 +30,7 @@ describe RepeatedConditional do 
     | 
|
| 
       33 
30 
     | 
    
         
             
              context 'with an empty condition' do
         
     | 
| 
       34 
31 
     | 
    
         
             
                it 'does not record the condition' do
         
     | 
| 
       35 
32 
     | 
    
         
             
                  ast = 'def fred() case; when 3; end; end'.to_reek_source.syntax_tree
         
     | 
| 
       36 
     | 
    
         
            -
                  ctx = CodeContext.new(nil, ast)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ctx = Reek::Core::CodeContext.new(nil, ast)
         
     | 
| 
       37 
34 
     | 
    
         
             
                  expect(@detector.conditional_counts(ctx).length).to eq(0)
         
     | 
| 
       38 
35 
     | 
    
         
             
                end
         
     | 
| 
       39 
36 
     | 
    
         
             
              end
         
     | 
| 
         @@ -42,25 +39,25 @@ describe RepeatedConditional do 
     | 
|
| 
       42 
39 
     | 
    
         
             
                before :each do
         
     | 
| 
       43 
40 
     | 
    
         
             
                  @cond = '@field == :sym'
         
     | 
| 
       44 
41 
     | 
    
         
             
                  @cond_expr = @cond.to_reek_source.syntax_tree
         
     | 
| 
       45 
     | 
    
         
            -
                  src =  
     | 
| 
       46 
     | 
    
         
            -
            class Scrunch
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            end
         
     | 
| 
       60 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 42 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
      
 43 
     | 
    
         
            +
                    class Scrunch
         
     | 
| 
      
 44 
     | 
    
         
            +
                      def first
         
     | 
| 
      
 45 
     | 
    
         
            +
                        puts "hello" if @debug
         
     | 
| 
      
 46 
     | 
    
         
            +
                        return #{@cond} ? 0 : 3;
         
     | 
| 
      
 47 
     | 
    
         
            +
                      end
         
     | 
| 
      
 48 
     | 
    
         
            +
                      def second
         
     | 
| 
      
 49 
     | 
    
         
            +
                        if #{@cond}
         
     | 
| 
      
 50 
     | 
    
         
            +
                          @other += " quarts"
         
     | 
| 
      
 51 
     | 
    
         
            +
                        end
         
     | 
| 
      
 52 
     | 
    
         
            +
                      end
         
     | 
| 
      
 53 
     | 
    
         
            +
                      def third
         
     | 
| 
      
 54 
     | 
    
         
            +
                        raise 'flu!' unless #{@cond}
         
     | 
| 
      
 55 
     | 
    
         
            +
                      end
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  EOS
         
     | 
| 
       61 
58 
     | 
    
         | 
| 
       62 
59 
     | 
    
         
             
                  ast = src.to_reek_source.syntax_tree
         
     | 
| 
       63 
     | 
    
         
            -
                  @ctx = CodeContext.new(nil, ast)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  @ctx = Reek::Core::CodeContext.new(nil, ast)
         
     | 
| 
       64 
61 
     | 
    
         
             
                  @conds = @detector.conditional_counts(@ctx)
         
     | 
| 
       65 
62 
     | 
    
         
             
                end
         
     | 
| 
       66 
63 
     | 
    
         | 
| 
         @@ -81,34 +78,35 @@ EOS 
     | 
|
| 
       81 
78 
     | 
    
         
             
                before :each do
         
     | 
| 
       82 
79 
     | 
    
         
             
                  cond = '@field == :sym'
         
     | 
| 
       83 
80 
     | 
    
         
             
                  @cond_expr = cond.to_reek_source.syntax_tree
         
     | 
| 
       84 
     | 
    
         
            -
                  src =  
     | 
| 
       85 
     | 
    
         
            -
            class Scrunch
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            end
         
     | 
| 
       96 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 81 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
      
 82 
     | 
    
         
            +
                    class Scrunch
         
     | 
| 
      
 83 
     | 
    
         
            +
                      def alpha
         
     | 
| 
      
 84 
     | 
    
         
            +
                        return #{cond} ? 0 : 2;
         
     | 
| 
      
 85 
     | 
    
         
            +
                      end
         
     | 
| 
      
 86 
     | 
    
         
            +
                      def beta
         
     | 
| 
      
 87 
     | 
    
         
            +
                        case #{cond}
         
     | 
| 
      
 88 
     | 
    
         
            +
                        when :symbol
         
     | 
| 
      
 89 
     | 
    
         
            +
                          @tother += " pints"
         
     | 
| 
      
 90 
     | 
    
         
            +
                        end
         
     | 
| 
      
 91 
     | 
    
         
            +
                      end
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
      
 93 
     | 
    
         
            +
                  EOS
         
     | 
| 
       97 
94 
     | 
    
         | 
| 
       98 
95 
     | 
    
         
             
                  ast = src.to_reek_source.syntax_tree
         
     | 
| 
       99 
     | 
    
         
            -
                  ctx = CodeContext.new(nil, ast)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  ctx = Reek::Core::CodeContext.new(nil, ast)
         
     | 
| 
       100 
97 
     | 
    
         
             
                  @conds = @detector.conditional_counts(ctx)
         
     | 
| 
       101 
98 
     | 
    
         
             
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
       102 
100 
     | 
    
         
             
                it 'finds exactly one conditional' do
         
     | 
| 
       103 
101 
     | 
    
         
             
                  expect(@conds.length).to eq(1)
         
     | 
| 
       104 
102 
     | 
    
         
             
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
       105 
104 
     | 
    
         
             
                it 'returns the condition expr' do
         
     | 
| 
       106 
105 
     | 
    
         
             
                  expect(@conds.keys[0]).to eq(@cond_expr)
         
     | 
| 
       107 
106 
     | 
    
         
             
                end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
       108 
108 
     | 
    
         
             
                it 'knows there are two copies' do
         
     | 
| 
       109 
109 
     | 
    
         
             
                  expect(@conds.values[0].length).to eq(2)
         
     | 
| 
       110 
110 
     | 
    
         
             
                end
         
     | 
| 
       111 
111 
     | 
    
         
             
              end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
              # And count code in superclasses, if we have it
         
     | 
| 
       114 
112 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,16 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'reek/smells/too_many_instance_variables'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'reek/examiner'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'reek/core/code_parser'
         
     | 
| 
       5 
3 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       6 
4 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            include Reek::Smells
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            describe TooManyInstanceVariables do
         
     | 
| 
      
 5 
     | 
    
         
            +
            describe Reek::Smells::TooManyInstanceVariables do
         
     | 
| 
       11 
6 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       12 
     | 
    
         
            -
                @source_name = ' 
     | 
| 
       13 
     | 
    
         
            -
                @detector = TooManyInstanceVariables 
     | 
| 
      
 7 
     | 
    
         
            +
                @source_name = 'dummy_source'
         
     | 
| 
      
 8 
     | 
    
         
            +
                @detector = build(:smell_detector, smell_type: :TooManyInstanceVariables, source: @source_name)
         
     | 
| 
       14 
9 
     | 
    
         
             
              end
         
     | 
| 
       15 
10 
     | 
    
         | 
| 
       16 
11 
     | 
    
         
             
              it_should_behave_like 'SmellDetector'
         
     | 
| 
         @@ -77,11 +72,11 @@ describe TooManyInstanceVariables do 
     | 
|
| 
       77 
72 
     | 
    
         
             
                    end
         
     | 
| 
       78 
73 
     | 
    
         
             
                  end
         
     | 
| 
       79 
74 
     | 
    
         
             
                EOS
         
     | 
| 
       80 
     | 
    
         
            -
                ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
      
 75 
     | 
    
         
            +
                ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       81 
76 
     | 
    
         
             
                @warning = @detector.examine_context(ctx)[0]
         
     | 
| 
       82 
77 
     | 
    
         
             
                expect(@warning.source).to eq(@source_name)
         
     | 
| 
       83 
     | 
    
         
            -
                expect(@warning.smell_category).to eq(TooManyInstanceVariables.smell_category)
         
     | 
| 
       84 
     | 
    
         
            -
                expect(@warning.smell_type).to eq(TooManyInstanceVariables.smell_type)
         
     | 
| 
      
 78 
     | 
    
         
            +
                expect(@warning.smell_category).to eq(Reek::Smells::TooManyInstanceVariables.smell_category)
         
     | 
| 
      
 79 
     | 
    
         
            +
                expect(@warning.smell_type).to eq(Reek::Smells::TooManyInstanceVariables.smell_type)
         
     | 
| 
       85 
80 
     | 
    
         
             
                expect(@warning.parameters[:count]).to eq(10)
         
     | 
| 
       86 
81 
     | 
    
         
             
                expect(@warning.lines).to eq([2])
         
     | 
| 
       87 
82 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,95 +1,78 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'reek/smells/too_many_methods'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'reek/examiner'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'reek/core/code_parser'
         
     | 
| 
       5 
3 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       6 
4 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            include Reek::Smells
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            describe TooManyMethods do
         
     | 
| 
      
 5 
     | 
    
         
            +
            describe Reek::Smells::TooManyMethods do
         
     | 
| 
       11 
6 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       12 
     | 
    
         
            -
                @source_name = ' 
     | 
| 
       13 
     | 
    
         
            -
                @detector =  
     | 
| 
      
 7 
     | 
    
         
            +
                @source_name = 'dummy_source'
         
     | 
| 
      
 8 
     | 
    
         
            +
                @detector = described_class.new(@source_name)
         
     | 
| 
      
 9 
     | 
    
         
            +
                @detector.configure_with 'max_methods' => 2
         
     | 
| 
       14 
10 
     | 
    
         
             
              end
         
     | 
| 
       15 
11 
     | 
    
         | 
| 
       16 
12 
     | 
    
         
             
              it_should_behave_like 'SmellDetector'
         
     | 
| 
       17 
13 
     | 
    
         | 
| 
       18 
14 
     | 
    
         
             
              context 'counting methods' do
         
     | 
| 
       19 
     | 
    
         
            -
                it 'should not report  
     | 
| 
       20 
     | 
    
         
            -
                  src =  
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def me31x()3 end;def me32x()3 end;def me33x()3 end;def me34x()3 end;def me35x()3 end
         
     | 
| 
       27 
     | 
    
         
            -
              def me41x()3 end;def me42x()3 end;def me43x()3 end;def me44x()3 end;def me45x()3 end
         
     | 
| 
       28 
     | 
    
         
            -
            end
         
     | 
| 
       29 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 15 
     | 
    
         
            +
                it 'should not report if we stay below max_methods' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
      
 17 
     | 
    
         
            +
                    class Dummy
         
     | 
| 
      
 18 
     | 
    
         
            +
                      def m1; end
         
     | 
| 
      
 19 
     | 
    
         
            +
                      def m2; end
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  EOS
         
     | 
| 
       30 
22 
     | 
    
         
             
                  ctx = ModuleContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       31 
23 
     | 
    
         
             
                  expect(@detector.examine_context(ctx)).to be_empty
         
     | 
| 
       32 
24 
     | 
    
         
             
                end
         
     | 
| 
       33 
25 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                it 'should report  
     | 
| 
       35 
     | 
    
         
            -
                  src =  
     | 
| 
       36 
     | 
    
         
            -
            class  
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              def me51x()3 end
         
     | 
| 
       43 
     | 
    
         
            -
            end
         
     | 
| 
       44 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 26 
     | 
    
         
            +
                it 'should report if we exceed max_methods' do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
      
 28 
     | 
    
         
            +
                    class Dummy
         
     | 
| 
      
 29 
     | 
    
         
            +
                      def m1; end
         
     | 
| 
      
 30 
     | 
    
         
            +
                      def m2; end
         
     | 
| 
      
 31 
     | 
    
         
            +
                      def m3; end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                  EOS
         
     | 
| 
       45 
34 
     | 
    
         
             
                  ctx = ModuleContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       46 
35 
     | 
    
         
             
                  smells = @detector.examine_context(ctx)
         
     | 
| 
       47 
36 
     | 
    
         
             
                  expect(smells.length).to eq(1)
         
     | 
| 
       48 
     | 
    
         
            -
                  expect(smells[0].smell_type).to eq( 
     | 
| 
       49 
     | 
    
         
            -
                  expect(smells[0].parameters[:count]).to eq( 
     | 
| 
      
 37 
     | 
    
         
            +
                  expect(smells[0].smell_type).to eq(described_class.smell_type)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  expect(smells[0].parameters[:count]).to eq(3)
         
     | 
| 
       50 
39 
     | 
    
         
             
                end
         
     | 
| 
       51 
40 
     | 
    
         
             
              end
         
     | 
| 
       52 
41 
     | 
    
         | 
| 
       53 
42 
     | 
    
         
             
              context 'with a nested module' do
         
     | 
| 
       54 
43 
     | 
    
         
             
                it 'stops at a nested module' do
         
     | 
| 
       55 
     | 
    
         
            -
                  src =  
     | 
| 
       56 
     | 
    
         
            -
            class  
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              end
         
     | 
| 
       68 
     | 
    
         
            -
              def me51x()3 end
         
     | 
| 
       69 
     | 
    
         
            -
            end
         
     | 
| 
       70 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 44 
     | 
    
         
            +
                  src = <<-EOS
         
     | 
| 
      
 45 
     | 
    
         
            +
                    class Dummy
         
     | 
| 
      
 46 
     | 
    
         
            +
                      def m1; end
         
     | 
| 
      
 47 
     | 
    
         
            +
                      def m2; end
         
     | 
| 
      
 48 
     | 
    
         
            +
                      module Hidden
         
     | 
| 
      
 49 
     | 
    
         
            +
                        def m3; end
         
     | 
| 
      
 50 
     | 
    
         
            +
                        def m4; end
         
     | 
| 
      
 51 
     | 
    
         
            +
                        def m5; end
         
     | 
| 
      
 52 
     | 
    
         
            +
                        def m6; end
         
     | 
| 
      
 53 
     | 
    
         
            +
                      end
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  EOS
         
     | 
| 
       71 
56 
     | 
    
         
             
                  ctx = ModuleContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       72 
57 
     | 
    
         
             
                  expect(@detector.examine_context(ctx)).to be_empty
         
     | 
| 
       73 
58 
     | 
    
         
             
                end
         
     | 
| 
       74 
59 
     | 
    
         
             
              end
         
     | 
| 
       75 
60 
     | 
    
         | 
| 
       76 
61 
     | 
    
         
             
              it 'reports correctly when the class has many methods' do
         
     | 
| 
       77 
     | 
    
         
            -
                src =  
     | 
| 
       78 
     | 
    
         
            -
            class  
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
            end
         
     | 
| 
       86 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 62 
     | 
    
         
            +
                src = <<-EOS
         
     | 
| 
      
 63 
     | 
    
         
            +
                  class Dummy
         
     | 
| 
      
 64 
     | 
    
         
            +
                    def m1; end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    def m2; end
         
     | 
| 
      
 66 
     | 
    
         
            +
                    def m3; end
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                EOS
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
       87 
70 
     | 
    
         
             
                ctx = ModuleContext.new(nil, src.to_reek_source.syntax_tree)
         
     | 
| 
       88 
71 
     | 
    
         
             
                @warning = @detector.examine_context(ctx)[0]
         
     | 
| 
       89 
72 
     | 
    
         
             
                expect(@warning.source).to eq(@source_name)
         
     | 
| 
       90 
     | 
    
         
            -
                expect(@warning.smell_category).to eq( 
     | 
| 
       91 
     | 
    
         
            -
                expect(@warning.smell_type).to eq( 
     | 
| 
       92 
     | 
    
         
            -
                expect(@warning.parameters[:count]).to eq( 
     | 
| 
      
 73 
     | 
    
         
            +
                expect(@warning.smell_category).to eq(described_class.smell_category)
         
     | 
| 
      
 74 
     | 
    
         
            +
                expect(@warning.smell_type).to eq(described_class.smell_type)
         
     | 
| 
      
 75 
     | 
    
         
            +
                expect(@warning.parameters[:count]).to eq(3)
         
     | 
| 
       93 
76 
     | 
    
         
             
                expect(@warning.lines).to eq([1])
         
     | 
| 
       94 
77 
     | 
    
         
             
              end
         
     | 
| 
       95 
78 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,28 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'reek/smells/too_many_statements'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'reek/core/code_parser'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'reek/core/sniffer'
         
     | 
| 
       5 
3 
     | 
    
         
             
            require 'reek/smells/smell_detector_shared'
         
     | 
| 
       6 
4 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            include Reek
         
     | 
| 
       8 
     | 
    
         
            -
            include Reek::Smells
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
5 
     | 
    
         
             
            def process_method(src)
         
     | 
| 
       11 
6 
     | 
    
         
             
              source = src.to_reek_source
         
     | 
| 
       12 
     | 
    
         
            -
              sniffer = Core::Sniffer.new(source)
         
     | 
| 
       13 
     | 
    
         
            -
              Core:: 
     | 
| 
      
 7 
     | 
    
         
            +
              sniffer = Reek::Core::Sniffer.new(source)
         
     | 
| 
      
 8 
     | 
    
         
            +
              Reek::Core::TreeWalker.new(sniffer).process_def(source.syntax_tree)
         
     | 
| 
       14 
9 
     | 
    
         
             
            end
         
     | 
| 
       15 
10 
     | 
    
         | 
| 
       16 
11 
     | 
    
         
             
            def process_singleton_method(src)
         
     | 
| 
       17 
12 
     | 
    
         
             
              source = src.to_reek_source
         
     | 
| 
       18 
     | 
    
         
            -
              sniffer = Core::Sniffer.new(source)
         
     | 
| 
       19 
     | 
    
         
            -
              Core:: 
     | 
| 
      
 13 
     | 
    
         
            +
              sniffer = Reek::Core::Sniffer.new(source)
         
     | 
| 
      
 14 
     | 
    
         
            +
              Reek::Core::TreeWalker.new(sniffer).process_defs(source.syntax_tree)
         
     | 
| 
       20 
15 
     | 
    
         
             
            end
         
     | 
| 
       21 
16 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
            describe TooManyStatements do
         
     | 
| 
      
 17 
     | 
    
         
            +
            describe Reek::Smells::TooManyStatements do
         
     | 
| 
       23 
18 
     | 
    
         
             
              it 'should not report short methods' do
         
     | 
| 
       24 
19 
     | 
    
         
             
                src = 'def short(arga) alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;end'
         
     | 
| 
       25 
     | 
    
         
            -
                expect(src).not_to reek_of(TooManyStatements)
         
     | 
| 
      
 20 
     | 
    
         
            +
                expect(src).not_to reek_of(:TooManyStatements)
         
     | 
| 
       26 
21 
     | 
    
         
             
              end
         
     | 
| 
       27 
22 
     | 
    
         | 
| 
       28 
23 
     | 
    
         
             
              it 'should report long methods' do
         
     | 
| 
         @@ -31,34 +26,12 @@ describe TooManyStatements do 
     | 
|
| 
       31 
26 
     | 
    
         
             
              end
         
     | 
| 
       32 
27 
     | 
    
         | 
| 
       33 
28 
     | 
    
         
             
              it 'should not report initialize' do
         
     | 
| 
       34 
     | 
    
         
            -
                src =  
     | 
| 
      
 29 
     | 
    
         
            +
                src = <<-EOS
         
     | 
| 
       35 
30 
     | 
    
         
             
                  def initialize(arga)
         
     | 
| 
       36 
31 
     | 
    
         
             
                    alf = f(1); @bet = 2; @cut = 3; @dit = 4; @emp = 5; @fry = 6
         
     | 
| 
       37 
32 
     | 
    
         
             
                  end
         
     | 
| 
       38 
     | 
    
         
            -
                '
         
     | 
| 
       39 
     | 
    
         
            -
                expect(src).not_to reek_of(TooManyStatements)
         
     | 
| 
       40 
     | 
    
         
            -
              end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              it 'should only report a long method once' do
         
     | 
| 
       43 
     | 
    
         
            -
                src = <<-EOS
         
     | 
| 
       44 
     | 
    
         
            -
                  def standard_entries(rbconfig)
         
     | 
| 
       45 
     | 
    
         
            -
                    @abc = rbconfig
         
     | 
| 
       46 
     | 
    
         
            -
                    rubypath = File.join(@abc['bindir'], @abcf['ruby_install_name'] + cff['EXEEXT'])
         
     | 
| 
       47 
     | 
    
         
            -
                    major = yyy['MAJOR'].to_i
         
     | 
| 
       48 
     | 
    
         
            -
                    minor = zzz['MINOR'].to_i
         
     | 
| 
       49 
     | 
    
         
            -
                    teeny = ccc['TEENY'].to_i
         
     | 
| 
       50 
     | 
    
         
            -
                    version = ""
         
     | 
| 
       51 
     | 
    
         
            -
                    if c['rubylibdir']
         
     | 
| 
       52 
     | 
    
         
            -
                      @libruby         = "/lib/ruby"
         
     | 
| 
       53 
     | 
    
         
            -
                      @librubyver      = "/lib/ruby/"
         
     | 
| 
       54 
     | 
    
         
            -
                      @librubyverarch  = "/lib/ruby/"
         
     | 
| 
       55 
     | 
    
         
            -
                      @siteruby        = "lib/ruby/version/site_ruby"
         
     | 
| 
       56 
     | 
    
         
            -
                      @siterubyver     = siteruby
         
     | 
| 
       57 
     | 
    
         
            -
                      @siterubyverarch = "$siterubyver/['arch']}"
         
     | 
| 
       58 
     | 
    
         
            -
                    end
         
     | 
| 
       59 
     | 
    
         
            -
                  end
         
     | 
| 
       60 
33 
     | 
    
         
             
                EOS
         
     | 
| 
       61 
     | 
    
         
            -
                expect(src). 
     | 
| 
      
 34 
     | 
    
         
            +
                expect(src).not_to reek_of(:TooManyStatements)
         
     | 
| 
       62 
35 
     | 
    
         
             
              end
         
     | 
| 
       63 
36 
     | 
    
         | 
| 
       64 
37 
     | 
    
         
             
              it 'should report long inner block' do
         
     | 
| 
         @@ -79,7 +52,7 @@ describe TooManyStatements do 
     | 
|
| 
       79 
52 
     | 
    
         
             
              end
         
     | 
| 
       80 
53 
     | 
    
         
             
            end
         
     | 
| 
       81 
54 
     | 
    
         | 
| 
       82 
     | 
    
         
            -
            describe TooManyStatements do
         
     | 
| 
      
 55 
     | 
    
         
            +
            describe Reek::Smells::TooManyStatements do
         
     | 
| 
       83 
56 
     | 
    
         
             
              it 'counts 1 assignment' do
         
     | 
| 
       84 
57 
     | 
    
         
             
                method = process_method('def one() val = 4; end')
         
     | 
| 
       85 
58 
     | 
    
         
             
                expect(method.num_statements).to eq(1)
         
     | 
| 
         @@ -121,7 +94,7 @@ describe TooManyStatements do 
     | 
|
| 
       121 
94 
     | 
    
         
             
              end
         
     | 
| 
       122 
95 
     | 
    
         
             
            end
         
     | 
| 
       123 
96 
     | 
    
         | 
| 
       124 
     | 
    
         
            -
            describe TooManyStatements, 'does not count control statements' do
         
     | 
| 
      
 97 
     | 
    
         
            +
            describe Reek::Smells::TooManyStatements, 'does not count control statements' do
         
     | 
| 
       125 
98 
     | 
    
         
             
              it 'counts 1 statement in a conditional expression' do
         
     | 
| 
       126 
99 
     | 
    
         
             
                method = process_method('def one() if val == 4; callee(); end; end')
         
     | 
| 
       127 
100 
     | 
    
         
             
                expect(method.num_statements).to eq(1)
         
     | 
| 
         @@ -278,9 +251,9 @@ describe TooManyStatements, 'does not count control statements' do 
     | 
|
| 
       278 
251 
     | 
    
         
             
              end
         
     | 
| 
       279 
252 
     | 
    
         
             
            end
         
     | 
| 
       280 
253 
     | 
    
         | 
| 
       281 
     | 
    
         
            -
            describe TooManyStatements do
         
     | 
| 
      
 254 
     | 
    
         
            +
            describe Reek::Smells::TooManyStatements do
         
     | 
| 
       282 
255 
     | 
    
         
             
              before(:each) do
         
     | 
| 
       283 
     | 
    
         
            -
                @detector = TooManyStatements 
     | 
| 
      
 256 
     | 
    
         
            +
                @detector = build(:smell_detector, smell_type: :TooManyStatements, source: 'source_name')
         
     | 
| 
       284 
257 
     | 
    
         
             
              end
         
     | 
| 
       285 
258 
     | 
    
         | 
| 
       286 
259 
     | 
    
         
             
              it_should_behave_like 'SmellDetector'
         
     | 
| 
         @@ -290,7 +263,7 @@ describe TooManyStatements do 
     | 
|
| 
       290 
263 
     | 
    
         
             
                  @num_statements = 30
         
     | 
| 
       291 
264 
     | 
    
         
             
                  ctx = double('method_context').as_null_object
         
     | 
| 
       292 
265 
     | 
    
         
             
                  expect(ctx).to receive(:num_statements).and_return(@num_statements)
         
     | 
| 
       293 
     | 
    
         
            -
                  expect(ctx).to receive(:config_for).with( 
     | 
| 
      
 266 
     | 
    
         
            +
                  expect(ctx).to receive(:config_for).with(described_class).and_return({})
         
     | 
| 
       294 
267 
     | 
    
         
             
                  @smells = @detector.examine_context(ctx)
         
     | 
| 
       295 
268 
     | 
    
         
             
                end
         
     | 
| 
       296 
269 
     | 
    
         | 
| 
         @@ -303,7 +276,7 @@ describe TooManyStatements do 
     | 
|
| 
       303 
276 
     | 
    
         
             
                end
         
     | 
| 
       304 
277 
     | 
    
         | 
| 
       305 
278 
     | 
    
         
             
                it 'reports the correct smell sub class' do
         
     | 
| 
       306 
     | 
    
         
            -
                  expect(@smells[0].smell_type).to eq( 
     | 
| 
      
 279 
     | 
    
         
            +
                  expect(@smells[0].smell_type).to eq(described_class.smell_type)
         
     | 
| 
       307 
280 
     | 
    
         
             
                end
         
     | 
| 
       308 
281 
     | 
    
         
             
              end
         
     | 
| 
       309 
282 
     | 
    
         
             
            end
         
     |