Class: RuboCop::Cop::Yardoc::TypesFormat

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ParamHelp, RuboCop::Cop::YardHelp
Defined in:
lib/rubocop/cop/yardoc/types_format.rb

Overview

Ensures all types are separated by a space

Examples:

# bad
# @param [String,nil]
def greet(name); end

# good
# @param name [String, nil] the name to greet
def greet(name); end

Constant Summary collapse

MSG =
'Types should be separated by a comma and a space'

Constants included from ParamHelp

ParamHelp::COMMENT_TYPES_REGEX

Instance Method Summary collapse

Methods included from ParamHelp

#param_tags_and_positions, #start_tag_position, #start_type_position

Instance Method Details

#on_def(node) ⇒ Object Also known as: on_defs

Executed for every method definition

Parameters:

  • node (RuboCop::AST::Node)

    The AST node



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rubocop/cop/yardoc/types_format.rb', line 27

def on_def(node)
  return unless documented?(node)

  param_tags_and_positions(node, tags: [:param, :return]).each do |param|
    expected = param.types.join(', ')

    next if param.types_s == expected

    add_offense(param.tag_range, message: MSG) do |corrector|
      corrector.replace(param.type_range, "[#{expected}]")
    end
  end
end