From a24158b1870d20e8f13b380a5e632c270a3427ce Mon Sep 17 00:00:00 2001 From: x032205 Date: Mon, 9 Jun 2025 12:28:11 -0400 Subject: [PATCH] Remove false detection for relative paths ("../../path") and other minor improvements --- .github/workflows/check-non-re2-regex.yml | 32 ++++++++++++----------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/.github/workflows/check-non-re2-regex.yml b/.github/workflows/check-non-re2-regex.yml index d4911e00f..4c517131e 100644 --- a/.github/workflows/check-non-re2-regex.yml +++ b/.github/workflows/check-non-re2-regex.yml @@ -1,5 +1,4 @@ name: Detect Non-RE2 Regex - on: pull_request: types: [opened, synchronize] @@ -19,6 +18,7 @@ jobs: - name: Scan backend diff for non-RE2 regex run: | + # Extract only added lines (excluding file headers) grep '^+' diff.txt | grep -v '^+++' | sed 's/^\+//' > added_lines.txt if [ ! -s added_lines.txt ]; then @@ -26,26 +26,28 @@ jobs: exit 0 fi - regex_usage_pattern='(^|[^A-Za-z0-9_])(\/[^\/]+\/[gimsuy]*|new RegExp\()' + regex_usage_pattern='(^|[^A-Za-z0-9_"'"'"'`])(\/[^\/\n]+\/[gimsuyv]*|new RegExp\()' - # Find all added lines that contain the regex_usage_pattern. - grep -E "$regex_usage_pattern" added_lines.txt > potential_violations.txt - - if [ -s potential_violations.txt ]; then # If any lines match the regex usage pattern - # Filter out lines that also contain the string 'new RE2' - grep -v 'new RE2' potential_violations.txt > actual_violations.txt - - if [ -s actual_violations.txt ]; then # If there are lines left after filtering out 'new RE2' - echo "🚨 ERROR: Found forbidden regex pattern (raw literal '/.../' or 'new RegExp(...)') in added/modified backend code." - echo "Please use 'new RE2(...)' for all regular expressions in the backend." + # Find all added lines that contain regex patterns + if grep -E "$regex_usage_pattern" added_lines.txt > potential_violations.txt 2>/dev/null; then + # Filter out lines that contain 'new RE2' (allowing for whitespace variations) + if grep -v -E 'new\s+RE2\s*\(' potential_violations.txt > actual_violations.txt 2>/dev/null && [ -s actual_violations.txt ]; then + echo "🚨 ERROR: Found forbidden regex pattern in added/modified backend code." + echo "" + echo "The following lines use raw regex literals (/.../) or new RegExp(...):" + echo "Please replace with 'new RE2(...)' for RE2 compatibility." + echo "" echo "Offending lines:" cat actual_violations.txt exit 1 else - # All lines that matched regex_usage_pattern also contained 'new RE2'. echo "✅ All identified regex usages are correctly using 'new RE2(...)'." fi else - # No lines matched the regex_usage_pattern at all. - echo "✅ No raw regex literals ('/.../') or 'new RegExp(...)' usage found in added/modified backend lines." + echo "✅ No regex patterns found in added/modified backend lines." fi + + - name: Cleanup temporary files + if: always() + run: | + rm -f diff.txt added_lines.txt potential_violations.txt actual_violations.txt