Sha256: 15972293febe35b0857efcc52fe2d20f77d322db7d20ebe7cb8c3ec494d02290

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

PuppetLint.new_check(:parameter_documentation) do
  def check
    class_indexes.each do |klass|
      next if klass[:param_tokens].nil?

      doc_params = []
      tokens[0..klass[:start]].reverse_each do |dtok|
        next if [:CLASS, :NEWLINE, :WHITESPACE, :INDENT].include?(dtok.type)
        if [:COMMENT, :MLCOMMENT, :SLASH_COMMENT].include?(dtok.type)
          doc_params << $1 if dtok.value =~ /\A\s*\$([a-zA-Z0-9_]+)::/
        else
          break
        end
      end

      params = []
      e = klass[:param_tokens].each
      e.each do |ptok|
        params << ptok if ptok.type == :VARIABLE
        # skip to the next parameter to avoid finding default values of variables
        begin
          while true
            ptok = e.next
            break if ptok == :COMMA
          end
        rescue StopIteration
          break
        end
      end

      params.each do |p|
        next if doc_params.include? p.value
        notify :warning, {
          :message => "missing documentation for class parameter #{klass[:name_token].value}::#{p.value}",
          :line    => p.line,
          :column  => p.column,
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puppet-lint-param-docs-1.0.0 lib/puppet-lint/plugins/check_parameter_documentation.rb