From 413fe786bcab802606f4120b11858795bd597eb7 Mon Sep 17 00:00:00 2001 From: Garrett Blehm Date: Thu, 14 Nov 2024 11:09:33 -0600 Subject: [PATCH 1/2] SafetyAssuredComment: Use .last to match the closest comment to the node Signed-off-by: Garrett Blehm --- lib/rubocop/cop/obsession/rails/safety_assured_comment.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb b/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb index 3ef15e0..9b2c679 100644 --- a/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb +++ b/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb @@ -41,7 +41,7 @@ class SafetyAssuredComment < Base def on_block(node) return if !safety_assured_block?(node) - previous_comment = processed_source.comments_before_line(node.first_line)&.first + previous_comment = processed_source.comments_before_line(node.first_line)&.last if previous_comment.nil? || !previous_comment.text.match?(/^# Safe because( [^ ]+){4}/) add_offense(node) From 49fc0ac8a21e0bb8f804278a9a7b0e01d6bc3bd3 Mon Sep 17 00:00:00 2001 From: Jerome Dalbert Date: Thu, 14 Nov 2024 11:54:01 -0800 Subject: [PATCH 2/2] Only match comments for the current block node Note: comments can span multiple lines, so check against all lines. --- lib/rubocop/cop/obsession/rails/safety_assured_comment.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb b/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb index 9b2c679..9015f18 100644 --- a/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb +++ b/lib/rubocop/cop/obsession/rails/safety_assured_comment.rb @@ -41,11 +41,9 @@ class SafetyAssuredComment < Base def on_block(node) return if !safety_assured_block?(node) - previous_comment = processed_source.comments_before_line(node.first_line)&.last + comment = processed_source.ast_with_comments[node].map(&:text).join("\n") - if previous_comment.nil? || !previous_comment.text.match?(/^# Safe because( [^ ]+){4}/) - add_offense(node) - end + add_offense(node) if !comment.match?(/^# Safe because( [^ ]+){4}/) end end end