Class/Module Index [+]

Quicksearch

Brakeman::ProcessorHelper

Contains a couple shared methods for Processors.

Public Instance Methods

class_name(exp) click to toggle source

Returns a class name as a Symbol.

# File lib/brakeman/processors/lib/processor_helper.rb, line 51
def class_name exp
  case exp
  when Sexp
    case exp.node_type
    when :const
      exp.value
    when :lvar
      exp.value.to_sym
    when :colon2
      "#{class_name(exp.lhs)}::#{exp.rhs}".to_sym
    when :colon3
      "::#{exp.value}".to_sym
    when :call
      process exp
    when :self
      @current_class || @current_module || nil
    else
      raise "Error: Cannot get class name from #{exp}"
    end
  when Symbol
    exp
  when nil
    nil
  else
    raise "Error: Cannot get class name from #{exp}"
  end
end
process_all(exp) click to toggle source
# File lib/brakeman/processors/lib/processor_helper.rb, line 3
def process_all exp
  exp.each_sexp do |e|
    process e
  end
  exp
end
process_all!(exp) click to toggle source
# File lib/brakeman/processors/lib/processor_helper.rb, line 10
def process_all! exp
  exp.map! do |e|
    if sexp? e
      process e
    else
      e
    end
  end

  exp
end
process_call_args(exp) click to toggle source

Process the arguments of a method call. Does not store results.

This method is used because Sexp#args and Sexp#arglist create new objects.

# File lib/brakeman/processors/lib/processor_helper.rb, line 25
def process_call_args exp
  exp.each_arg do |a|
    process a if sexp? a
  end

  exp
end
process_module(exp) click to toggle source

Sets the current module.

# File lib/brakeman/processors/lib/processor_helper.rb, line 33
def process_module exp
  module_name = class_name(exp.class_name).to_s
  prev_module = @current_module

  if prev_module
    @current_module = "#{prev_module}::#{module_name}"
  else
    @current_module = module_name
  end

  process_all exp.body

  @current_module = prev_module

  exp
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.