Sha256: 82543ce0e64c713fcc3f71b4ceb599c1671b4ceb115edd4c07dc8f327b2ac8b3

Contents?: true

Size: 1.1 KB

Versions: 16

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

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'.freeze

    def initialize(paths)
      @paths = paths
    end

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

    private

    def load_cached_analysed_modules
      Serializer.new(revision_file).load if File.file?(revision_file)
    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

16 entries across 16 versions & 1 rubygems

Version Path
rubycritic-3.5.2 lib/rubycritic/revision_comparator.rb
rubycritic-3.5.1 lib/rubycritic/revision_comparator.rb
rubycritic-3.5.0 lib/rubycritic/revision_comparator.rb
rubycritic-3.4.0 lib/rubycritic/revision_comparator.rb
rubycritic-3.3.0 lib/rubycritic/revision_comparator.rb
rubycritic-3.2.3 lib/rubycritic/revision_comparator.rb
rubycritic-3.2.2 lib/rubycritic/revision_comparator.rb
rubycritic-3.2.1 lib/rubycritic/revision_comparator.rb
rubycritic-3.2.0 lib/rubycritic/revision_comparator.rb
rubycritic-3.1.3 lib/rubycritic/revision_comparator.rb
rubycritic-3.1.2 lib/rubycritic/revision_comparator.rb
rubycritic-3.1.1 lib/rubycritic/revision_comparator.rb
rubycritic-3.1.0 lib/rubycritic/revision_comparator.rb
rubycritic-3.0.0 lib/rubycritic/revision_comparator.rb
rubycritic-2.9.4 lib/rubycritic/revision_comparator.rb
rubycritic-2.9.3 lib/rubycritic/revision_comparator.rb