From e08d4f9f31c934c81fb6deec5df6058027dbcf63 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Thu, 25 Aug 2022 03:41:15 -0400 Subject: [PATCH] Check for loose `MacOS.version` method calls --- .../rubocops/shared/on_system_conditionals_helper.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb b/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb index b87541af2a..f3faed9156 100644 --- a/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb +++ b/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb @@ -135,6 +135,13 @@ module RuboCop if_statement_problem(if_node, "if MacOS.version #{operator} :#{macos_version_option}", on_system_method_string, autocorrect: autocorrect) end + + macos_version_comparison_search(body_node, os_version: macos_version_option) do |method_node| + next if if_node_is_allowed?(method_node, allowed_methods: allowed_methods, allowed_blocks: allowed_blocks) + + offending_node(method_node) + problem "Don't use `#{method_node.source}`, use `on_{macos_version}` blocks instead." + end end end @@ -193,6 +200,10 @@ module RuboCop (send (const (const nil? :Hardware) :CPU) %method) PATTERN + def_node_search :macos_version_comparison_search, <<~PATTERN + (send (send (const nil? :MacOS) :version) {:== :<= :< :>= :> :!=} (sym %os_version)) + PATTERN + def_node_search :if_arch_node_search, <<~PATTERN $(if (send (const (const nil? :Hardware) :CPU) %arch) _ $_) PATTERN