使用YARD记录宏生成方法的参数

时间:2017-12-28 05:47:44

标签: ruby yard

提供以下输入:

=LOOKUP(2^15,SEARCH({"Beijing","New York","Japan"},A1,1),{"Beijing","New York","Japan"})

YARD 0.9.12生成以下警告(自〜> 0.8以来新的):

class A
  # @!macro [attach] add_setting
  #   @!attribute [rw] $1
  #   @!method $1=(value)
  def self.add_setting(setting)
  end

  # @param value [String] Hexadecimal representation of color
  add_setting :color
end

构建此文档以避免警告的正确方法是什么? (此模式用于rspec。)

1 个答案:

答案 0 :(得分:1)

你是正确的rspec使用此文档,你可以看到他们使用定义的macro

指定
# @macro [attach] add_setting
#   @!attribute [rw] $1
#   @!method $1=(value)
# .....
# @macro add_setting
# Run examples over DRb (default: `false`). RSpec doesn't supply the DRb
# server, but you can use tools like spork.
add_setting :drb

如果您在记录此方法时发现@macro add_setting声明,则会告诉yard使用add_setting macro。在这种情况下,$1表示drb,因此它会记录drb属性。 (不是个别的getter / setter方法)

正如您所知,当他们记录这些方法时,他们不会声明数据类型,因为这些类型可能因不同的文档方法而有所不同。相反,他们在方法的描述中指定默认值。

选项1 (不确定原因为何)

只需定义getter和setter,而不是使用看起来像

!@attribute声明
class A
  # @!macro [attach] add_setting
  #   @!method $1
  #     @return [Object] the $1 of the a 
  #   @!method $1=(value)
  def self.add_setting(setting)
  end
  # @param value [String] Hexadecimal representation of color
  add_setting :color
end

@return很重要或警告回来

选项2

如果你真的想要这个功能,你可以使用@overload看起来像

class A
  # @!macro [attach] add_setting
  #   @!method $1
  #     @return [Object] the $1 of the a
  #   @!method $1=(value)
  def self.add_setting(setting)
  end
  # @overload color=(value)
  #   @param value [String] Hexadecimal representation of color
  # @macro add_setting
  add_setting :color
  add_setting :name
end

这会导致namecolor的getter方法记录为:

  • name =>宾语
    • 返回a
    • 的名称
  • color =>宾语
    • 返回a
    • 的颜色

但是setter方法看起来像

  • name =(value)=>对象
  • color =(value)=>宾语
    • 参数:
    • value(String) - 颜色的十六进制表示

因为我们重载color=

据说这并不能真正帮助你,因为它可能包括单独记录方法。

其他选择:

  • 忽略警告
  • 完全警告-q
  • 结帐Thread