Модуль: RuboCop::Cop::ApiAnnotationHelper Приватный
- Определён в:
- rubocops/shared/api_annotation_helper.rb
Обзор
Этот модуль является частью закрытого API. Этот модуль можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот модуль, поскольку он может быть удалён или изменён без предупреждения.
Общие вспомогательные методы для чтения аннотаций @api public/internal/private из исходных файлов во время выполнения RuboCop. Результаты кэшируются на уровне класса, поэтому каждый файл анализируется не более одного раза за запуск RuboCop.
Сводка констант свернуть
- OFFICIAL_TAPS =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.
Tap-репозитории, в которых действуют более строгие правила для публичного API.
T.let(%w[homebrew-corehomebrew-cask].freeze, T::Array[String])
- API_SOURCE_FILES =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.
Исходные файлы, аннотации
@apiв которых определяют публичную часть API. T.let(%w[formula.rbcask/cask.rbcask/dsl.rbutils/path.rb].freeze, T::Array[String])
- FORMULA_COOKBOOK_METHODS =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.
Методы, описанные в docs/Formula-Cookbook.md и сопоставленные с исходными файлами, в которых они определены (относительно Library/Homebrew/). Проверяется с помощью
Homebrew/PublicApiCookbookпо ссылкам rubydoc вdocs/Formula-Cookbook.md. T.let({ "cd" => "extend/pathname.rb", "change_make_var!" => "utils/string_inreplace_extension.rb", "compatibility_version" => "formula.rb", "conflicts_with" => "formula.rb", "depends_on" => "formula.rb", "deprecated_option" => "formula.rb", "desc" => "formula.rb", "env_script_all_files" => "extend/pathname.rb", "fails_with" => "formula.rb", "post_install_steps" => "formula.rb", "head" => "formula.rb", "homepage" => "formula.rb", "install_symlink" => "extend/pathname.rb", "keg_only" => "formula.rb", "libexec" => "formula.rb", "license" => "formula.rb", "option" => "formula.rb", "patch" => "formula.rb", "resource" => "formula.rb", "revision" => "formula.rb", "sha256" => "formula.rb", "stable" => "formula.rb", "test" => "formula.rb", "testpath" => "formula.rb", "url" => "formula.rb", "uses_from_macos" => "formula.rb", "version" => "formula.rb", "version_scheme" => "formula.rb", "write_env_script" => "extend/pathname.rb", "write_exec_script" => "extend/pathname.rb", "write_jar_script" => "extend/pathname.rb", }.freeze, T::Hash[String, String])
- CASK_COOKBOOK_METHODS =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать эту константу, поскольку она может быть удалена или изменена без предупреждения.
Методы, описанные в docs/Cask-Cookbook.md и сопоставленные с исходными файлами, в которых они определены (относительно Library/Homebrew/). Проверяется с помощью
Homebrew/PublicApiCookbookпо аннотациям@api publicв исходных файлах cask. T.let({ "after_comma" => "cask/dsl/version.rb", "app" => "cask/dsl.rb", "appdir" => "cask/dsl.rb", "arch" => "cask/dsl.rb", "artifact" => "cask/dsl.rb", "auto_updates" => "cask/dsl.rb", "before_comma" => "cask/dsl/version.rb", "binary" => "cask/dsl.rb", "caveats" => "cask/dsl.rb", "chomp" => "cask/dsl/version.rb", "conflicts_with" => "cask/dsl.rb", "container" => "cask/dsl.rb", "csv" => "cask/dsl/version.rb", "depends_on" => "cask/dsl.rb", "deprecate!" => "cask/dsl.rb", "desc" => "cask/dsl.rb", "disable!" => "cask/dsl.rb", "dots_to_hyphens" => "cask/dsl/version.rb", "font" => "cask/dsl.rb", "homepage" => "cask/dsl.rb", "hyphens_to_dots" => "cask/dsl/version.rb", "installer" => "cask/dsl.rb", "language" => "cask/dsl.rb", "livecheck" => "cask/dsl.rb", "major" => "cask/dsl/version.rb", "major_minor" => "cask/dsl/version.rb", "major_minor_patch" => "cask/dsl/version.rb", "manpage" => "cask/dsl.rb", "minor" => "cask/dsl/version.rb", "minor_patch" => "cask/dsl/version.rb", "name" => "cask/dsl.rb", "no_autobump!" => "cask/dsl.rb", "no_dividers" => "cask/dsl/version.rb", "no_dots" => "cask/dsl/version.rb", "no_hyphens" => "cask/dsl/version.rb", "no_underscores" => "cask/dsl/version.rb", "patch" => "cask/dsl/version.rb", "pkg" => "cask/dsl.rb", "postflight" => "cask/dsl.rb", "preflight" => "cask/dsl.rb", "rename" => "cask/dsl.rb", "service" => "cask/dsl.rb", "sha256" => "cask/dsl.rb", "stage_only" => "cask/dsl.rb", "staged_path" => "cask/dsl.rb", "suite" => "cask/dsl.rb", "to_s" => "cask/cask.rb", "token" => "cask/cask.rb", "uninstall" => "cask/dsl.rb", "uninstall_postflight" => "cask/dsl.rb", "uninstall_preflight" => "cask/dsl.rb", "url" => "cask/dsl.rb", "version" => "cask/dsl.rb", "zap" => "cask/dsl.rb", }.freeze, T::Hash[String, String])
Сводка методов класса свернуть
- .homebrew_dir ⇒ String приватный
Возвращает путь к корневому каталогу библиотеки Homebrew (родительскому для rubocops/).
- .methods_with_api_level(source_path, level) ⇒ Set<String> приватный
Возвращает набор имён методов, аннотированных заданным уровнем
@api(например,"internal","private","public") в указанном исходном файле Ruby.
Подробное описание методов класса
.homebrew_dir ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
Возвращает путь к корневому каталогу библиотеки Homebrew (родительскому для rubocops/).
159 160 161 | # File 'rubocops/shared/api_annotation_helper.rb', line 159 def self.homebrew_dir File.("../..", __dir__) end |
.methods_with_api_level(source_path, level) ⇒ Set<String>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
Возвращает набор имён методов, аннотированных заданным уровнем @api (например, "internal", "private", "public") в указанном исходном файле Ruby.
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | # File 'rubocops/shared/api_annotation_helper.rb', line 126 def self.methods_with_api_level(source_path, level) @api_method_cache = T.let(@api_method_cache, T.nilable(T::Hash[String, T::Set[String]])) @api_method_cache ||= {} cache_key = "#{source_path}:#{level}" return @api_method_cache.fetch(cache_key) if @api_method_cache.key?(cache_key) methods = T.let(Set.new, T::Set[String]) return methods unless File.exist?(source_path) lines = File.readlines(source_path) lines.each_with_index do |line, idx| next if line.strip != "# @api #{level}" # Scan forward up to 5 lines for a def, attr_reader, or delegate (1..5).each do |offset| target_line = lines[idx + offset]&.strip break if target_line.blank? m = target_line.match(/\A(?:def\s+(?:self\.)?|attr_reader\s+:|attr_accessor\s+:)(\w+[!?]?)/) || target_line.match(/\Adelegate\s+(\w+[!?]?):/) if m methods.add(m[1].to_s) break end end end @api_method_cache[cache_key] = methods.freeze methods end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/RuboCop/Cop/ApiAnnotationHelper.html