class Pedant::CheckScriptDoesNotUseAuditDotInc

Public Class Methods

requires() click to toggle source
Calls superclass method Pedant::Check::requires
# File lib/pedant/checks/script_missing_audit_inc.rb, line 29
def self.requires
  super + [:main, :trees, :codes]
end

Public Instance Methods

run() click to toggle source
# File lib/pedant/checks/script_missing_audit_inc.rb, line 33
def run
  args = []
  tree = @kb[:trees][@kb[:main]]

  tree.all(:Include).each do |node|
    next unless node.filename.text == 'audit.inc'
    report(:info, "#{node.filename.text}")
    args << node
  end # each

  audit_calls = []
  tree.all(:Call).each do |node|
    next unless node.name.ident.name == "audit"
    next if node.args.empty?
    audit_calls << node
  end

  if args.length == 0
    report(:warn, "Plugin does not include audit.inc. Should it?")
    return warn
  elsif args.length == 1
    if audit_calls.length == 0
      report(:warn, "Plugin includes audit.inc but does not make a direct audit call")
      return warn
    end
    pass
  elsif args.length > 1
    report(:error, "Plugin specifies multiple audit.inc:")
    args.each { |call| report(:error, call.context()) }
    return fail
  end

end