Sha256: 2789dd17aa1a0c32f4ef8475bfb235bec110cd43fce8449de6da9e614f5e71df

Contents?: true

Size: 1.22 KB

Versions: 12

Compression:

Stored size: 1.22 KB

Contents

require "rubycritic/serializer"
require "rubycritic/analysers_runner"
require "rubycritic/smells_status_setter"
require "rubycritic/version"
require "digest/md5"

module Rubycritic

  class RevisionComparator
    SNAPSHOTS_DIR_NAME = "snapshots"

    def initialize(paths)
      @paths = paths
    end

    def set_statuses(analysed_modules_now)
      if Config.source_control_system.revision?
        SmellsStatusSetter.set(
          analysed_modules_before.flat_map(&:smells),
          analysed_modules_now.flat_map(&:smells)
        )
      end
      analysed_modules_now
    end

    private

    def analysed_modules_before
      serializer = Serializer.new(revision_file)
      if File.file?(revision_file)
        serializer.load
      else
        analysed_modules = nil
        Config.source_control_system.travel_to_head do
          analysed_modules = AnalysersRunner.new(@paths).run
        end
        serializer.dump(analysed_modules)
        analysed_modules
      end
    end

    def revision_file
      @revision_file ||= File.join(
        Config.root,
        SNAPSHOTS_DIR_NAME,
        VERSION,
        Digest::MD5.hexdigest(Marshal.dump(@paths)),
        Config.source_control_system.head_reference
      )
    end
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rubycritic-2.6.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.5.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.4.1 lib/rubycritic/revision_comparator.rb
rubycritic-2.4.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.3.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.2.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.1.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.0.0 lib/rubycritic/revision_comparator.rb
rubycritic-1.4.0 lib/rubycritic/revision_comparator.rb
rubycritic-1.3.0 lib/rubycritic/revision_comparator.rb
rubycritic-1.2.1 lib/rubycritic/revision_comparator.rb
rubycritic-1.2.0 lib/rubycritic/revision_comparator.rb