From e3e13c45c7cf13c82f6fc62fa90dbf6b344505f7 Mon Sep 17 00:00:00 2001 From: vrouvrea Date: Wed, 1 Apr 2015 08:54:22 +0000 Subject: Add cpplint converter to cppcheck xml format git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/xunit@527 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 04682ff657c9a93e89d99b49a940de7f48f2afa5 --- scripts/cpplint_to_cppcheckxml.py | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 scripts/cpplint_to_cppcheckxml.py (limited to 'scripts') diff --git a/scripts/cpplint_to_cppcheckxml.py b/scripts/cpplint_to_cppcheckxml.py new file mode 100644 index 00000000..e3a2d2de --- /dev/null +++ b/scripts/cpplint_to_cppcheckxml.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +# Convert output from Google's cpplint.py to the cppcheck XML format for +# consumption by the Jenkins cppcheck plugin. + +# Reads from stdin and writes to stderr (to mimic cppcheck) + + +import sys +import re + +def cpplint_score_to_cppcheck_severity(score): + # I'm making this up + if score == 1: + return 'style' + elif score == 2: + return 'style' + elif score == 3: + return 'warning' + elif score == 4: + return 'warning' + elif score == 5: + return 'error' + + +def parse(): + # TODO: do this properly, using the xml module. + # Write header + sys.stderr.write('''\n''') + sys.stderr.write('''\n''') + + # Do line-by-line conversion + r = re.compile('([^:]*):([0-9]*): ([^\[]*)\[([^\]]*)\] \[([0-9]*)\].*') + + for l in sys.stdin.readlines(): + m = r.match(l.strip()) + if not m: + continue + g = m.groups() + if len(g) != 5: + continue + fname, lineno, msg, label, score = g + severity = cpplint_score_to_cppcheck_severity(int(score)) + sys.stderr.write('''\n'''%(fname, lineno, label, severity, msg)) + + # Write footer + sys.stderr.write('''\n''') + + +if __name__ == '__main__': + parse() + -- cgit v1.2.3