class JRuby::Lint::Checkers::System
Public Instance Methods
add_finding(node)
click to toggle source
# File lib/jruby/lint/checkers/system.rb, line 22 def add_finding(node) collector.add_finding("Calling Kernel.system('ruby ...') will get called in-process. Sometimes this works differently than expected", [:system, :warning], node.line+1) end
red_flag?(node)
click to toggle source
Defines red_flag when argument matches ruby
# File lib/jruby/lint/checkers/system.rb, line 28 def red_flag?(node) first_arg = node.args_node.child_nodes.first first_arg && first_arg.node_type.to_s == "STRNODE" && ruby_executable?(first_arg) end
ruby_executable?(node)
click to toggle source
# File lib/jruby/lint/checkers/system.rb, line 33 def ruby_executable?(node) match_on = Regexp.union([/.*ruby$/i, /.*j?irb$/i, /\.rb$/i]) node.value.split.first =~ match_on end
visitCallNode(node)
click to toggle source
Make sure to follow all Kernel.system calls
# File lib/jruby/lint/checkers/system.rb, line 7 def visitCallNode(node) if node.name == :system || node.name == :'`' @call_node = node add_finding(node) if red_flag?(node) proc { @call_node = nil } end end
visitFCallNode(node)
click to toggle source
Visits the function calls for system
# File lib/jruby/lint/checkers/system.rb, line 16 def visitFCallNode(node) if node.name == :system add_finding(node) if red_flag?(node) end end