class AdLint::Exam::CBuiltin::W0079

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 1752
def initialize(phase_ctxt)
  super
  trav = phase_ctxt[:cc1_ast_traversal]
  trav.enter_variable_definition += T(:check)
  @interp = phase_ctxt[:cc1_interpreter]
end

Private Instance Methods

check(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1760
def check(node)
  return unless node.initializer && node.initializer.expression

  if node.type.array? && node.type.base_type.same_as?(char_t)
    if len = node.type.length
      finder = StringLiteralSpecifierFinder.new
      node.initializer.expression.accept(finder)
      if str_lit = finder.result
        str = unquote_string_literal(str_lit)
        W(node.location) if len <= str.length
      end
    end
  end
end
interpreter() click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1779
def interpreter
  @interp
end
unquote_string_literal(str_lit) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 1775
def unquote_string_literal(str_lit)
  str_lit.literal.value.sub(/\AL?"(.*)"\z/, "\\1")
end