xen/misra: diff-report.py: Fix UnifiedFormatParser change line registration

Fix the line number on the registration of a 'remove' change type when
consecutive 'remove' changes are registered.

Currently the algorithm registers consecutive 'remove' changes at the same
line it encounter the first one, 'add' changes type are not affected by the
bug.

Fixes: 1d7c45f895 ("xen/misra: diff-report.py: add report patching feature")
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Luca Fancellu authored and Jan Beulich committed 2023-07-20 10:03:20 +02:00
1 parent b1c16800e5
commit 43247f4f23
1 file changed
+6 -1
@@ -144,6 +144,7 @@ class UnifiedFormatParser(object):
file_linenum = 0
hunk_a_linemax = 0
hunk_b_linemax = 0
consecutive_remove = 0
diff_elem = None
parse_state = ParserState.FIND_DIFF_HEADER
ChangeMode = ChangeSet.ChangeMode
@@ -210,14 +211,18 @@ class UnifiedFormatParser(object):
if (hunk_b_linemax > 0) and line.startswith("+"):
diff_elem.add_change(file_linenum, ChangeType.ADD)
hunk_b_linemax -= 1
consecutive_remove = 0
elif (hunk_a_linemax > 0) and line.startswith("-"):
diff_elem.add_change(file_linenum, ChangeType.REMOVE)
diff_elem.add_change(file_linenum + consecutive_remove,
ChangeType.REMOVE)
hunk_a_linemax -= 1
file_linenum -= 1
consecutive_remove += 1
elif ((hunk_a_linemax + hunk_b_linemax) > 0) and \
line.startswith(" "):
hunk_a_linemax -= 1 if (hunk_a_linemax > 0) else 0
hunk_b_linemax -= 1 if (hunk_b_linemax > 0) else 0
consecutive_remove = 0
if (hunk_a_linemax + hunk_b_linemax) <= 0:
parse_state = ParserState.FIND_HUNK_OR_DIFF_HEADER
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.