Commit 598e1c9f authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Extract Process::NoDoc from Process::Lint.

Perform missing docs reporting in separate class.
parent 2b045f55
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ require 'jsduck/process/versions'
require 'jsduck/process/return_values'
require 'jsduck/process/fires'
require 'jsduck/process/lint'
require 'jsduck/process/no_doc'
require 'jsduck/process/circular_deps'

module JsDuck
@@ -71,6 +72,7 @@ module JsDuck
      Process::ReturnValues.new(relations).process_all!
      Process::Fires.new(relations).process_all!
      Process::Lint.new(relations).process_all!
      Process::NoDoc.new(relations).process_all!
      relations
    end

+0 −28
Original line number Diff line number Diff line
require 'jsduck/logger'
require 'jsduck/class'

module JsDuck
  module Process
@@ -14,7 +13,6 @@ module JsDuck

      # Runs the linter
      def process_all!
        warn_no_doc
        warn_unnamed
        warn_optional_params
        warn_duplicate_params
@@ -37,32 +35,6 @@ module JsDuck
        end
      end

      # print warning for each class or public member with no name
      def warn_no_doc
        @relations.each do |cls|

          if cls[:doc] == "" && !cls[:private]
            warn(:no_doc, "No documentation for #{cls[:name]}", cls)
          end

          cls.all_local_members.each do |member|
            if !member[:private] && !member[:hide] && !JsDuck::Class.constructor?(member)
              if member[:doc] == ""
                warn(:no_doc_member, "No documentation for #{member[:owner]}##{member[:name]}", member)
              end

              (member[:params] || []).each do |p|
                if p[:doc] == ""
                  warn(:no_doc_param, "No documentation for parameter #{p[:name]} of #{member[:owner]}##{member[:name]}", member)
                end
              end

            end
          end

        end
      end

      # print warning for each non-optional parameter that follows an optional parameter
      def warn_optional_params
        each_member do |member|
+49 −0
Original line number Diff line number Diff line
require 'jsduck/logger'
require 'jsduck/class'

module JsDuck
  module Process

    # Reports missing documentation
    class NoDoc
      def initialize(relations)
        @relations = relations
      end

      # Prints warning for each class or public member with no name
      def process_all!
        @relations.each do |cls|

          if cls[:doc] == "" && !cls[:private]
            warn(:no_doc, "No documentation for #{cls[:name]}", cls)
          end

          cls.all_local_members.each do |member|
            if !member[:private] && !member[:hide] && !JsDuck::Class.constructor?(member)
              if member[:doc] == ""
                warn(:no_doc_member, "No documentation for #{member[:owner]}##{member[:name]}", member)
              end

              (member[:params] || []).each do |p|
                if p[:doc] == ""
                  warn(:no_doc_param, "No documentation for parameter #{p[:name]} of #{member[:owner]}##{member[:name]}", member)
                end
              end

            end
          end

        end
      end

      private

      # Prints warning + filename and linenumber from doc-context
      def warn(type, msg, member)
        Logger.warn(type, msg, member[:files][0])
      end

    end

  end
end