class AdLint::Exam::CBuiltin::FN_UELS
Public Class Methods
new(phase_ctxt)
click to toggle source
Calls superclass method
AdLint::Examination::new
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 508 def initialize(phase_ctxt) super @fpath = phase_ctxt[:sources].first.fpath trav = phase_ctxt[:cc1_ast_traversal] trav.enter_ansi_function_definition += T(:enter_function) trav.leave_ansi_function_definition += T(:leave_function) trav.enter_kandr_function_definition += T(:enter_function) trav.leave_kandr_function_definition += T(:leave_function) trav.enter_if_else_statement += T(:enter_if_else_statement) trav.leave_if_else_statement += T(:leave_if_else_statement) @cur_fun = nil @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end
Private Instance Methods
do_execute(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 525 def do_execute(*) end
do_prepare(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 524 def do_prepare(*) end
enter_function(fun_def)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 527 def enter_function(fun_def) @cur_fun = fun_def @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end
enter_if_else_statement(node)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 544 def enter_if_else_statement(node) @if_else_stmt_chain += 1 if @cur_fun && @if_else_stmt_chain > 0 if node.else_statement.kind_of?(Cc1::IfStatement) @incomplete_if_else_stmt_cnt += 1 end end end
leave_function(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 533 def leave_function(*) if @cur_fun FN_UELS(FunctionId.new(@cur_fun.identifier.value, @cur_fun.signature.to_s), @cur_fun.location, @incomplete_if_else_stmt_cnt) @cur_fun = nil @if_else_stmt_chain = 0 @incomplete_if_else_stmt_cnt = 0 end end
leave_if_else_statement(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 554 def leave_if_else_statement(*) @if_else_stmt_chain -= 1 end