Use tuple comparison to check the cppcheck version.
Take the occasion to harden the regex, escaping the dots so that we
check for them instead of generic characters.
Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
xen/scripts/xen_analysis/cppcheck_analysis.py | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/xen/scripts/xen_analysis/cppcheck_analysis.py b/xen/scripts/xen_analysis/cppcheck_analysis.py
index c8abbe0fca79..8dc45e653b79 100644
--- a/xen/scripts/xen_analysis/cppcheck_analysis.py
+++ b/xen/scripts/xen_analysis/cppcheck_analysis.py
@@ -157,7 +157,7 @@ def generate_cppcheck_deps():
"Error occured retrieving cppcheck version:\n{}\n\n{}"
)
- version_regex = re.search('^Cppcheck (\d+).(\d+)(?:.\d+)?$',
+ version_regex = re.search('^Cppcheck (\d+)\.(\d+)(?:\.\d+)?$',
invoke_cppcheck, flags=re.M)
# Currently, only cppcheck version >= 2.7 is supported, but version 2.8 is
# known to be broken, please refer to docs/misra/cppcheck.txt
@@ -166,15 +166,10 @@ def generate_cppcheck_deps():
"Can't find cppcheck version or version not identified: "
"{}".format(invoke_cppcheck)
)
- major = int(version_regex.group(1))
- minor = int(version_regex.group(2))
- if major < 2 or (major == 2 and minor < 7):
+ version = (int(version_regex.group(1)), int(version_regex.group(2)))
+ if version < (2, 7) or version == (2, 8):
raise CppcheckDepsPhaseError(
- "Cppcheck version < 2.7 is not supported"
- )
- if major == 2 and minor == 8:
- raise CppcheckDepsPhaseError(
- "Cppcheck version 2.8 is known to be broken, see the documentation"
+ "Cppcheck version < 2.7 or 2.8 are not supported"
)
# If misra option is selected, append misra addon and generate cppcheck
--
2.34.1
On Fri, 19 May 2023, Luca Fancellu wrote: > Use tuple comparison to check the cppcheck version. > > Take the occasion to harden the regex, escaping the dots so that we > check for them instead of generic characters. > > Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com> > Signed-off-by: Luca Fancellu <luca.fancellu@arm.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org> > --- > xen/scripts/xen_analysis/cppcheck_analysis.py | 13 ++++--------- > 1 file changed, 4 insertions(+), 9 deletions(-) > > diff --git a/xen/scripts/xen_analysis/cppcheck_analysis.py b/xen/scripts/xen_analysis/cppcheck_analysis.py > index c8abbe0fca79..8dc45e653b79 100644 > --- a/xen/scripts/xen_analysis/cppcheck_analysis.py > +++ b/xen/scripts/xen_analysis/cppcheck_analysis.py > @@ -157,7 +157,7 @@ def generate_cppcheck_deps(): > "Error occured retrieving cppcheck version:\n{}\n\n{}" > ) > > - version_regex = re.search('^Cppcheck (\d+).(\d+)(?:.\d+)?$', > + version_regex = re.search('^Cppcheck (\d+)\.(\d+)(?:\.\d+)?$', > invoke_cppcheck, flags=re.M) > # Currently, only cppcheck version >= 2.7 is supported, but version 2.8 is > # known to be broken, please refer to docs/misra/cppcheck.txt > @@ -166,15 +166,10 @@ def generate_cppcheck_deps(): > "Can't find cppcheck version or version not identified: " > "{}".format(invoke_cppcheck) > ) > - major = int(version_regex.group(1)) > - minor = int(version_regex.group(2)) > - if major < 2 or (major == 2 and minor < 7): > + version = (int(version_regex.group(1)), int(version_regex.group(2))) > + if version < (2, 7) or version == (2, 8): > raise CppcheckDepsPhaseError( > - "Cppcheck version < 2.7 is not supported" > - ) > - if major == 2 and minor == 8: > - raise CppcheckDepsPhaseError( > - "Cppcheck version 2.8 is known to be broken, see the documentation" > + "Cppcheck version < 2.7 or 2.8 are not supported" > ) > > # If misra option is selected, append misra addon and generate cppcheck > -- > 2.34.1 >
© 2016 - 2025 Red Hat, Inc.