class AdLint::Exam::CBuiltin::W0108::Visitor

Public Class Methods

new(phase_ctxt) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2624
def initialize(phase_ctxt)
  @phase_ctxt = phase_ctxt
end

Public Instance Methods

visit_c99_for_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2653
def visit_c99_for_statement(node)
  super if node.analysis_target?(traits)
  warn(node.condition_statement.expression)
end
visit_conditional_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2687
def visit_conditional_expression(node)
  super if node.analysis_target?(traits)
  warn(node.condition)
end
visit_do_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2643
def visit_do_statement(node)
  super if node.analysis_target?(traits)
  warn(node.expression)
end
visit_equality_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2664
def visit_equality_expression(node)
  super if node.analysis_target?(traits)
  warn(node.lhs_operand)
  warn(node.rhs_operand)
end
visit_for_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2648
def visit_for_statement(node)
  super if node.analysis_target?(traits)
  warn(node.condition_statement.expression)
end
visit_if_else_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2633
def visit_if_else_statement(node)
  super if node.analysis_target?(traits)
  warn(node.expression)
end
visit_if_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2628
def visit_if_statement(node)
  super if node.analysis_target?(traits)
  warn(node.expression)
end
visit_logical_and_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2675
def visit_logical_and_expression(node)
  super if node.analysis_target?(traits)
  warn(node.lhs_operand)
  warn(node.rhs_operand)
end
visit_logical_or_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2681
def visit_logical_or_expression(node)
  super if node.analysis_target?(traits)
  warn(node.lhs_operand)
  warn(node.rhs_operand)
end
visit_relational_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2658
def visit_relational_expression(node)
  super if node.analysis_target?(traits)
  warn(node.lhs_operand)
  warn(node.rhs_operand)
end
visit_unary_arithmetic_expression(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2670
def visit_unary_arithmetic_expression(node)
  super if node.analysis_target?(traits)
  warn(node.operand) if node.operator.type == "!"
end
visit_while_statement(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2638
def visit_while_statement(node)
  super if node.analysis_target?(traits)
  warn(node.expression)
end

Private Instance Methods

suppressors() click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2715
def suppressors
  @phase_ctxt[:suppressors]
end
warn(node) click to toggle source
# File lib/adlint/exam/c_builtin/cc1_check.rb, line 2693
def warn(node)
  node = node.expression while node.kind_of?(Cc1::GroupedExpression)
  if node && node.analysis_target?(traits)
    case node
    when Cc1::SimpleAssignmentExpression,
         Cc1::CompoundAssignmentExpression
      W(node.location)
    end
  end
end