Sha256: 93b7170977045be9862569367c49bb7396633a8be48183d3e4e23f11ac5213e3

Contents?: true

Size: 1.5 KB

Versions: 16

Compression:

Stored size: 1.5 KB

Contents

#Contains a couple shared methods for Processors.
module Brakeman::ProcessorHelper
  def process_all exp
    exp.each_sexp do |e|
      process e
    end
    exp
  end

  def process_all! exp
    exp.map! do |e|
      if sexp? e
        process e
      else
        e
      end
    end

    exp
  end

  #Process the arguments of a method call. Does not store results.
  #
  #This method is used because Sexp#args and Sexp#arglist create new objects.
  def process_call_args exp
    exp.each_arg do |a|
      process a if sexp? a
    end

    exp
  end
  #Sets the current module.
  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

    if block_given?
      yield
    else
      process_all exp.body
    end

    @current_module = prev_module

    exp
  end

  #Returns a class name as a Symbol.
  #If class name cannot be determined, returns _exp_.
  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
        exp
      end
    when Symbol
      exp
    when nil
      nil
    else
      exp
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
brakeman-min-2.6.2 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.6.2 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.6.1 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.6.1 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.6.0 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.6.0 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.5.0 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.5.0 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.4.3 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.4.3 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.4.2 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.4.2 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.4.1 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.4.1 lib/brakeman/processors/lib/processor_helper.rb
brakeman-2.4.0 lib/brakeman/processors/lib/processor_helper.rb
brakeman-min-2.4.0 lib/brakeman/processors/lib/processor_helper.rb