# File lib/ruote/svc/treechecker.rb, line 38 def initialize(context) return if context['use_ruby_treechecker'] == false checker = Rufus::TreeChecker.new do exclude_fvccall :abort, :exit, :exit! exclude_fvccall :system, :fork, :syscall, :trap, :require, :load exclude_fvccall :at_exit #exclude_call_to :class exclude_fvcall :private, :public, :protected #exclude_raise # no raise or throw exclude_eval # no eval, module_eval or instance_eval exclude_backquotes # no `rm -fR the/kitchen/sink` exclude_alias # no alias or aliast_method exclude_global_vars # $vars are off limits exclude_module_tinkering # no module opening exclude_rebinding Kernel # no 'k = Kernel' exclude_access_to( IO, File, FileUtils, Process, Signal, Thread, ThreadGroup) #exclude_class_tinkering :except => Ruote::ProcessDefinition # # excludes defining/opening any class except # Ruote::ProcessDefinition exclude_call_to :instance_variable_get, :instance_variable_set end stricter_checker = checker.clone stricter_checker.add_rules do exclude_def # no method definition exclude_raise # no raise or throw end # the checker used when reading process definitions @def_checker = stricter_checker.clone # and not dup @def_checker.freeze ## the checker used when dealing with conditionals # #@con_checker = checker.clone # and not dup #@con_checker.add_rules do # exclude_raise # no raise or throw # at_root do # exclude_head [ :block ] # preventing 'a < b; do_sthing_evil()' # exclude_head [ :lasgn ] # preventing 'a = 3' # end #end #@con_checker.freeze # # lib/ruote/exp/condition.rb doesn't use this treechecker # kept (commented out) for 'documentation' # the checker used when dealing with code in $(ruby:xxx} @dol_checker = stricter_checker.clone # and not dup @dol_checker.freeze # the checker used when dealing with BlockParticipant code @blo_checker = checker.clone # and not dup @blo_checker.add_rules do exclude_def # no method definition end @blo_checker.freeze # the checker used for CodeParticipant @cod_checker = checker.clone # and not dup @cod_checker.freeze freeze # preventing further modifications end