From 89b2118622d4734778f8dcea8e5e852612a16224 Mon Sep 17 00:00:00 2001 From: Henrik Nilsson Date: Fri, 11 Dec 2009 12:39:39 +0100 Subject: [PATCH] index.html page is now complete with a list of files and all errors found. Other changes: * added a stylesheet and made the html design much better. * contains links directly to the line in the source file. --- htmlreport/cppcheck-htmlreport | 155 +++++++++++++++++++++++++++++++-- 1 file changed, 147 insertions(+), 8 deletions(-) diff --git a/htmlreport/cppcheck-htmlreport b/htmlreport/cppcheck-htmlreport index c23540a0a..5bb7f552d 100755 --- a/htmlreport/cppcheck-htmlreport +++ b/htmlreport/cppcheck-htmlreport @@ -5,6 +5,7 @@ import os import os.path from pygments import highlight from pygments.lexers import CppLexer +from pygments.lexers import guess_lexer, guess_lexer_for_filename from pygments.formatters import HtmlFormatter from xml.sax import parse as xml_parse from xml.sax import SAXParseException as XmlParseException @@ -15,16 +16,139 @@ Turns a cppcheck xml file into a browsable html report along with syntax highlighted source code. """ +STYLE_FILE = """ +body.body { + font-family: Arial; + font-size: 13px; + background-color: black; + padding: 0px; + margin: 0px; +} + +#page-header { + clear: both; + width: 900px; + margin: 20px auto 0px auto; + height: 10px; + border-bottom-width: 2px; + border-bottom-style: solid; + border-bottom-color: #aaaaaa; +} + +#page { + width: 860px; + margin: auto; + border-left-width: 2px; + border-left-style: solid; + border-left-color: #aaaaaa; + border-right-width: 2px; + border-right-style: solid; + border-right-color: #aaaaaa; + background-color: White; + padding: 20px; +} + +#page-footer { + clear: both; + width: 900px; + margin: auto; + height: 10px; + border-top-width: 2px; + border-top-style: solid; + border-top-color: #aaaaaa; +} + +#header { + width: 100%; + height: 70px; + background-image: url(logo.png); + background-repeat: no-repeat; + background-position: left top; + + border-bottom-style: solid; + border-bottom-width: thin; + border-bottom-color: #aaaaaa; +} + +#menu { + margin-top: 5px; + text-align: left; + float: left; + width: 100px; + height: 300px; +} + +#menu > a { + margin-left: 10px; + display: block; +} + +#content { + float: left; + width: 720px; + + margin: 5px; + padding: 0px 10px 10px 10px; + + border-left-style: solid; + border-left-width: thin; + border-left-color: #aaaaaa; +} + +#footer { + padding-bottom: 5px; + padding-top: 5px; + border-top-style: solid; + border-top-width: thin; + border-top-color: #aaaaaa; + clear: both; + font-size: 10px; +} + +#footer > div { + float: left; + width: 33%; +} +""" + HTML_HEAD = """ CppCheck - Html report - + + +
+ + +
""" HTML_FOOTER = """ +
+ +   +
+ """ @@ -40,7 +164,7 @@ class CppCheckHandler(XmlContentHandler): self.errors.append( { "file" : attributes["file"], - "line" : attributes["line"], + "line" : int(attributes["line"]), "id" : attributes["id"], "severity" : attributes["severity"], "msg" : attributes["msg"] @@ -104,14 +228,19 @@ if __name__ == '__main__': htmlfile = data["htmlfile"] errors = data["errors"] - stream = file(os.path.join(source_dir, filename)) + lines = [] + for error in errors: + lines.append(error["line"]) + + source_file = os.path.join(source_dir, filename) + stream = file(source_file) content = stream.read() stream.close() - htmlFormatter = HtmlFormatter(linenos=True, style='colorful', full=True) + htmlFormatter = HtmlFormatter(linenos=True, style='colorful', full=True, hl_lines=lines, lineanchors="line") stream = file(os.path.join(options.report_dir, htmlfile), "w") stream.write(HTML_HEAD) - stream.write(highlight(content, CppLexer(), htmlFormatter)) + stream.write(highlight(content, guess_lexer_for_filename(source_file, ""), htmlFormatter)) stream.write(HTML_FOOTER) stream.close() @@ -122,9 +251,19 @@ if __name__ == '__main__': print("Creating index.html") stream = file(os.path.join(options.report_dir, "index.html"), "w") stream.write(HTML_HEAD) - stream.write("