class Brakeman::Processor

Makes calls to the appropriate processor.

The ControllerProcessor, TemplateProcessor, and ModelProcessor will update the Tracker with information about what is parsed.

Public Class Methods

new(app_tree, options) click to toggle source
# File lib/brakeman/processor.rb, line 15
def initialize(app_tree, options)
  @tracker = Tracker.new(app_tree, self, options)
end

Public Instance Methods

process_config(src, file_name) click to toggle source

Process configuration file source

# File lib/brakeman/processor.rb, line 24
def process_config src, file_name
  ConfigProcessor.new(@tracker).process_config src, file_name
end
process_controller(src, file_name) click to toggle source

Process controller source. file_name is used for reporting

# File lib/brakeman/processor.rb, line 39
def process_controller src, file_name
  if contains_class? src
    ControllerProcessor.new(@tracker).process_controller src, file_name
  else
    LibraryProcessor.new(@tracker).process_library src, file_name
  end
end
process_controller_alias(name, src, only_method = nil, file = nil) click to toggle source

Process variable aliasing in controller source and save it in the tracker.

# File lib/brakeman/processor.rb, line 49
def process_controller_alias name, src, only_method = nil, file = nil
  ControllerAliasProcessor.new(@tracker, only_method).process_controller name, src, file
end
process_gems(gem_files) click to toggle source

Process Gemfile

# File lib/brakeman/processor.rb, line 29
def process_gems gem_files
  GemProcessor.new(@tracker).process_gems gem_files
end
process_initializer(file_name, src) click to toggle source

Process source for initializing files

# File lib/brakeman/processor.rb, line 90
def process_initializer file_name, src
  res = BaseProcessor.new(@tracker).process_file src, file_name
  res = AliasProcessor.new(@tracker).process_safely res, nil, file_name
  @tracker.initializers[file_name] = res
end
process_lib(src, file_name) click to toggle source

Process source for a library file

# File lib/brakeman/processor.rb, line 97
def process_lib src, file_name
  LibraryProcessor.new(@tracker).process_library src, file_name
end
process_model(src, file_name) click to toggle source

Process a model source

# File lib/brakeman/processor.rb, line 54
def process_model src, file_name
  result = ModelProcessor.new(@tracker).process_model src, file_name
  AliasProcessor.new(@tracker, file_name).process result if result
end
process_routes(src) click to toggle source

Process route file source

# File lib/brakeman/processor.rb, line 34
def process_routes src
  RoutesProcessor.new(@tracker).process_routes src
end
process_template(name, src, type, called_from = nil, file_name = nil) click to toggle source

Process either an ERB or HAML template

# File lib/brakeman/processor.rb, line 60
def process_template name, src, type, called_from = nil, file_name = nil
  case type
  when :erb
    result = ErbTemplateProcessor.new(@tracker, name, called_from, file_name).process src
  when :haml
    result = HamlTemplateProcessor.new(@tracker, name, called_from, file_name).process src
  when :erubis
    result = ErubisTemplateProcessor.new(@tracker, name, called_from, file_name).process src
  when :slim
    result = SlimTemplateProcessor.new(@tracker, name, called_from, file_name).process src
  else
    abort "Unknown template type: #{type} (#{name})"
  end

  #Each template which is rendered is stored separately
  #with a new name.
  if called_from
    name = ("#{name}.#{called_from}").to_sym
  end

  @tracker.templates[name].src = result
  @tracker.templates[name].type = type
end
process_template_alias(template) click to toggle source

Process any calls to render() within a template

# File lib/brakeman/processor.rb, line 85
def process_template_alias template
  TemplateAliasProcessor.new(@tracker, template).process_safely template.src
end
tracked_events() click to toggle source
# File lib/brakeman/processor.rb, line 19
def tracked_events
  @tracker
end