Slide 18
Slide 18 text
Architecture
def get_ast(diff_path)
exprs = []
ast = Parser::CurrentRuby.parse(File.read(diff_path))
exprs << { ast: ast, filename: diff_path }
end
def dfs_describe(node, filename, def_name_arr)
...省略
case node.type
when :send
method_node = node.children[1]
if node.children[1] == :describe
def_name = node.children[2].children[0] # "Omochi::CLI"
if !def_name.nil? && def_name.is_a?(String)
def_name = get_pure_function_name(def_name)
def_name_arr.push(def_name)
end
end
end
node.children.each { |child| dfs_describe(child, filename, def_name_arr) }
def_name_arr
end