Spec-Zone.ru › Homebrew

Класс: RuboCop::Cop::FormulaAudit::OptionDeclarations Приватный

Наследует:
RuboCop::Cop::FormulaCop
  • Object
  • Base
  • RuboCop::Cop::FormulaCop
  • RuboCop::Cop::FormulaAudit::OptionDeclarations
показать все
Определён в:
rubocops/lines.rb,
sorbet/rbi/dsl/rubo_cop/cop/formula_audit/option_declarations.rbi

Обзор

Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.

Это правило проверяет, что options используются идиоматично.

Краткое описание атрибутов экземпляра

Атрибуты, унаследованные от RuboCop::Cop::FormulaCop

#file_path

Краткое описание методов экземпляра свернуть

  • #audit_formula(formula_nodes) ⇒ void приватный
  • #depends_on_build_with(node, *pattern, **kwargs, &block) ⇒ T.untyped приватный
  • #unless_modifier?(node) ⇒ Boolean приватный

Методы, унаследованные от RuboCop::Cop::FormulaCop

#audit_comments, #audit_urls, #caveats_strings, #dependency_name_hash_match?, #dependency_type_hash_match?, #depends_on?, #depends_on_name_type?, #formula_tap, #get_checksum_node, #on_class, #required_dependency?, #required_dependency_name?, #style_exceptions_dir, #tap_style_exception?, #versioned_formula?

Методы, включённые из HelperFunctions

#block_method_called_in_block?, #check_precedence, #class_name, #component_precedes?, #end_column, #expression_negated?, #find_all_blocks, #find_block, #find_blocks, #find_const, #find_every_func_call_by_name, #find_every_method_call_by_name, #find_instance_call, #find_instance_method_call, #find_method_calls_by_name, #find_method_def, #find_method_with_args, #find_node_method_by_name, #find_strings, #format_component, #line_number, #line_start_column, #method_called?, #method_called_ever?, #method_name, #node_equals?, #offending_node, #parameters, #parameters_passed?, #problem, #regex_match_group, #source_buffer, #start_column, #string_content

Подробное описание методов экземпляра

#audit_formula(formula_nodes) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Параметры:

  • formula_nodes (FormulaNodes)


144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'rubocops/lines.rb', line 144

def audit_formula(formula_nodes)
  return if (body_node = formula_nodes.body_node).nil?

  problem "Use new-style option definitions" if find_method_def(body_node, :options)

  if formula_tap == "homebrew-core"
    # Use of build.with? implies options, which are forbidden in homebrew/core
    find_instance_method_call(body_node, :build, :without?) do
      problem "Formulae in homebrew/core should not use `build.without?`."
    end
    find_instance_method_call(body_node, :build, :with?) do
      problem "Formulae in homebrew/core should not use `build.with?`."
    end

    return
  end

  depends_on_build_with(body_node) do |build_with_node|
    offending_node(build_with_node)
    problem "Use `:optional` or `:recommended` instead of `if #{build_with_node.source}`"
  end

  find_instance_method_call(body_node, :build, :without?) do |method|
    next unless unless_modifier?(method.parent)

    correct = method.source.gsub("out?", "?")
    problem "Use `if #{correct}` instead of `unless #{method.source}`"
  end

  find_instance_method_call(body_node, :build, :with?) do |method|
    next unless unless_modifier?(method.parent)

    correct = method.source.gsub("?", "out?")
    problem "Use `if #{correct}` instead of `unless #{method.source}`"
  end

  find_instance_method_call(body_node, :build, :with?) do |method|
    next unless expression_negated?(method)

    problem "Instead of negating `build.with?`, use `build.without?`"
  end

  find_instance_method_call(body_node, :build, :without?) do |method|
    next unless expression_negated?(method)

    problem "Instead of negating `build.without?`, use `build.with?`"
  end

  find_instance_method_call(body_node, :build, :without?) do |method|
    arg = parameters(method).fetch(0)
    next unless (match = regex_match_group(arg, /^-?-?without-(.*)/))

    problem "Instead of duplicating `without`, " \
            "use `build.without? \"#{match[1]}\"` to check for \"--without-#{match[1]}\""
  end

  find_instance_method_call(body_node, :build, :with?) do |method|
    arg = parameters(method).fetch(0)
    next unless (match = regex_match_group(arg, /^-?-?with-(.*)/))

    problem "Instead of duplicating `with`, " \
            "use `build.with? \"#{match[1]}\"` to check for '--with-#{match[1]}'"
  end

  find_instance_method_call(body_node, :build, :include?) do
    problem "`build.include?` is deprecated"
  end
end

#depends_on_build_with(node, *pattern, **kwargs, &block) ⇒ T.untyped

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • node (RuboCop::AST::Node)
  • pattern (String, Symbol)
  • kwargs (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


17
# File 'sorbet/rbi/dsl/rubo_cop/cop/formula_audit/option_declarations.rbi', line 17

def depends_on_build_with(node, *pattern, **kwargs, &block); end

#unless_modifier?(node) ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • node (RuboCop::AST::Node)

Возвращает:

  • (Boolean)


214
215
216
217
218
219
# File 'rubocops/lines.rb', line 214

def unless_modifier?(node)
  return false unless node.if_type?

  node = T.cast(node, RuboCop::AST::IfNode)
  node.modifier_form? && node.unless?
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/RuboCop/Cop/FormulaAudit/OptionDeclarations.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API