Parent

Class/Module Index [+]

Quicksearch

Reek::Core::Sniffer

Configures all available smell detectors and applies them to a source.

Public Class Methods

new(src, config_files = []) click to toggle source
# File lib/reek/core/sniffer.rb, line 68
def initialize(src, config_files = [])
  @typed_detectors = nil
  @detectors = Hash.new
  Sniffer.smell_classes.each do |klass|
    @detectors[klass] = klass.new(src.desc)
  end
  config_files.each{ |cf| Reek::Source::ConfigFile.new(cf).configure(self) }
  @source = src
  src.configure(self)
end
smell_classes() click to toggle source
# File lib/reek/core/sniffer.rb, line 43
def self.smell_classes
  # SMELL: Duplication -- these should be loaded by listing the files
  [
    Smells::Attribute,
    Smells::BooleanParameter,
    Smells::ClassVariable,
    Smells::ControlCouple,
    Smells::DataClump,
    Smells::Duplication,
    Smells::FeatureEnvy,
    Smells::IrresponsibleModule,
    Smells::LargeClass,
    Smells::LongMethod,
    Smells::LongParameterList,
    Smells::LongYieldList,
    Smells::NestedIterators,
    Smells::SimulatedPolymorphism,
    Smells::UncommunicativeMethodName,
    Smells::UncommunicativeModuleName,
    Smells::UncommunicativeParameterName,
    Smells::UncommunicativeVariableName,
    Smells::UtilityFunction,
  ]
end

Public Instance Methods

configure(klass, config) click to toggle source
# File lib/reek/core/sniffer.rb, line 79
def configure(klass, config)
  @detectors[klass].configure_with(config)
end
examine(scope, node_type) click to toggle source
# File lib/reek/core/sniffer.rb, line 88
def examine(scope, node_type)
  smell_listeners[node_type].each do |detector|
    detector.examine(scope)
  end
end
report_on(listener) click to toggle source
# File lib/reek/core/sniffer.rb, line 83
def report_on(listener)
  CodeParser.new(self).process(@source.syntax_tree)
  @detectors.each_value { |detector| detector.report_on(listener) }
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.