diff options
| author | Gautham Goli | 2017-08-04 01:18:00 +0530 | 
|---|---|---|
| committer | Gautham Goli | 2017-08-06 18:36:09 +0530 | 
| commit | b8f811cca669e9e20fb6e8a8ac8d44f0b8761f5f (patch) | |
| tree | 26532370b24f015f419c5db8a6f01384e0715bbe /Library/Homebrew/rubocops/extend/formula_cop.rb | |
| parent | 3edae73cd90cc9e6233718bfb48c5cc075aa0f36 (diff) | |
| download | brew-b8f811cca669e9e20fb6e8a8ac8d44f0b8761f5f.tar.bz2 | |
audit: Port rules from line_problems to rubocop part 3
Diffstat (limited to 'Library/Homebrew/rubocops/extend/formula_cop.rb')
| -rw-r--r-- | Library/Homebrew/rubocops/extend/formula_cop.rb | 22 | 
1 files changed, 14 insertions, 8 deletions
diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb index f8864538a..991551585 100644 --- a/Library/Homebrew/rubocops/extend/formula_cop.rb +++ b/Library/Homebrew/rubocops/extend/formula_cop.rb @@ -3,12 +3,13 @@ require "parser/current"  module RuboCop    module Cop      class FormulaCop < Cop +      attr_accessor :file_path        @registry = Cop.registry        # This method is called by RuboCop and is the main entry point        def on_class(node) -        file_path = processed_source.buffer.name -        return unless file_path_allowed?(file_path) +        @file_path = processed_source.buffer.name +        return unless file_path_allowed?          return unless formula_class?(node)          return unless respond_to?(:audit_formula)          class_node, parent_class_node, @body = *node @@ -99,8 +100,7 @@ module RuboCop        def find_method_with_args(node, method_name, *args)          methods = find_every_method_call_by_name(node, method_name)          methods.each do |method| -          next unless parameters_passed?(method, *args) -          yield method +          yield method if parameters_passed?(method, *args)          end        end @@ -111,7 +111,7 @@ module RuboCop        def find_instance_method_call(node, instance, method_name)          methods = find_every_method_call_by_name(node, method_name)          methods.each do |method| -          next unless method.receiver && method.receiver.const_name == instance +          next unless method.receiver && (method.receiver.const_name == instance || method.receiver.method_name == instance)            @offense_source_range = method.source_range            @offensive_node = method            yield method @@ -400,6 +400,12 @@ module RuboCop          method_name(component_node) if component_node.def_type?        end +      # Returns the formula tap +      def formula_tap +        return unless match_obj = @file_path.match(%r{/(homebrew-\w+)/}) +        match_obj[1] +      end +        def problem(msg)          add_offense(@offensive_node, @offense_source_range, msg)        end @@ -411,11 +417,11 @@ module RuboCop          class_node && string_content(class_node) == "Formula"        end -      def file_path_allowed?(file_path) +      def file_path_allowed?          paths_to_exclude = [%r{/Library/Homebrew/compat/},                              %r{/Library/Homebrew/test/}] -        return true if file_path.nil? # file_path is nil when source is directly passed to the cop eg., in specs -        file_path !~ Regexp.union(paths_to_exclude) +        return true if @file_path.nil? # file_path is nil when source is directly passed to the cop eg., in specs +        @file_path !~ Regexp.union(paths_to_exclude)        end      end    end  | 
