From be0f418d50fd4c9c76687aeadf25e3152283143d Mon Sep 17 00:00:00 2001 From: Ranabir Chakraborty Date: Mon, 19 Aug 2024 22:25:47 +0530 Subject: [PATCH] edit --- .github/workflows/check_logging.yml | 18 +++++++++ check_logging.sh | 61 +++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 .github/workflows/check_logging.yml create mode 100644 check_logging.sh diff --git a/.github/workflows/check_logging.yml b/.github/workflows/check_logging.yml new file mode 100644 index 000000000000..5f6bd16052c7 --- /dev/null +++ b/.github/workflows/check_logging.yml @@ -0,0 +1,18 @@ +name: Check non-i18n logging + +on: + push: + branches: + - 'test-1' + +jobs: + check-logging: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Run logging check + run: sh check_logging.sh diff --git a/check_logging.sh b/check_logging.sh new file mode 100644 index 000000000000..ac3338bed20f --- /dev/null +++ b/check_logging.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +DIFF=$(git diff origin/main...HEAD || true) + +if [ -z "$DIFF" ]; then + echo "No diff found to analyze." + exit 0 +fi + +# Define patterns as a single string instead of an array +PATTERNS=".info( .infof( .warn( .warnf( .error( .errorf( .fatal( .fatalf( System.out.print System.err.print .printStackTrace)" + +ERRORS="" +CURRENT_FILE="" + +# Use echo instead of printf for pattern matching +echo "$DIFF" | while IFS= read -r line; do + # Update the current file if a new diff starts + case "$line" in + diff\ --git\ a/*\ b/*) + CURRENT_FILE=$(echo "$line" | awk '{print $3}' | sed 's/^a\///') + ;; + esac + + case "$line" in + +[^+]*) + # Ignore lines in the test directories + case "$CURRENT_FILE" in + *src/test/*|*testsuite/*|*check_logging.sh*) + continue + ;; + esac + + # Check for any of the patterns, ensuring "//" doesn't precede them + for pattern in $PATTERNS; do + case "$line" in + *"$pattern"*) + # Ensure the pattern is not commented out with "//" + case "$line" in + *"//"*) + ;; + *) + # Capture the error line and its context + ERRORS="$ERRORS$line\nFile: $CURRENT_FILE\n\n" + ;; + esac + ;; + esac + done + ;; + esac +done + +if [ -n "$ERRORS" ]; then + echo "Logging statements found that should be internationalized or converted to a lower log level:\n" + echo "$ERRORS" + exit 1 +else + echo "No problematic logging statements found." + exit 0 +fi