Sha256: 539a098d973484c2e18a3f1e551f7ea317e3138c2e13ec961c4a9d84b1e6e7c7

Contents?: true

Size: 1.05 KB

Versions: 25

Compression:

Stored size: 1.05 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 statuses=(analysed_modules_now)
      return unless Config.source_control_system.revision?

      analysed_modules_before = load_cached_analysed_modules
      return unless analysed_modules_before

      SmellsStatusSetter.set(
        analysed_modules_before.flat_map(&:smells),
        analysed_modules_now.flat_map(&:smells)
      )
    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

25 entries across 25 versions & 2 rubygems

Version Path
rubycritic-4.9.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.9.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.8.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.8.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.7.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.6.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.6.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.5.2 lib/rubycritic/revision_comparator.rb
rubycritic-4.5.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.5.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.4.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.4.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.3.3 lib/rubycritic/revision_comparator.rb
rubycritic-4.3.2 lib/rubycritic/revision_comparator.rb
rubycritic-4.3.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.3.0 lib/rubycritic/revision_comparator.rb
rubycritic-4.2.2 lib/rubycritic/revision_comparator.rb
rubycritic-4.2.1 lib/rubycritic/revision_comparator.rb
rubycritic-4.2.0 lib/rubycritic/revision_comparator.rb
rubycritic-simplecov-4.1.1 lib/rubycritic/revision_comparator.rb