class Preek::Examiner

Public Class Methods

new(files, excludes = [], options = {}) click to toggle source
# File lib/preek/examiner.rb, line 5
def initialize(files, excludes = [], options = {})
  @files = files
  @excludes = excludes
  @reporter = options[:reporter] || VerboseReport
  output_class = options[:output] || Output
  @output = output_class.new
  @total_smells = 0
end

Public Instance Methods

perform() click to toggle source
# File lib/preek/examiner.rb, line 14
def perform
  examine_and_report
  @output.separated do
    report_success if report_success?
    report_total_smells unless success?
    report_non_existing if non_existing_files?
  end
end

Private Instance Methods

examine_and_report() click to toggle source
# File lib/preek/examiner.rb, line 24
def examine_and_report
  sources.each do |source|
    examiner = Reek::Examiner.new(source)
    filter_excludes_from(examiner)
    @reporter.new(examiner, @output).report
    @total_smells += examiner.smells_count
  end
end
existing_files() click to toggle source
# File lib/preek/examiner.rb, line 59
def existing_files
  @existing_files ||= @files.select {|file| File.exists? file}
end
filter_excludes_from(examiner) click to toggle source
# File lib/preek/examiner.rb, line 33
def filter_excludes_from(examiner)
  examiner.smells.delete_if do |smell|
    @excludes.include? smell.smell_type
  end
end
non_existing_files() click to toggle source
# File lib/preek/examiner.rb, line 67
def non_existing_files
  @files - existing_files
end
non_existing_files?() click to toggle source
# File lib/preek/examiner.rb, line 63
def non_existing_files?
  !non_existing_files.empty?
end
report_non_existing() click to toggle source
# File lib/preek/examiner.rb, line 55
def report_non_existing
  @output.red :error, %{No such file(s) - #{non_existing_files.join(', ')}.\n}
end
report_success() click to toggle source
# File lib/preek/examiner.rb, line 47
def report_success
  @output.green :success, %(No smells detected)
end
report_success?() click to toggle source
# File lib/preek/examiner.rb, line 43
def report_success?
  !@reporter.verbose? && @sources.count > 0 && success?
end
report_total_smells() click to toggle source
# File lib/preek/examiner.rb, line 51
def report_total_smells
  @output.red :total, @total_smells
end
sources() click to toggle source
# File lib/preek/examiner.rb, line 71
def sources
  @sources ||= Reek::Source::SourceLocator.new(existing_files).all_sources
end
success?() click to toggle source
# File lib/preek/examiner.rb, line 39
def success?
  @total_smells == 0
end