Spec-Zone.ru › Homebrew

Класс: RuboCop::Cop::FormulaAudit::BottleFormat Частный

Наследует:
RuboCop::Cop::FormulaCop
  • Object
  • Base
  • RuboCop::Cop::FormulaCop
  • RuboCop::Cop::FormulaAudit::BottleFormat
показать все
Расширен модулем:
AutoCorrector
Определён в:
rubocops/bottle.rb

Обзор

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

Этот cop проверяет блок bottle в формулах.

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

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

#file_path

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

  • #audit_formula(formula_nodes) ⇒ void частный

Методы, унаследованные от 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)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'rubocops/bottle.rb', line 14

def audit_formula(formula_nodes)
  bottle_node = find_block(formula_nodes.body_node, :bottle)
  return if bottle_node.nil?

  sha256_nodes = find_method_calls_by_name(bottle_node.body, :sha256)
  cellar_node = find_node_method_by_name(bottle_node.body, :cellar)
  cellar_source = T.cast(cellar_node, T.nilable(RuboCop::AST::SendNode))&.first_argument&.source

  if sha256_nodes.present? && cellar_node.present?
    offending_node(cellar_node)
    problem "`cellar` should be a parameter to `sha256`" do |corrector|
      corrector.remove(range_by_whole_lines(cellar_node.source_range, include_final_newline: true))
    end
  end

  sha256_nodes.each do |sha256_node|
    sha256_hash = sha256_node.last_argument
    sha256_pairs = sha256_hash.pairs
    next if sha256_pairs.count != 1

    sha256_pair = sha256_pairs.first
    sha256_key = sha256_pair.key
    sha256_value = sha256_pair.value
    next unless sha256_value.sym_type?

    tag = sha256_value.value
    digest_source = sha256_key.source
    sha256_line = if cellar_source.present?
      "sha256 cellar: #{cellar_source}, #{tag}: #{digest_source}"
    else
      "sha256 #{tag}: #{digest_source}"
    end

    offending_node(sha256_node)
    problem "`sha256` should use new syntax" do |corrector|
      corrector.replace(sha256_node.source_range, sha256_line)
    end
  end
end

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

Spec-Zone.ru

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