Message ID | 20230130110132.2774782-2-luca.fancellu@arm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | Cppcheck MISRA analysis improvements | expand |
Hi Luca, On 30/01/2023 12:01, Luca Fancellu wrote: > > > Sort alphabetically cppcheck report entries when producing the text > report, this will help comparing different reports and will group > together findings from the same file. > > The sort operation is performed with two criteria, the first one is > sorting by misra rule, the second one is sorting by file. > > Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> > --- > Changes in v2: > - Sort with two criteria, first misra rule, second filename > (Michal, Jan) > --- > --- > xen/scripts/xen_analysis/cppcheck_report_utils.py | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/xen/scripts/xen_analysis/cppcheck_report_utils.py b/xen/scripts/xen_analysis/cppcheck_report_utils.py > index 02440aefdfec..0b6cc72b9ac1 100644 > --- a/xen/scripts/xen_analysis/cppcheck_report_utils.py > +++ b/xen/scripts/xen_analysis/cppcheck_report_utils.py > @@ -104,6 +104,13 @@ def cppcheck_merge_txt_fragments(fragments_list, out_txt_file, strip_paths): > for path in strip_paths: > text_report_content[i] = text_report_content[i].replace( > path + "/", "") > + # Split by : separator > + text_report_content[i] = text_report_content[i].split(":") This is where the for loop body ends so it should be separated from the rest by an empty line. > + # sort alphabetically for second field (misra rule) and as second The second field is not necessary a "misra rule". It is just an error id (e.g. unreadVariable). However this is just a python script and we use cppcheck mostly for MISRA so I do not object. > + # criteria for the first field (file name) > + text_report_content.sort(key = lambda x: (x[1], x[0])) > + # merge back with : separator > + text_report_content = [":".join(x) for x in text_report_content] > # Write the final text report > outfile.writelines(text_report_content) > except OSError as e: > -- > 2.25.1 > With the first remark fixed (e.g. on commit), Reviewed-by: Michal Orzel <michal.orzel@amd.com> ~Michal
> On 30 Jan 2023, at 11:22, Michal Orzel <michal.orzel@amd.com> wrote: > > Hi Luca, > > On 30/01/2023 12:01, Luca Fancellu wrote: >> >> >> Sort alphabetically cppcheck report entries when producing the text >> report, this will help comparing different reports and will group >> together findings from the same file. >> >> The sort operation is performed with two criteria, the first one is >> sorting by misra rule, the second one is sorting by file. >> >> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> >> --- >> Changes in v2: >> - Sort with two criteria, first misra rule, second filename >> (Michal, Jan) >> --- >> --- >> xen/scripts/xen_analysis/cppcheck_report_utils.py | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/xen/scripts/xen_analysis/cppcheck_report_utils.py b/xen/scripts/xen_analysis/cppcheck_report_utils.py >> index 02440aefdfec..0b6cc72b9ac1 100644 >> --- a/xen/scripts/xen_analysis/cppcheck_report_utils.py >> +++ b/xen/scripts/xen_analysis/cppcheck_report_utils.py >> @@ -104,6 +104,13 @@ def cppcheck_merge_txt_fragments(fragments_list, out_txt_file, strip_paths): >> for path in strip_paths: >> text_report_content[i] = text_report_content[i].replace( >> path + "/", "") >> + # Split by : separator >> + text_report_content[i] = text_report_content[i].split(":") > This is where the for loop body ends so it should be separated from the rest by an empty line. > >> + # sort alphabetically for second field (misra rule) and as second > The second field is not necessary a "misra rule". It is just an error id (e.g. unreadVariable). > However this is just a python script and we use cppcheck mostly for MISRA so I do not object. Yes you are right, if the committer is willing to change it on commit I’ll appreciate, otherwise I can fix it and respin the patch. > >> + # criteria for the first field (file name) >> + text_report_content.sort(key = lambda x: (x[1], x[0])) >> + # merge back with : separator >> + text_report_content = [":".join(x) for x in text_report_content] >> # Write the final text report >> outfile.writelines(text_report_content) >> except OSError as e: >> -- >> 2.25.1 >> > > With the first remark fixed (e.g. on commit), > Reviewed-by: Michal Orzel <michal.orzel@amd.com> Thank you for your review > > ~Michal
On Mon, 30 Jan 2023, Luca Fancellu wrote: > Sort alphabetically cppcheck report entries when producing the text > report, this will help comparing different reports and will group > together findings from the same file. > > The sort operation is performed with two criteria, the first one is > sorting by misra rule, the second one is sorting by file. > > Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Changes in v2: > - Sort with two criteria, first misra rule, second filename > (Michal, Jan) > --- > --- > xen/scripts/xen_analysis/cppcheck_report_utils.py | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/xen/scripts/xen_analysis/cppcheck_report_utils.py b/xen/scripts/xen_analysis/cppcheck_report_utils.py > index 02440aefdfec..0b6cc72b9ac1 100644 > --- a/xen/scripts/xen_analysis/cppcheck_report_utils.py > +++ b/xen/scripts/xen_analysis/cppcheck_report_utils.py > @@ -104,6 +104,13 @@ def cppcheck_merge_txt_fragments(fragments_list, out_txt_file, strip_paths): > for path in strip_paths: > text_report_content[i] = text_report_content[i].replace( > path + "/", "") > + # Split by : separator > + text_report_content[i] = text_report_content[i].split(":") > + # sort alphabetically for second field (misra rule) and as second > + # criteria for the first field (file name) > + text_report_content.sort(key = lambda x: (x[1], x[0])) > + # merge back with : separator > + text_report_content = [":".join(x) for x in text_report_content] > # Write the final text report > outfile.writelines(text_report_content) > except OSError as e: > -- > 2.25.1 >
diff --git a/xen/scripts/xen_analysis/cppcheck_report_utils.py b/xen/scripts/xen_analysis/cppcheck_report_utils.py index 02440aefdfec..0b6cc72b9ac1 100644 --- a/xen/scripts/xen_analysis/cppcheck_report_utils.py +++ b/xen/scripts/xen_analysis/cppcheck_report_utils.py @@ -104,6 +104,13 @@ def cppcheck_merge_txt_fragments(fragments_list, out_txt_file, strip_paths): for path in strip_paths: text_report_content[i] = text_report_content[i].replace( path + "/", "") + # Split by : separator + text_report_content[i] = text_report_content[i].split(":") + # sort alphabetically for second field (misra rule) and as second + # criteria for the first field (file name) + text_report_content.sort(key = lambda x: (x[1], x[0])) + # merge back with : separator + text_report_content = [":".join(x) for x in text_report_content] # Write the final text report outfile.writelines(text_report_content) except OSError as e:
Sort alphabetically cppcheck report entries when producing the text report, this will help comparing different reports and will group together findings from the same file. The sort operation is performed with two criteria, the first one is sorting by misra rule, the second one is sorting by file. Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> --- Changes in v2: - Sort with two criteria, first misra rule, second filename (Michal, Jan) --- --- xen/scripts/xen_analysis/cppcheck_report_utils.py | 7 +++++++ 1 file changed, 7 insertions(+)