From 6c66108c12df9a7f95dee8b4a81d59ad8b6637ef Mon Sep 17 00:00:00 2001 From: "ana.alves" Date: Wed, 28 Jan 2026 16:54:43 -0300 Subject: [PATCH] fix: corrige falso positivo P1 causado por substring matching no grep --- entrypoint.sh | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index d4b74db..4abe118 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -106,21 +106,25 @@ build_changed_lines_cache() { [ ! -s "$ALL_DIFF" ] && return awk ' + BEGIN { file = ""; line_num = 0 } /^diff --git/ { file = $3 sub(/^a\//, "", file) - print file >> "'"$CHANGED_FILES_CACHE"'" + if (file != "") print file >> "'"$CHANGED_FILES_CACHE"'" + line_num = 0 } /^@@/ { - match($0, /\+([0-9]+)(,([0-9]+))?/) - range = substr($0, RSTART, RLENGTH) - sub(/^\+/, "", range) - split(range, parts, ",") - start = parts[1] - count = parts[2] - if (count == "") count = 1 - for (i = start; i < start + count; i++) - print file ":" i >> "'"$CHANGED_LINES_CACHE"'" + if (match($0, /\+([0-9]+)/)) { + line_num = substr($0, RSTART+1, RLENGTH-1) + line_num = int(line_num) + } + next + } + /^\+/ && !/^\+\+\+/ { + if (file != "" && line_num > 0) { + print file ":" line_num >> "'"$CHANGED_LINES_CACHE"'" + line_num++ + } } ' "$ALL_DIFF" } @@ -130,11 +134,11 @@ is_changed() { line="$2" if [ -z "$line" ]; then - [ -f "$CHANGED_FILES_CACHE" ] && grep -qF "$file" "$CHANGED_FILES_CACHE" && return 0 + [ -f "$CHANGED_FILES_CACHE" ] && grep -qxF "$file" "$CHANGED_FILES_CACHE" && return 0 return 1 fi - [ -f "$CHANGED_LINES_CACHE" ] && grep -qF "${file}:${line}" "$CHANGED_LINES_CACHE" && return 0 + [ -f "$CHANGED_LINES_CACHE" ] && grep -qxF "${file}:${line}" "$CHANGED_LINES_CACHE" && return 0 return 1 } @@ -195,11 +199,7 @@ check_blocking_rules() { [ -z "$file" ] && continue if [ -z "$line" ]; then - if is_changed "$file" ""; then - echo "🚨 BLOQUEADO: Violação P1 a nível de arquivo encontrada no arquivo alterado: $file" - found_blocking=1 - break - fi + continue else if is_changed "$file" "$line"; then echo "🚨 BLOQUEADO: Violação P1 encontrada na linha alterada: $file:$line"