rubycritic 2.6.0 → 2.7.0
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/.rubocop.yml +3 -585
- data/.rubocop_todo.yml +36 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -1
- data/Rakefile +9 -9
- data/bin/rubycritic +2 -2
- data/features/command_line_interface/options.feature +1 -0
- data/features/step_definitions/rubycritic_steps.rb +1 -1
- data/features/step_definitions/sample_file_steps.rb +3 -3
- data/features/support/env.rb +6 -6
- data/lib/rubycritic.rb +1 -1
- data/lib/rubycritic/analysers/attributes.rb +6 -7
- data/lib/rubycritic/analysers/churn.rb +4 -6
- data/lib/rubycritic/analysers/complexity.rb +5 -7
- data/lib/rubycritic/analysers/helpers/ast_node.rb +4 -6
- data/lib/rubycritic/analysers/helpers/flay.rb +1 -3
- data/lib/rubycritic/analysers/helpers/flog.rb +5 -7
- data/lib/rubycritic/analysers/helpers/methods_counter.rb +1 -3
- data/lib/rubycritic/analysers/helpers/modules_locator.rb +3 -5
- data/lib/rubycritic/analysers/helpers/parser.rb +2 -2
- data/lib/rubycritic/analysers/helpers/reek.rb +1 -1
- data/lib/rubycritic/analysers/smells/flay.rb +14 -16
- data/lib/rubycritic/analysers/smells/flog.rb +15 -17
- data/lib/rubycritic/analysers/smells/reek.rb +11 -13
- data/lib/rubycritic/analysers_runner.rb +8 -10
- data/lib/rubycritic/browser.rb +17 -0
- data/lib/rubycritic/cli/application.rb +3 -3
- data/lib/rubycritic/cli/options.rb +29 -23
- data/lib/rubycritic/command_factory.rb +5 -5
- data/lib/rubycritic/commands/base.rb +2 -2
- data/lib/rubycritic/commands/ci.rb +4 -4
- data/lib/rubycritic/commands/default.rb +5 -5
- data/lib/rubycritic/commands/help.rb +1 -1
- data/lib/rubycritic/commands/status_reporter.rb +1 -1
- data/lib/rubycritic/commands/version.rb +2 -2
- data/lib/rubycritic/configuration.rb +4 -2
- data/lib/rubycritic/core/analysed_module.rb +15 -17
- data/lib/rubycritic/core/analysed_modules_collection.rb +3 -3
- data/lib/rubycritic/core/location.rb +4 -6
- data/lib/rubycritic/core/rating.rb +5 -7
- data/lib/rubycritic/core/smell.rb +11 -13
- data/lib/rubycritic/generators/console_report.rb +1 -1
- data/lib/rubycritic/generators/html/base.rb +9 -9
- data/lib/rubycritic/generators/html/code_file.rb +5 -7
- data/lib/rubycritic/generators/html/code_index.rb +3 -5
- data/lib/rubycritic/generators/html/line.rb +4 -6
- data/lib/rubycritic/generators/html/overview.rb +4 -6
- data/lib/rubycritic/generators/html/smells_index.rb +3 -5
- data/lib/rubycritic/generators/html/turbulence.rb +4 -6
- data/lib/rubycritic/generators/html/view_helpers.rb +4 -4
- data/lib/rubycritic/generators/html_report.rb +13 -9
- data/lib/rubycritic/generators/json/simple.rb +7 -9
- data/lib/rubycritic/generators/json_report.rb +1 -3
- data/lib/rubycritic/generators/text/list.rb +9 -9
- data/lib/rubycritic/reporter.rb +3 -5
- data/lib/rubycritic/revision_comparator.rb +6 -8
- data/lib/rubycritic/serializer.rb +2 -4
- data/lib/rubycritic/smells_status_setter.rb +2 -4
- data/lib/rubycritic/source_control_systems/base.rb +4 -6
- data/lib/rubycritic/source_control_systems/double.rb +1 -2
- data/lib/rubycritic/source_control_systems/git.rb +1 -3
- data/lib/rubycritic/source_control_systems/mercurial.rb +1 -3
- data/lib/rubycritic/source_locator.rb +5 -6
- data/lib/rubycritic/version.rb +1 -1
- data/rubycritic.gemspec +26 -25
- data/test/analysers_test_helper.rb +1 -1
- data/test/lib/rubycritic/analysers/churn_test.rb +9 -9
- data/test/lib/rubycritic/analysers/complexity_test.rb +5 -5
- data/test/lib/rubycritic/analysers/helpers/methods_counter_test.rb +12 -12
- data/test/lib/rubycritic/analysers/helpers/modules_locator_test.rb +25 -25
- data/test/lib/rubycritic/analysers/smells/flay_test.rb +12 -12
- data/test/lib/rubycritic/analysers/smells/flog_test.rb +7 -7
- data/test/lib/rubycritic/analysers/smells/reek_test.rb +8 -8
- data/test/lib/rubycritic/browser_test.rb +16 -0
- data/test/lib/rubycritic/commands/status_reporter_test.rb +31 -19
- data/test/lib/rubycritic/configuration_test.rb +10 -10
- data/test/lib/rubycritic/core/analysed_module_test.rb +37 -37
- data/test/lib/rubycritic/core/analysed_modules_collection_test.rb +32 -32
- data/test/lib/rubycritic/core/location_test.rb +16 -16
- data/test/lib/rubycritic/core/smell_test.rb +31 -31
- data/test/lib/rubycritic/core/smells_array_test.rb +18 -18
- data/test/lib/rubycritic/generators/console_report_test.rb +26 -26
- data/test/lib/rubycritic/generators/turbulence_test.rb +8 -8
- data/test/lib/rubycritic/generators/view_helpers_test.rb +36 -36
- data/test/lib/rubycritic/smells_status_setter_test.rb +7 -7
- data/test/lib/rubycritic/source_control_systems/base_test.rb +7 -7
- data/test/lib/rubycritic/source_control_systems/double_test.rb +3 -3
- data/test/lib/rubycritic/source_control_systems/git_test.rb +4 -4
- data/test/lib/rubycritic/source_control_systems/mercurial_test.rb +3 -3
- data/test/lib/rubycritic/source_locator_test.rb +30 -30
- data/test/lib/rubycritic/version_test.rb +4 -4
- data/test/test_helper.rb +4 -4
- metadata +30 -17
    
        data/.rubocop_todo.yml
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # Offense count: 1
         | 
| 2 | 
            +
            Metrics/AbcSize:
         | 
| 3 | 
            +
              Exclude:
         | 
| 4 | 
            +
                - 'lib/rubycritic/analysers/smells/flay.rb'
         | 
| 5 | 
            +
                - 'lib/rubycritic/cli/options.rb'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            # Offense count: 6
         | 
| 8 | 
            +
            # Configuration parameters: CountComments.
         | 
| 9 | 
            +
            Metrics/MethodLength:
         | 
| 10 | 
            +
              Exclude:
         | 
| 11 | 
            +
                - 'lib/rubycritic/analysers/helpers/ast_node.rb'
         | 
| 12 | 
            +
                - 'lib/rubycritic/analysers/smells/flay.rb'
         | 
| 13 | 
            +
                - 'lib/rubycritic/command_factory.rb'
         | 
| 14 | 
            +
                - 'lib/rubycritic/core/analysed_module.rb'
         | 
| 15 | 
            +
                - 'lib/rubycritic/reporter.rb'
         | 
| 16 | 
            +
                - 'lib/rubycritic/revision_comparator.rb'
         | 
| 17 | 
            +
                - 'lib/rubycritic/platforms/base.rb'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            # Offense count: 4
         | 
| 20 | 
            +
            Style/AccessorMethodName:
         | 
| 21 | 
            +
              Exclude:
         | 
| 22 | 
            +
                - 'lib/rubycritic/analysers/helpers/ast_node.rb'
         | 
| 23 | 
            +
                - 'lib/rubycritic/generators/html/base.rb'
         | 
| 24 | 
            +
                - 'lib/rubycritic/revision_comparator.rb'
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            # Offense count: 1
         | 
| 27 | 
            +
            Style/ClassVars:
         | 
| 28 | 
            +
              Exclude:
         | 
| 29 | 
            +
                - 'lib/rubycritic/source_control_systems/base.rb'
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            # Offense count: 3
         | 
| 32 | 
            +
            # Cop supports --auto-correct.
         | 
| 33 | 
            +
            # Configuration parameters: EnforcedStyle, SupportedStyles.
         | 
| 34 | 
            +
            # SupportedStyles: use_perl_names, use_english_names
         | 
| 35 | 
            +
            Style/SpecialGlobalVars:
         | 
| 36 | 
            +
              Enabled: false
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,9 @@ | |
| 1 | 
            +
            # 2.7.0 / 2015-01-23
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * [FEATURE] Open html report with browser (by YingRui Lu)
         | 
| 4 | 
            +
            * [CHANGE] Bump Reek to 3.9.1
         | 
| 5 | 
            +
            * [CHANGE] Bump Rubocop to 0.36 and internal cleanup (preparing for Ruby 2.3)
         | 
| 6 | 
            +
             | 
| 1 7 | 
             
            # 2.6.0 / 2015-01-21
         | 
| 2 8 |  | 
| 3 9 | 
             
            * [FEATURE] Add a minimum score option to the command line interface (by Roberto Schneider)
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | @@ -1,18 +1,18 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 1 | 
            +
            require 'bundler/gem_tasks'
         | 
| 2 | 
            +
            require 'rake/testtask'
         | 
| 3 | 
            +
            require 'rubocop/rake_task'
         | 
| 4 | 
            +
            require 'cucumber/rake/task'
         | 
| 5 5 |  | 
| 6 6 | 
             
            Rake::TestTask.new do |task|
         | 
| 7 | 
            -
              task.libs.push  | 
| 8 | 
            -
              task.libs.push  | 
| 9 | 
            -
              task.pattern =  | 
| 7 | 
            +
              task.libs.push 'lib'
         | 
| 8 | 
            +
              task.libs.push 'test'
         | 
| 9 | 
            +
              task.pattern = 'test/**/*_test.rb'
         | 
| 10 10 | 
             
            end
         | 
| 11 11 |  | 
| 12 12 | 
             
            Cucumber::Rake::Task.new(:features) do |t|
         | 
| 13 | 
            -
              t.cucumber_opts =  | 
| 13 | 
            +
              t.cucumber_opts = 'features --format progress --color'
         | 
| 14 14 | 
             
            end
         | 
| 15 15 |  | 
| 16 16 | 
             
            RuboCop::RakeTask.new
         | 
| 17 17 |  | 
| 18 | 
            -
            task : | 
| 18 | 
            +
            task default: [:test, :features, :rubocop]
         | 
    
        data/bin/rubycritic
    CHANGED
    
    | @@ -2,8 +2,8 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            # Always look in the lib directory of this gem
         | 
| 4 4 | 
             
            # first when searching the load path
         | 
| 5 | 
            -
            $LOAD_PATH.unshift File.expand_path( | 
| 5 | 
            +
            $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
         | 
| 6 6 |  | 
| 7 | 
            -
            require  | 
| 7 | 
            +
            require 'rubycritic/cli/application'
         | 
| 8 8 |  | 
| 9 9 | 
             
            exit Rubycritic::Cli::Application.new(ARGV).execute
         | 
| @@ -29,6 +29,7 @@ Feature: Rubycritic can be controlled using command-line options | |
| 29 29 | 
             
                      -m, --mode-ci                    Use CI mode (faster, but only analyses last commit)
         | 
| 30 30 | 
             
                          --deduplicate-symlinks       De-duplicate symlinks based on their final target
         | 
| 31 31 | 
             
                          --suppress-ratings           Suppress letter ratings
         | 
| 32 | 
            +
                          --no-browser                 Do not open html report with browser
         | 
| 32 33 | 
             
                      -v, --version                    Show gem's version
         | 
| 33 34 | 
             
                      -h, --help                       Show this message
         | 
| 34 35 |  | 
| @@ -15,7 +15,7 @@ Then(/^it reports:$/) do |report| | |
| 15 15 | 
             
            end
         | 
| 16 16 |  | 
| 17 17 | 
             
            Then(/^there is no output on stdout$/) do
         | 
| 18 | 
            -
              expect(last_command_started).to have_output_on_stdout( | 
| 18 | 
            +
              expect(last_command_started).to have_output_on_stdout('')
         | 
| 19 19 | 
             
            end
         | 
| 20 20 |  | 
| 21 21 | 
             
            Then(/^it reports the current version$/) do
         | 
| @@ -12,7 +12,7 @@ Given(/^the smelly file 'smelly.rb'/) do | |
| 12 12 | 
             
                  end
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              EOS
         | 
| 15 | 
            -
              write_file( | 
| 15 | 
            +
              write_file('smelly.rb', contents)
         | 
| 16 16 | 
             
            end
         | 
| 17 17 |  | 
| 18 18 | 
             
            Given(/^the clean file 'clean.rb'/) do
         | 
| @@ -22,9 +22,9 @@ Given(/^the clean file 'clean.rb'/) do | |
| 22 22 | 
             
                  def foo; end
         | 
| 23 23 | 
             
                end
         | 
| 24 24 | 
             
              EOS
         | 
| 25 | 
            -
              write_file( | 
| 25 | 
            +
              write_file('clean.rb', contents)
         | 
| 26 26 | 
             
            end
         | 
| 27 27 |  | 
| 28 28 | 
             
            Given(/^the empty file 'empty.rb'/) do
         | 
| 29 | 
            -
              write_file( | 
| 29 | 
            +
              write_file('clean.rb', '')
         | 
| 30 30 | 
             
            end
         | 
    
        data/features/support/env.rb
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require_relative  | 
| 2 | 
            -
            require_relative  | 
| 3 | 
            -
            require_relative  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 1 | 
            +
            require_relative '../../lib/rubycritic'
         | 
| 2 | 
            +
            require_relative '../../lib/rubycritic/cli/application'
         | 
| 3 | 
            +
            require_relative '../../lib/rubycritic/commands/status_reporter'
         | 
| 4 | 
            +
            require 'aruba/cucumber'
         | 
| 5 | 
            +
            require 'minitest/spec'
         | 
| 6 6 |  | 
| 7 7 | 
             
            #
         | 
| 8 8 | 
             
            # Provides runner methods used in the cucumber steps.
         | 
| @@ -16,7 +16,7 @@ class RubycriticWorld | |
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              def rubycritic(args)
         | 
| 19 | 
            -
                run_simple("rubycritic #{args}", false)
         | 
| 19 | 
            +
                run_simple("rubycritic #{args}  --no-browser", false)
         | 
| 20 20 | 
             
              end
         | 
| 21 21 | 
             
            end
         | 
| 22 22 |  | 
    
        data/lib/rubycritic.rb
    CHANGED
    
    
| @@ -1,10 +1,9 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/analysers/helpers/methods_counter'
         | 
| 2 | 
            +
            require 'rubycritic/analysers/helpers/modules_locator'
         | 
| 3 | 
            +
            require 'rubycritic/colorize'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Rubycritic
         | 
| 6 6 | 
             
              module Analyser
         | 
| 7 | 
            -
             | 
| 8 7 | 
             
                class Attributes
         | 
| 9 8 | 
             
                  include Colorize
         | 
| 10 9 | 
             
                  def initialize(analysed_modules)
         | 
| @@ -15,13 +14,13 @@ module Rubycritic | |
| 15 14 | 
             
                    @analysed_modules.each do |analysed_module|
         | 
| 16 15 | 
             
                      analysed_module.methods_count = MethodsCounter.new(analysed_module).count
         | 
| 17 16 | 
             
                      analysed_module.name = ModulesLocator.new(analysed_module).first_name
         | 
| 18 | 
            -
                      print green  | 
| 17 | 
            +
                      print green '.'
         | 
| 19 18 | 
             
                    end
         | 
| 20 | 
            -
                    puts  | 
| 19 | 
            +
                    puts ''
         | 
| 21 20 | 
             
                  end
         | 
| 22 21 |  | 
| 23 22 | 
             
                  def to_s
         | 
| 24 | 
            -
                     | 
| 23 | 
            +
                    'attributes'
         | 
| 25 24 | 
             
                  end
         | 
| 26 25 | 
             
                end
         | 
| 27 26 | 
             
              end
         | 
| @@ -1,8 +1,7 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/colorize'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Rubycritic
         | 
| 4 4 | 
             
              module Analyser
         | 
| 5 | 
            -
             | 
| 6 5 | 
             
                class Churn
         | 
| 7 6 | 
             
                  include Colorize
         | 
| 8 7 | 
             
                  attr_writer :source_control_system
         | 
| @@ -16,15 +15,14 @@ module Rubycritic | |
| 16 15 | 
             
                    @analysed_modules.each do |analysed_module|
         | 
| 17 16 | 
             
                      analysed_module.churn = @source_control_system.revisions_count(analysed_module.path)
         | 
| 18 17 | 
             
                      analysed_module.committed_at = @source_control_system.date_of_last_commit(analysed_module.path)
         | 
| 19 | 
            -
                      print green  | 
| 18 | 
            +
                      print green '.'
         | 
| 20 19 | 
             
                    end
         | 
| 21 | 
            -
                    puts  | 
| 20 | 
            +
                    puts ''
         | 
| 22 21 | 
             
                  end
         | 
| 23 22 |  | 
| 24 23 | 
             
                  def to_s
         | 
| 25 | 
            -
                     | 
| 24 | 
            +
                    'churn'
         | 
| 26 25 | 
             
                  end
         | 
| 27 26 | 
             
                end
         | 
| 28 | 
            -
             | 
| 29 27 | 
             
              end
         | 
| 30 28 | 
             
            end
         | 
| @@ -1,9 +1,8 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/analysers/helpers/flog'
         | 
| 2 | 
            +
            require 'rubycritic/colorize'
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Rubycritic
         | 
| 5 5 | 
             
              module Analyser
         | 
| 6 | 
            -
             | 
| 7 6 | 
             
                class Complexity
         | 
| 8 7 | 
             
                  include Colorize
         | 
| 9 8 | 
             
                  def initialize(analysed_modules)
         | 
| @@ -16,15 +15,14 @@ module Rubycritic | |
| 16 15 | 
             
                      @flog.reset
         | 
| 17 16 | 
             
                      @flog.flog(analysed_module.path)
         | 
| 18 17 | 
             
                      analysed_module.complexity = @flog.total_score.round
         | 
| 19 | 
            -
                      print green  | 
| 18 | 
            +
                      print green '.'
         | 
| 20 19 | 
             
                    end
         | 
| 21 | 
            -
                    puts  | 
| 20 | 
            +
                    puts ''
         | 
| 22 21 | 
             
                  end
         | 
| 23 22 |  | 
| 24 23 | 
             
                  def to_s
         | 
| 25 | 
            -
                     | 
| 24 | 
            +
                    'complexity'
         | 
| 26 25 | 
             
                  end
         | 
| 27 26 | 
             
                end
         | 
| 28 | 
            -
             | 
| 29 27 | 
             
              end
         | 
| 30 28 | 
             
            end
         | 
| @@ -1,8 +1,7 @@ | |
| 1 1 | 
             
            module Parser
         | 
| 2 2 | 
             
              module AST
         | 
| 3 | 
            -
             | 
| 4 3 | 
             
                class Node
         | 
| 5 | 
            -
                  MODULE_TYPES = [:module, :class]
         | 
| 4 | 
            +
                  MODULE_TYPES = [:module, :class].freeze
         | 
| 6 5 |  | 
| 7 6 | 
             
                  def count_nodes_of_type(*types)
         | 
| 8 7 | 
             
                    count = 0
         | 
| @@ -22,8 +21,8 @@ module Parser | |
| 22 21 |  | 
| 23 22 | 
             
                  def get_module_names
         | 
| 24 23 | 
             
                    children_modules = children
         | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 24 | 
            +
                                       .select { |child| child.is_a?(Parser::AST::Node) }
         | 
| 25 | 
            +
                                       .flat_map(&:get_module_names)
         | 
| 27 26 |  | 
| 28 27 | 
             
                    if MODULE_TYPES.include?(type)
         | 
| 29 28 | 
             
                      if children_modules.empty?
         | 
| @@ -47,7 +46,7 @@ module Parser | |
| 47 46 | 
             
                      name_segments.unshift(current_node.children[1])
         | 
| 48 47 | 
             
                      current_node = current_node.children[0]
         | 
| 49 48 | 
             
                    end
         | 
| 50 | 
            -
                    name_segments.join( | 
| 49 | 
            +
                    name_segments.join('::')
         | 
| 51 50 | 
             
                  end
         | 
| 52 51 | 
             
                end
         | 
| 53 52 | 
             
              end
         | 
| @@ -64,6 +63,5 @@ module Rubycritic | |
| 64 63 | 
             
                    []
         | 
| 65 64 | 
             
                  end
         | 
| 66 65 | 
             
                end
         | 
| 67 | 
            -
             | 
| 68 66 | 
             
              end
         | 
| 69 67 | 
             
            end
         | 
| @@ -1,17 +1,15 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'flog'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Rubycritic
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
              class Flog < ::Flog
         | 
| 6 5 | 
             
                DEFAULT_OPTIONS = {
         | 
| 7 | 
            -
                  : | 
| 8 | 
            -
                  : | 
| 9 | 
            -
                  : | 
| 10 | 
            -
                }
         | 
| 6 | 
            +
                  all: true,
         | 
| 7 | 
            +
                  continue: true,
         | 
| 8 | 
            +
                  methods: true
         | 
| 9 | 
            +
                }.freeze
         | 
| 11 10 |  | 
| 12 11 | 
             
                def initialize
         | 
| 13 12 | 
             
                  super(DEFAULT_OPTIONS)
         | 
| 14 13 | 
             
                end
         | 
| 15 14 | 
             
              end
         | 
| 16 | 
            -
             | 
| 17 15 | 
             
            end
         | 
| @@ -1,7 +1,6 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/analysers/helpers/parser'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Rubycritic
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
              class MethodsCounter
         | 
| 6 5 | 
             
                def initialize(analysed_module)
         | 
| 7 6 | 
             
                  @analysed_module = analysed_module
         | 
| @@ -21,5 +20,4 @@ module Rubycritic | |
| 21 20 | 
             
                  File.read(@analysed_module.path)
         | 
| 22 21 | 
             
                end
         | 
| 23 22 | 
             
              end
         | 
| 24 | 
            -
             | 
| 25 23 | 
             
            end
         | 
| @@ -1,7 +1,6 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/analysers/helpers/parser'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Rubycritic
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
              class ModulesLocator
         | 
| 6 5 | 
             
                def initialize(analysed_module)
         | 
| 7 6 | 
             
                  @analysed_module = analysed_module
         | 
| @@ -31,12 +30,11 @@ module Rubycritic | |
| 31 30 | 
             
                end
         | 
| 32 31 |  | 
| 33 32 | 
             
                def name_from_path
         | 
| 34 | 
            -
                  [file_name.split( | 
| 33 | 
            +
                  [file_name.split('_').map(&:capitalize).join]
         | 
| 35 34 | 
             
                end
         | 
| 36 35 |  | 
| 37 36 | 
             
                def file_name
         | 
| 38 | 
            -
                  @analysed_module.pathname.basename.sub_ext( | 
| 37 | 
            +
                  @analysed_module.pathname.basename.sub_ext('').to_s
         | 
| 39 38 | 
             
                end
         | 
| 40 39 | 
             
              end
         | 
| 41 | 
            -
             | 
| 42 40 | 
             
            end
         | 
| @@ -1,10 +1,9 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            require 'rubycritic/analysers/helpers/flay'
         | 
| 2 | 
            +
            require 'rubycritic/core/smell'
         | 
| 3 | 
            +
            require 'rubycritic/colorize'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Rubycritic
         | 
| 6 6 | 
             
              module Analyser
         | 
| 7 | 
            -
             | 
| 8 7 | 
             
                class FlaySmells
         | 
| 9 8 | 
             
                  include Colorize
         | 
| 10 9 | 
             
                  def initialize(analysed_modules)
         | 
| @@ -22,13 +21,13 @@ module Rubycritic | |
| 22 21 | 
             
                      nodes.each do |node|
         | 
| 23 22 | 
             
                        @analysed_modules[node.file].duplication += node.mass
         | 
| 24 23 | 
             
                      end
         | 
| 25 | 
            -
                      print green  | 
| 24 | 
            +
                      print green '.'
         | 
| 26 25 | 
             
                    end
         | 
| 27 | 
            -
                    puts  | 
| 26 | 
            +
                    puts ''
         | 
| 28 27 | 
             
                  end
         | 
| 29 28 |  | 
| 30 29 | 
             
                  def to_s
         | 
| 31 | 
            -
                     | 
| 30 | 
            +
                    'flay smells'
         | 
| 32 31 | 
             
                  end
         | 
| 33 32 |  | 
| 34 33 | 
             
                  private
         | 
| @@ -44,12 +43,12 @@ module Rubycritic | |
| 44 43 | 
             
                  def create_smell(structural_hash, nodes)
         | 
| 45 44 | 
             
                    mass = @flay.masses[structural_hash]
         | 
| 46 45 | 
             
                    Smell.new(
         | 
| 47 | 
            -
                      : | 
| 48 | 
            -
                      : | 
| 49 | 
            -
                      : | 
| 50 | 
            -
                      : | 
| 51 | 
            -
                      : | 
| 52 | 
            -
                      : | 
| 46 | 
            +
                      locations: smell_locations(nodes),
         | 
| 47 | 
            +
                      context: similarity(structural_hash),
         | 
| 48 | 
            +
                      message: "found in #{nodes.size} nodes",
         | 
| 49 | 
            +
                      score: mass,
         | 
| 50 | 
            +
                      type: 'DuplicateCode',
         | 
| 51 | 
            +
                      cost: cost(mass)
         | 
| 53 52 | 
             
                    )
         | 
| 54 53 | 
             
                  end
         | 
| 55 54 |  | 
| @@ -61,9 +60,9 @@ module Rubycritic | |
| 61 60 |  | 
| 62 61 | 
             
                  def similarity(structural_hash)
         | 
| 63 62 | 
             
                    if @flay.identical[structural_hash]
         | 
| 64 | 
            -
                       | 
| 63 | 
            +
                      'Identical code'
         | 
| 65 64 | 
             
                    else
         | 
| 66 | 
            -
                       | 
| 65 | 
            +
                      'Similar code'
         | 
| 67 66 | 
             
                    end
         | 
| 68 67 | 
             
                  end
         | 
| 69 68 |  | 
| @@ -71,6 +70,5 @@ module Rubycritic | |
| 71 70 | 
             
                    mass / 25
         | 
| 72 71 | 
             
                  end
         | 
| 73 72 | 
             
                end
         | 
| 74 | 
            -
             | 
| 75 73 | 
             
              end
         | 
| 76 74 | 
             
            end
         |