aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/rubocops
diff options
context:
space:
mode:
authorGautham Goli2017-08-07 14:08:22 +0530
committerGautham Goli2017-08-07 14:08:22 +0530
commita92e1eda27d732e0de75592d8fb52e93bb5e0d33 (patch)
treede50e84d109825fbeb55517d1d50f9a7294374ee /Library/Homebrew/rubocops
parentd9c81901c3a7f6ed112a99e9067d78fb9a2c3293 (diff)
downloadbrew-a92e1eda27d732e0de75592d8fb52e93bb5e0d33.tar.bz2
audit: Port rules from line_problems to rubocop part 4(WIP)
Diffstat (limited to 'Library/Homebrew/rubocops')
-rw-r--r--Library/Homebrew/rubocops/lines_cop.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb
index 7bf9e6056..338a3256a 100644
--- a/Library/Homebrew/rubocops/lines_cop.rb
+++ b/Library/Homebrew/rubocops/lines_cop.rb
@@ -1,3 +1,4 @@
+require 'FileUtils'
require_relative "./extend/formula_cop"
module RuboCop
@@ -123,6 +124,37 @@ module RuboCop
find_instance_method_call(body_node, "ENV", :x11) do
problem 'Use "depends_on :x11" instead of "ENV.x11"'
end
+
+ find_every_method_call_by_name(body_node, :assert).each do |m|
+ if method_called?(m, :include?) && !method_called?(m, :!)
+ problem "Use `assert_match` instead of `assert ...include?`"
+ end
+ end
+
+ find_every_method_call_by_name(body_node, :depends_on).each do |m|
+ next unless method_called?(m, :new)
+ problem "`depends_on` can take requirement classes instead of instances"
+ end
+
+ os = [:leopard?, :snow_leopard?, :lion?, :mountain_lion?]
+ os.each do |version|
+ find_instance_method_call(body_node, :MacOS, version) do |m|
+ problem "\"#{m.source}\" is deprecated, use a comparison to MacOS.version instead"
+ end
+ end
+
+ dirPattern(body_node) do |m|
+ next unless m =~ /\[("[^\*{},]+")\]/
+ problem "Dir(#{Regexp.last_match(1)}) is unnecessary; just use #{Regexp.last_match(1)}"
+ end
+
+ fileUtils_methods= FileUtils.singleton_methods(false).map { |m| Regexp.escape(m) }.join "|"
+ find_method_with_args(body_node, :system, /fileUtils_methods/) do |m|
+ method = string_content(@offensive_node)
+ problem "Use the `#{method}` Ruby method instead of `#{m.source}`"
+ end
+
+
end
# This is Pattern Matching method for AST
@@ -131,7 +163,16 @@ module RuboCop
def_node_search :languageNode?, <<-PATTERN
(const (const nil :Language) :Node)
PATTERN
+
+ def_node_search :dirPattern, <<-PATTERN
+ (send (const nil :Dir) :[] (str $_))
+ PATTERN
end
end
end
end
+
+# Strict rules ported early
+# find_method_with_args(@processed_source.ast, :require, "formula") do |m|
+# problem "#{m.source} is now unnecessary"
+# end