class AdLint::Exam::CBuiltin::W0685

Public Instance Methods

check(funcall_expr, fun, arg_vars, *) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 15980
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