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 <luca.fancellu@arm.com>
---
.../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 8b3fbc318df7..6c506caeafce 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.34.1
On Tue, 18 Jul 2023, Luca Fancellu wrote: > 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 <luca.fancellu@arm.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org> > --- > .../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 8b3fbc318df7..6c506caeafce 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.34.1 >
© 2016 - 2024 Red Hat, Inc.