diff --git a/analyzer/codechecker_analyzer/analyzers/cppcheck/analyzer.py b/analyzer/codechecker_analyzer/analyzers/cppcheck/analyzer.py index 9c33686da5..fe57f069a1 100644 --- a/analyzer/codechecker_analyzer/analyzers/cppcheck/analyzer.py +++ b/analyzer/codechecker_analyzer/analyzers/cppcheck/analyzer.py @@ -64,7 +64,7 @@ def parse_version(cppcheck_output): """ Parse cppcheck version output and return the version number. """ - version_re = re.compile(r'^Cppcheck (?P[\d\.]+)') + version_re = re.compile(r'^Cppcheck(.*?)(?P[\d\.]+)') match = version_re.match(cppcheck_output) if match: return match.group('version') diff --git a/analyzer/tests/unit/test_cppcheck_version_parsing.py b/analyzer/tests/unit/test_cppcheck_version_parsing.py new file mode 100644 index 0000000000..d40647d580 --- /dev/null +++ b/analyzer/tests/unit/test_cppcheck_version_parsing.py @@ -0,0 +1,25 @@ +# ------------------------------------------------------------------------- +# +# Part of the CodeChecker project, under the Apache License v2.0 with +# LLVM Exceptions. See LICENSE for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +# ------------------------------------------------------------------------- + +""" Test Cppcheck version parsing. """ + + +import unittest + +from codechecker_analyzer.analyzers.cppcheck.analyzer import parse_version + + +class CppcheckVersionTest(unittest.TestCase): + """ + Test the parsing of various possible version strings, which cppcheck + binaries can produce. + """ + + def test_cppcheck_version(self): + self.assertEqual(parse_version('Cppcheck 1.2.3'), '1.2.3') + self.assertEqual(parse_version('Cppcheck Premium 1.2.3'), '1.2.3')