Class: AdLint::Exam::CBuiltin::W0685

Inherits:
W0573 show all
Defined in:
lib/adlint/exam/c_builtin/cc1_check.rb

Instance Method Summary collapse

Methods inherited from W0573

#initialize

Methods inherited from CodeCheck

message_id, message_name, #message_name, must_be_deferred?, must_be_unique?, required?

Methods inherited from AdLint::Examination

catalog, #execute, #initialize, registrant_phase_class, required?

Methods included from LogUtil

#log_debug, #log_error, #log_fatal, #log_info, #log_warn

Methods included from ReportUtil

#create_context_message, #write_FL_FUNC, #write_FL_STMT, #write_FN_CALL, #write_FN_CSUB, #write_FN_CYCM, #write_FN_GOTO, #write_FN_LINE, #write_FN_NEST, #write_FN_PARA, #write_FN_PATH, #write_FN_RETN, #write_FN_STMT, #write_FN_UELS, #write_FN_UNRC, #write_FN_UNUV, #write_assignment, #write_error_message, #write_funcall, #write_fundcl, #write_fundef, #write_gvardcl, #write_include, #write_initialization, #write_labeldef, #write_literal, #write_macrodef, #write_pp_directive, #write_typedcl, #write_vardef, #write_warning_message, #write_xref_function, #write_xref_variable

Constructor Details

This class inherits a constructor from AdLint::Exam::CBuiltin::W0573

Instance Method Details

#check(funcall_expr, fun, arg_vars) ⇒ Object



15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
# File 'lib/adlint/exam/c_builtin/cc1_check.rb', line 15972

def check(funcall_expr, fun, arg_vars, *)
  if fun.named? && fun.name =~ /\A.*scanf\z/
    fmt = create_format(funcall_expr, format_str_index_of(funcall_expr),
                        arg_vars, @environ)
    return unless fmt

    fmt.conversion_specifiers.each do |conv_spec|
      if conv_spec.scanset
        conv_spec.scanset.scan(/(.)-(.)/).each do |lhs, rhs|
          W(fmt.location) if lhs.ord > rhs.ord
        end
      end
    end
  end
end