class AdLint::Exam::CBuiltin::W1071
Public Class Methods
new(phase_ctxt)
click to toggle source
Calls superclass method
AdLint::Examination::new
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 21644 def initialize(phase_ctxt) super interp = phase_ctxt[:cc1_interpreter] interp.on_function_started += T(:enter_function) interp.on_function_ended += T(:leave_function) interp.on_implicit_return_evaled += M(:memorize_implicit_termination) interp.on_return_stmt_evaled += T(:memorize_termination) @cur_fun = nil @term_points = 0 end
Private Instance Methods
enter_function(fun_def, *)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 21656 def enter_function(fun_def, *) @cur_fun = fun_def @term_points = 0 end
leave_function(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 21661 def leave_function(*) if @cur_fun && @term_points > 1 W(@cur_fun.location, @cur_fun.identifier.value) end @cur_fun = nil end
memorize_implicit_termination(loc)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 21668 def memorize_implicit_termination(loc) if loc.in_analysis_target?(traits) memorize_termination end end
memorize_termination(*)
click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 21674 def memorize_termination(*) @term_points += 1 if @cur_fun end