Class/Module Index [+]

Quicksearch

Brakeman::LibraryProcessor

Process generic library and stores it in Tracker.libs

Public Class Methods

new(tracker) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 7
def initialize tracker
  super
  @file_name = nil
  @alias_processor = Brakeman::AliasProcessor.new tracker
end

Public Instance Methods

process_class(exp) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 18
def process_class exp
  name = class_name(exp.class_name)
  
  if @current_class
    outer_class = @current_class
    name = (outer_class[:name].to_s + "::" + name.to_s).to_sym
  end

  if @current_module
    name = (@current_module[:name].to_s + "::" + name.to_s).to_sym
  end

  if @tracker.libs[name]
    @current_class = @tracker.libs[name]
  else
    begin
      parent = class_name exp.parent_name
    rescue StandardError => e
      Brakeman.debug e
      parent = nil
    end

    @current_class = { :name => name,
                  :parent => parent,
                  :includes => [],
                  :public => {},
                  :private => {},
                  :protected => {},
                  :src => exp,
                  :file => @file_name }
  
    @tracker.libs[name] = @current_class
  end

  exp.body = process_all! exp.body

  if outer_class
    @current_class = outer_class
  else
    @current_class = nil
  end

  exp
end
process_defn(exp) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 100
def process_defn exp
  exp = @alias_processor.process exp
  exp.node_type = :methdef

  if @current_class
    @current_class[:public][exp.method_name] = exp
  elsif @current_module
    @current_module[:public][exp.method_name] = exp
  end

  exp
end
process_defs(exp) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 113
def process_defs exp
  exp = @alias_processor.process exp
  exp.node_type = :selfdef

  if @current_class
    @current_class[:public][exp.method_name] = exp
  elsif @current_module
    @current_module[:public][exp.method_name] = exp
  end

  exp
end
process_library(src, file_name = nil) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 13
def process_library src, file_name = nil
  @file_name = file_name
  process src
end
process_module(exp) click to toggle source
# File lib/brakeman/processors/library_processor.rb, line 63
def process_module exp
  name = class_name(exp.module_name)

  if @current_module
    outer_class = @current_module
    name = (outer_class[:name].to_s + "::" + name.to_s).to_sym
  end

  if @current_class
    name = (@current_class[:name].to_s + "::" + name.to_s).to_sym
  end

  if @tracker.libs[name]
    @current_module = @tracker.libs[name]
  else
    @current_module = { :name => name,
                  :includes => [],
                  :public => {},
                  :private => {},
                  :protected => {},
                  :src => exp,
                  :file => @file_name }
  
    @tracker.libs[name] = @current_module
  end

  exp.body = process_all! exp.body

  if outer_class
    @current_module = outer_class
  else
    @current_module = nil
  end

  exp
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.