Sha256: df2488f84c8d156ec8f5d0c847b34e39f455a648f56b4977f7cb98ff0926f90c

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

require "rubycritic/smells_serializer"
require "rubycritic/source_locator"
require "rubycritic/analysers_runner"
require "rubycritic/smells_status_setter"

module Rubycritic

  class RevisionComparator
    SNAPSHOTS_DIR_NAME = "snapshots"

    def initialize(smells, source_control_system)
      @smells_now = smells
      @source_control_system = source_control_system
    end

    def smells
      SmellsStatusSetter.new(smells_before, @smells_now).smells
    end

    private

    def smells_before
      serializer = SmellsSerializer.new(revision_file)
      if File.file?(revision_file)
        serializer.load
      else
        smells = nil
        @source_control_system.travel_to_head do
          smells = AnalysersRunner.new(paths_of_tracked_files).smells
        end
        serializer.dump(smells)
        smells
      end
    end

    def revision_file
      @revision_file ||= File.join(
        ::Rubycritic.configuration.root,
        SNAPSHOTS_DIR_NAME,
        @source_control_system.head_reference
      )
    end

    def paths_of_tracked_files
      SourceLocator.new(["."]).paths
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rubycritic-0.0.14 lib/rubycritic/revision_comparator.rb
rubycritic-0.0.13 lib/rubycritic/revision_comparator.rb