aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/rubocops
diff options
context:
space:
mode:
authorGautham Goli2017-12-02 17:03:11 +0530
committerGautham Goli2017-12-02 17:03:11 +0530
commitfb85ed01bc170e389dd62a2a2872d962b7dad5a6 (patch)
tree33820c346a9f913507c8ceab4fefcbdd3a35ae70 /Library/Homebrew/rubocops
parent1b289226284d87c846825563624661ced315b11a (diff)
downloadbrew-fb85ed01bc170e389dd62a2a2872d962b7dad5a6.tar.bz2
lines_cop: Convert ARGV audit to negative look ahead
Diffstat (limited to 'Library/Homebrew/rubocops')
-rw-r--r--Library/Homebrew/rubocops/extend/formula_cop.rb16
-rw-r--r--Library/Homebrew/rubocops/lines_cop.rb7
2 files changed, 19 insertions, 4 deletions
diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb
index 1e7160bbd..9d16db36d 100644
--- a/Library/Homebrew/rubocops/extend/formula_cop.rb
+++ b/Library/Homebrew/rubocops/extend/formula_cop.rb
@@ -127,6 +127,22 @@ module RuboCop
end
end
+ # Matches receiver part of method,
+ # EX: to match `ARGV.<whatever>()`
+ # call `find_instance_call(node, "ARGV")`
+ # yields to a block with parent node of receiver
+ def find_instance_call(node, name)
+ node.each_descendant(:send) do |method_node|
+ next if method_node.receiver.nil?
+ next if method_node.receiver.const_name != name &&
+ method_node.receiver.method_name != name
+ @offense_source_range = method_node.receiver.source_range
+ @offensive_node = method_node.receiver
+ return true unless block_given?
+ yield method_node
+ end
+ end
+
# Returns nil if does not depend on dependency_name
# args: node - dependency_name - dependency's name
def depends_on?(dependency_name, *types)
diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb
index d9e40c2de..fdc31078f 100644
--- a/Library/Homebrew/rubocops/lines_cop.rb
+++ b/Library/Homebrew/rubocops/lines_cop.rb
@@ -162,10 +162,9 @@ module RuboCop
end
end
- [:debug?, :verbose?, :value].each do |method_name|
- find_instance_method_call(body_node, "ARGV", method_name) do
- problem "Use build instead of ARGV to check options"
- end
+ find_instance_call(body_node, "ARGV") do |method_node|
+ next if [:debug?, :verbose?, :value].index(method_node.method_name)
+ problem "Use build instead of ARGV to check options"
end
find_instance_method_call(body_node, :man, :+) do |method|