Skip to content

Commit c32dd1d

Browse files
Merge pull request #67 from asaasdev/corrige-falso-positivo-p1-grep-substring
fix: corrige falso positivo P1 causado por substring matching no grep
2 parents 54574fa + 6c66108 commit c32dd1d

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

entrypoint.sh

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,25 @@ build_changed_lines_cache() {
106106
[ ! -s "$ALL_DIFF" ] && return
107107

108108
awk '
109+
BEGIN { file = ""; line_num = 0 }
109110
/^diff --git/ {
110111
file = $3
111112
sub(/^a\//, "", file)
112-
print file >> "'"$CHANGED_FILES_CACHE"'"
113+
if (file != "") print file >> "'"$CHANGED_FILES_CACHE"'"
114+
line_num = 0
113115
}
114116
/^@@/ {
115-
match($0, /\+([0-9]+)(,([0-9]+))?/)
116-
range = substr($0, RSTART, RLENGTH)
117-
sub(/^\+/, "", range)
118-
split(range, parts, ",")
119-
start = parts[1]
120-
count = parts[2]
121-
if (count == "") count = 1
122-
for (i = start; i < start + count; i++)
123-
print file ":" i >> "'"$CHANGED_LINES_CACHE"'"
117+
if (match($0, /\+([0-9]+)/)) {
118+
line_num = substr($0, RSTART+1, RLENGTH-1)
119+
line_num = int(line_num)
120+
}
121+
next
122+
}
123+
/^\+/ && !/^\+\+\+/ {
124+
if (file != "" && line_num > 0) {
125+
print file ":" line_num >> "'"$CHANGED_LINES_CACHE"'"
126+
line_num++
127+
}
124128
}
125129
' "$ALL_DIFF"
126130
}
@@ -130,11 +134,11 @@ is_changed() {
130134
line="$2"
131135

132136
if [ -z "$line" ]; then
133-
[ -f "$CHANGED_FILES_CACHE" ] && grep -qF "$file" "$CHANGED_FILES_CACHE" && return 0
137+
[ -f "$CHANGED_FILES_CACHE" ] && grep -qxF "$file" "$CHANGED_FILES_CACHE" && return 0
134138
return 1
135139
fi
136140

137-
[ -f "$CHANGED_LINES_CACHE" ] && grep -qF "${file}:${line}" "$CHANGED_LINES_CACHE" && return 0
141+
[ -f "$CHANGED_LINES_CACHE" ] && grep -qxF "${file}:${line}" "$CHANGED_LINES_CACHE" && return 0
138142
return 1
139143
}
140144

@@ -195,11 +199,7 @@ check_blocking_rules() {
195199
[ -z "$file" ] && continue
196200

197201
if [ -z "$line" ]; then
198-
if is_changed "$file" ""; then
199-
echo "🚨 BLOQUEADO: Violação P1 a nível de arquivo encontrada no arquivo alterado: $file"
200-
found_blocking=1
201-
break
202-
fi
202+
continue
203203
else
204204
if is_changed "$file" "$line"; then
205205
echo "🚨 BLOQUEADO: Violação P1 encontrada na linha alterada: $file:$line"

0 commit comments

Comments
 (0)