| Class | Sexp |
| In: |
lib/code_analyzer/sexp.rb
|
| Parent: | Object |
s(:args_add_block,
s(:args_add,
s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "hello", s(1, 6))))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "world", s(1, 15))))
), false
)
=> [
s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "hello", s(1, 6))))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "world", s(1, 15))))
]
Get all condition nodes.
s(:binary,
s(:binary,
s(:var_ref, s(:@ident, "user", s(1, 0))),
:==,
s(:var_ref, s(:@ident, "current_user", s(1, 8)))
),
:"&&",
s(:call,
s(:var_ref, s(:@ident, "user", s(1, 24))),
:".",
s(:@ident, "valid?", s(1, 29))
)
)
=> [
s(:binary,
s(:var_ref, s(:@ident, "user", s(1, 0))),
:==,
s(:var_ref, s(:@ident, "current_user", s(1, 8)))
),
s(:call,
s(:var_ref, s(:@ident, "user", s(1, 24))),
:".",
s(:@ident, "valid?", s(1, 29))
)
]
@return [Array] all condition nodes
Get arguments node.
s(:command,
s(:@ident, "resources", s(1, 0)),
s(:args_add_block,
s(:args_add, s(:args_new),
s(:symbol_literal, s(:symbol, s(:@ident, "posts", s(1, 11))))
), false
)
)
=> s(:args_add_block,
s(:args_add, s(:args_new),
s(:symbol_literal, s(:symbol, s(:@ident, "posts", s(1, 11))))
), false
)
Get the array size.
s(:array,
s(:args_add,
s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2))))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
)
)
=> 2
@return [Integer] array size
Get the array values.
s(:array,
s(:args_add,
s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2))))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
)
)
=> [
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2)))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
]
@return [Array] array values
Get the base class of the class node.
s(:class,
s(:const_ref, s(:@const, "User", s(1, 6))),
s(:const_path_ref, s(:var_ref, s(:@const, "ActiveRecord", s(1, 13))), s(:@const, "Base", s(1, 27))),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
=> s(:const_path_ref, s(:var_ref, s(:@const, "ActiveRecord", s(1, 13))), s(:@const, "Base", s(1, 27))),
@return [Sexp] base class of class node
Get block node.
s(:method_add_block,
s(:command,
s(:@ident, "resources", s(1, 0)),
s(:args_add_block, s(:args_add, s(:args_new), s(:symbol_literal, s(:symbol, s(:@ident, "posts", s(1, 11))))), false)
),
s(:do_block, nil,
s(:stmts_add, s(:stmts_add, s(:stmts_new), s(:void_stmt)),
s(:command,
s(:@ident, "resources", s(1, 21)),
s(:args_add_block, s(:args_add, s(:args_new), s(:symbol_literal, s(:symbol, s(:@ident, "comments", s(1, 32))))), false))
)
)
)
=> s(:do_block, nil,
s(:stmts_add, s(:stmts_add, s(:stmts_new), s(:void_stmt)),
s(:command,
s(:@ident, "resources", s(1, 21)),
s(:args_add_block, s(:args_add, s(:args_new), s(:symbol_literal, s(:symbol, s(:@ident, "comments", s(1, 32))))), false))
)
)
Get body node.
s(:class,
s(:const_ref, s(:@const, "User", s(1, 6))),
nil,
s(:bodystmt,
s(:stmts_add, s(:stmts_new),
s(:def,
s(:@ident, "login", s(1, 16)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
), nil, nil, nil
)
)
=> s(:bodystmt,
s(:stmts_add, s(:stmts_new),
s(:def,
s(:@ident, "login", s(1, 16)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
), nil, nil, nil
)
check current node.
@param [CodeAnalyzer::CheckingVisitor::Default] visitor the visitor to check current node
Get the class name of the class node.
s(:class,
s(:const_ref, s(:@const, "User", s(1, 6))),
nil,
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
=> s(:const_ref, s(:@const, "User", s(1, 6))),
@return [Sexp] class name node
Get the conditional statement of if node.
s(:if,
s(:var_ref, s(:@kw, "true", s(1, 3))),
s(:stmts_add, s(:stmts_new), s(:void_stmt)),
nil
)
=> s(:var_ref, s(:@kw, "true", s(1, 3))),
@return [Sexp] conditional statement of if node
Get expcetion class of rescue node.
s(:rescue,
s(
s(:var_ref,
s(:@const, "CustomException", s(1, 17))
)
),
nil,
s(:stmts_add, s(:stmts_new), s(:void_stmt)),
nil
)
=> s(s(:var_ref, s(:@const, "CustomException", s(1, 17))))
Get exception variable of rescue node.
s(:rescue,
nil,
s(:var_field, s(:@ident, "e", s(1, 20))),
s(:stmts_add, s(:stmts_new), s(:void_stmt)),
nil
)
=> s(:var_field, s(:@ident, "e", s(1, 20)))
grep all the recursive child nodes with conditions, and yield the first match node.
@param [Hash] options grep conditions
options is the grep conditions, like
sexp_type: :call,
receiver: s(:const, Post),
message: [:find, :new]
the condition key is one of :sexp_type, :receiver, :message, and to_s, the condition value can be Symbol, Array or Sexp.
grep all the recursive child nodes with conditions, and yield each match node.
@param [Hash] options grep conditions
options is the grep conditions, like
sexp_type: :call,
receiver: "Post",
message: ["find", "new"]
to_s: "devise"
the condition key is one of :sexp_type, :receiver, :message, :to_s, the condition value can be Symbol, Array or Sexp.
grep all the recursive child nodes with conditions, and get the count of match nodes.
@param [Hash] options grep conditions @return [Integer] the count of metch nodes
Get the hash keys.
s(:hash,
s(:assoclist_from_args,
s(
s(:assoc_new, s(:@label, "first_name:", s(1, 1)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14))))),
s(:assoc_new, s(:@label, "last_name:", s(1, 24)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Huang", s(1, 36)))))
)
)
)
=> ["first_name", "last_name"]
@return [Array] hash keys
Get hash size.
s(:hash,
s(:assoclist_from_args,
s(
s(:assoc_new, s(:@label, "first_name:", s(1, 1)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14))))),
s(:assoc_new, s(:@label, "last_name:", s(1, 24)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Huang", s(1, 36)))))
)
)
)
=> 2
@return [Integer] hash size
Get hash value node.
s(:hash,
s(:assoclist_from_args,
s(
s(:assoc_new, s(:@label, "first_name:", s(1, 1)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14))))),
s(:assoc_new, s(:@label, "last_name:", s(1, 24)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Huang", s(1, 36)))))
)
)
)
=> s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14))))
@return [Sexp] hash value node
Get the hash values.
s(:hash,
s(:assoclist_from_args,
s(
s(:assoc_new, s(:@label, "first_name:", s(1, 1)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14))))),
s(:assoc_new, s(:@label, "last_name:", s(1, 24)), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Huang", s(1, 36)))))
)
)
)
=> [
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Richard", s(1, 14)))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "Huang", s(1, 36))))
]
@return [Array] hash values
Get the left value of the assign node.
s(:assign,
s(:var_field, s(:@ident, "user", s(1, 0))),
s(:var_ref, s(:@ident, "current_user", s(1, 7)))
)
=> s(:var_field, s(:@ident, "user", s(1, 0))),
@return [Symbol] left value of lasgn or iasgn node
Get the method name of def node.
s(:def,
s(:@ident, "show", s(1, 4)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
=> s(:@ident, "show", s(1, 4)),
@return [Sexp] method name node
Get the module name of the module node.
s(:module,
s(:const_ref, s(:@const, "Admin", s(1, 7))),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
=> s(:const_ref, s(:@const, "Admin", s(1, 7))),
@return [Sexp] module name node
new method for alias node.
s(:alias,
s(:symbol_literal, s(:@ident, "new", s(1, 6))),
s(:symbol_literal, s(:@ident, "old", s(1, 10)))
)
=> s(:symbol_literal, s(:@ident, "new", s(1, 6))),
old method for alias node.
s(:alias,
s(:symbol_literal, s(:@ident, "new", s(1, 6))),
s(:symbol_literal, s(:@ident, "old", s(1, 10)))
)
=> s(:symbol_literal, s(:@ident, "old", s(1, 10))),
Get the right value of assign node.
s(:assign,
s(:var_field, s(:@ident, "user", s(1, 0))),
s(:var_ref, s(:@ident, "current_user", s(1, 7)))
)
=> s(:var_ref, s(:@ident, "current_user", s(1, 7)))
@return [Sexp] right value of assign node
Get all statements nodes.
s(:bodystmt,
s(:stmts_add,
s(:stmts_add, s(:stmts_new),
s(:def,
s(:@ident, "login?", s(1, 16)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
),
s(:def,
s(:@ident, "admin?", s(1, 33)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
), nil, nil, nil
)
=> [
s(:def,
s(:@ident, "login?", s(1, 16)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
),
s(:def,
s(:@ident, "admin?", s(1, 33)),
s(:params, nil, nil, nil, nil, nil),
s(:bodystmt, s(:stmts_add, s(:stmts_new), s(:void_stmt)), nil, nil, nil)
)
]
@return [Array] all statements
To object.
s(:array,
s(:args_add,
s(:args_add, s(:args_new), s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "first_name", s(1, 2))))),
s(:string_literal, s(:string_add, s(:string_content), s(:@tstring_content, "last_name", s(1, 16))))
)
)
=> ["first_name", "last_name"]
@return [Object]