Module: Brakeman::ProcessorHelper
- Included in:
- AliasProcessor, BaseCheck, BaseProcessor, BasicProcessor
- Defined in:
- lib/brakeman/processors/lib/processor_helper.rb
Overview
Contains a couple shared methods for Processors.
Instance Method Summary collapse
-
#class_name(exp) ⇒ Object
Returns a class name as a Symbol.
- #process_all(exp) ⇒ Object
- #process_all!(exp) ⇒ Object
-
#process_call_args(exp) ⇒ Object
Process the arguments of a method call.
- #process_class(exp) ⇒ Object
-
#process_module(exp) ⇒ Object
Sets the current module.
Instance Method Details
#class_name(exp) ⇒ Object
Returns a class name as a Symbol. If class name cannot be determined, returns exp.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/brakeman/processors/lib/processor_helper.rb', line 65 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 :self @current_class || @current_module || nil else exp end when Symbol exp when nil nil else exp end end |
#process_all(exp) ⇒ Object
3 4 5 6 7 8 |
# 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) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# 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) ⇒ Object
Process the arguments of a method call. Does not store results.
This method is used because Sexp#args and Sexp#arglist create new objects.
25 26 27 28 29 30 31 |
# 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_class(exp) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/brakeman/processors/lib/processor_helper.rb', line 33 def process_class exp current_class = @current_class @current_class = class_name exp[1] process_all exp.body @current_class = current_class exp end |
#process_module(exp) ⇒ Object
Sets the current module.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/brakeman/processors/lib/processor_helper.rb', line 42 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 |