Spec-Zone.ru › Homebrew

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

Наследуется от:
RuboCop::Cop::FormulaCop
  • Object
  • Base
  • RuboCop::Cop::FormulaCop
  • RuboCop::Cop::FormulaAudit::RedundantGenerateCompletionsShells
показать всё
Расширяется модулем:
AutoCorrector
Подключает модули:
RangeHelp
Определён в:
rubocops/lines.rb,
sorbet/rbi/dsl/rubo_cop/cop/formula_audit/redundant_generate_completions_shells.rbi

Обзор

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

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

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

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


842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
# File 'rubocops/lines.rb', line 842

def audit_formula(formula_nodes)
  install = find_method_def(formula_nodes.body_node, :install)
  return if install.blank?

  find_every_method_call_by_name(install, :generate_completions_from_executable).each do |method|
    kwargs = method.arguments.last
    next unless kwargs&.hash_type?

    pairs = T.cast(kwargs, RuboCop::AST::HashNode).pairs
    shells_pair = pairs.find { |pair| pair.key.sym_type? && pair.key.value == :shells }
    next if shells_pair.nil?

    shells_node = shells_pair.value
    next unless shells_node.array_type?
    next unless shells_node.values.all?(&:sym_type?)

    # The default shells depend on `shell_parameter_format`, so skip non-literal values.
    format_node = pairs.find { |pair| pair.key.sym_type? && pair.key.value == :shell_parameter_format }&.value
    next if format_node && !format_node.sym_type? && !format_node.str_type?

    shells = shells_node.values.map(&:value)
    default_shells = ::Utils::ShellCompletion.default_completion_shells(format_node&.value)
    # Flag only when the passed shells are exactly the defaults for this format.
    next if (default_shells - shells).any? || (shells - default_shells).any?

    offending_node(shells_pair)
    problem "Passing the default shells to `generate_completions_from_executable` is redundant" do |corrector|
      corrector.remove(
        range_with_surrounding_comma(
          range_with_surrounding_space(range: shells_pair.source_range, side: :left),
          :left,
        ),
      )
    end
  end
end

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

Spec-Zone.ru

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