class AdLint::Exam::CBuiltin::FN_PARA

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 248
def initialize(phase_ctxt)
  super
  @fpath = phase_ctxt[:sources].first.fpath
  trav = phase_ctxt[:cc1_ast_traversal]
  trav.enter_ansi_function_definition  += T(:measure_ansi_function)
  trav.enter_kandr_function_definition += T(:measure_kandr_function)
end

Private Instance Methods

do_execute(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 258
def do_execute(*) end
do_prepare(*) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 257
def do_prepare(*) end
measure_ansi_function(fun_def) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 260
def measure_ansi_function(fun_def)
  # TODO: Determine how many parameters if function has va_list.
  if fun_def.parameter_type_list
    params = fun_def.parameter_definitions
    FN_PARA(FunctionId.new(fun_def.identifier.value,
                           fun_def.signature.to_s),
            fun_def.location, params.count { |param| !param.type.void? })
  else
    # TODO: Determine how many parameters if signature is abbreviated.
    FN_PARA(FunctionId.new(fun_def.identifier.value,
                           fun_def.signature.to_s),
            fun_def.location, 0)
  end
end
measure_kandr_function(fun_def) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_metric.rb, line 275
def measure_kandr_function(fun_def)
  FN_PARA(FunctionId.new(fun_def.identifier.value, fun_def.signature.to_s),
          fun_def.location, fun_def.identifier_list.size)
end