From 43247f4f23db516a47f078042ddefc1d0f7fa496 Mon Sep 17 00:00:00 2001 From: Luca Fancellu Date: Thu, 20 Jul 2023 10:03:20 +0200 Subject: [PATCH] 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: 1d7c45f895b6 ("xen/misra: diff-report.py: add report patching feature") Signed-off-by: Luca Fancellu Acked-by: Stefano Stabellini --- .../xen_analysis/diff_tool/unified_format_parser.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py b/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py index 8b3fbc318d..6c506caeaf 100644 --- a/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py +++ b/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py @@ -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 -- 2.39.5