Sha256: 98bc38972796dae8abd078d780696bb353368861ca8bf774fcb4c40c30cdf853

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

require 'simplabs/excellent/warning'

module Simplabs

  module Excellent

    module Checks

      # This is the base class for all code checks. All checks must specify +interesting_nodes+. When one of these nodes is processed by Excellent, it
      # will invoke the +evaluate_node+ method of all checks that specify the node as one if their +interesting_nodes+.
      class Base

        attr_reader :warnings

        # An array of node types that are interesting for the check. These are symbols as returned by RubyParser (see http://parsetree.rubyforge.org/ruby_parser/),
        # e.g. <tt>:if</tt> or <tt>:defn</tt>
        attr_reader :interesting_nodes

        def initialize #:nodoc:
          @warnings = []
        end

        # This method is called whenever Excellent processes a node that the check specified as one of the nodes it is interested in (see interesting_nodes).
        #
        # ==== Parameters
        #
        # * <tt>context</tt> - This is the last context the code processor has constructed. It contains all information required to execute the check (see Simplabs::Excellent::Parsing::SexpContext).
        def evaluate_node(context)
          evaluate(context)
        end

        # Adds a warning
        #
        # ==== Parameters
        #
        # * <tt>context</tt> - The context the check has been executed on.
        # * <tt>message</tt> - The warning message.
        # * <tt>info</tt> - The information hash that contains more info on the finding.
        # * <tt>offset</tt> - The line offset that is added to the context's line property.
        def add_warning(context, message, info = {}, offset = 0)
          klass = self.class
          @warnings << Simplabs::Excellent::Warning.new(klass, message, context.file, context.line + offset, info)
        end
  
      end

    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
simplabs-excellent-1.2.1 lib/simplabs/excellent/checks/base.rb
simplabs-excellent-1.2.2 lib/simplabs/excellent/checks/base.rb