diff options
Diffstat (limited to 'Library/Homebrew/rubocops')
| -rw-r--r-- | Library/Homebrew/rubocops/checksum_cop.rb | 55 | ||||
| -rw-r--r-- | Library/Homebrew/rubocops/extend/formula_cop.rb | 11 |
2 files changed, 3 insertions, 63 deletions
diff --git a/Library/Homebrew/rubocops/checksum_cop.rb b/Library/Homebrew/rubocops/checksum_cop.rb deleted file mode 100644 index 98e6a8bd3..000000000 --- a/Library/Homebrew/rubocops/checksum_cop.rb +++ /dev/null @@ -1,55 +0,0 @@ -require_relative "./extend/formula_cop" - -module RuboCop - module Cop - module FormulaAudit - class Checksum < FormulaCop - def audit_formula(_node, _class_node, _parent_class_node, body_node) - %w[Stable Devel HEAD].each do |name| - next unless spec_node = find_block(body_node, name.downcase.to_sym) - _, _, spec_body = *spec_node - audit_checksums(spec_body, name) - resource_blocks = find_all_blocks(spec_body, :resource) - resource_blocks.each do |rb| - _, _, resource_body = *rb - audit_checksums(resource_body, name, string_content(parameters(rb).first)) - end - end - end - - def audit_checksums(node, spec, resource_name = nil) - msg_prefix = if resource_name - "#{spec} resource \"#{resource_name}\": " - else - "#{spec}: " - end - if find_node_method_by_name(node, :md5) - problem "#{msg_prefix}MD5 checksums are deprecated, please use SHA256" - end - - if find_node_method_by_name(node, :sha1) - problem "#{msg_prefix}SHA1 checksums are deprecated, please use SHA256" - end - - checksum_node = find_node_method_by_name(node, :sha256) - checksum = parameters(checksum_node).first - if string_content(checksum).size.zero? - problem "#{msg_prefix}sha256 is empty" - return - end - - if string_content(checksum).size != 64 && regex_match_group(checksum, /^\w*$/) - problem "#{msg_prefix}sha256 should be 64 characters" - end - - unless regex_match_group(checksum, /^[a-f0-9]+$/i) - problem "#{msg_prefix}sha256 contains invalid characters" - end - - return unless regex_match_group(checksum, /^[a-f0-9]+$/) - problem "#{msg_prefix}sha256 should be lowercase" - end - end - end - end -end diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb index b6fa45d3f..75a3e72d5 100644 --- a/Library/Homebrew/rubocops/extend/formula_cop.rb +++ b/Library/Homebrew/rubocops/extend/formula_cop.rb @@ -167,18 +167,12 @@ module RuboCop nil end - # Returns an array of block nodes of depth first order named block_name below node + # Returns an array of block nodes named block_name inside node def find_blocks(node, block_name) return if node.nil? node.each_child_node(:block).select { |block_node| block_name == block_node.method_name } end - # Returns an array of block nodes of any depth below node in AST - def find_all_blocks(node, block_name) - return if node.nil? - node.each_descendant(:block).select { |block_node| block_name == block_node.method_name } - end - # Returns a method definition node with method_name def find_method_def(node, method_name) return if node.nil? @@ -256,7 +250,8 @@ module RuboCop # Returns the array of arguments of the method_node def parameters(method_node) - method_node.method_args if method_node.send_type? || method_node.block_type? + return unless method_node.send_type? + method_node.method_args end # Returns true if the given parameters are present in method call |
