class Rubycritic::RevisionComparator

def initialize(smells, source_control_system)

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

def paths_of_tracked_files

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

def revision_file

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

def smells

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

def smells_before

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).run
    end
    serializer.dump(smells)
    smells
  end
end