<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Online Demo Report - Cppcheck</title> <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Orbitron&text=Cppcheck" /> <link rel="stylesheet" type="text/css" href="/site/css/all.css" /> <link rel="stylesheet" type="text/css" href="/site/css/geshi.css" /> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> <script src="/site/js/picnet.table.filter.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $('#resultsTable').tableFilter(); }); </script> </head> <body> <div id="header"> <div class="wrap"> <h1>Cppcheck</h1> <p>A tool for static C/C++ code analysis</p> </div> <!-- .wrap --> </div> <!-- #header --> <div id="tabs"> <div class="wrap"> <ul> <li><a href="/">Home</a></li> <li><a href="http://sourceforge.net/apps/mediawiki/cppcheck/">Wiki</a></li> <li><a href="http://sourceforge.net/apps/phpbb/cppcheck/">Forum</a></li> <li><a href="http://sourceforge.net/apps/trac/cppcheck/">Issues</a></li> <li><a href="/devinfo/" title="Developer Information">Developer Info</a></li> <li><em><a href="/demo/">Online Demo</a></em></li> <li><a href="http://sourceforge.net/projects/cppcheck/">Project page</a></li> </ul> </div> <!-- .wrap --> </div> <!-- #tabs --> <div id="content"> <div class="wrap"> <h2>Online Demo Report</h2> <?php $isCodePosted = isset($_POST['code']) && !empty($_POST['code']); /** * ... * @param string $code Source code * @return string Output lines */ function get_democlient_output($code) { $postdata = http_build_query( array( 'code' => $code ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); return file_get_contents('http://cppcheck.sourceforge.net/cgi-bin/democlient.cgi', false, $context); } /** * ... * @param string $output Output lines * @return array Parsed output */ function parse_democlient_output($output) { try { $parsed = array(); $xml = simplexml_load_string($output); foreach ($xml->errors->error as $error) { //for all errors... $severity = (string)$error->attributes()->severity; $msg = (string)$error->attributes()->msg; $line = (string)$error->location->attributes()->line; if (!empty($severity) && !empty($msg) && !empty($line)) { //if complete error... $parsed[] = array('severity' => $severity, 'msg' => $msg, 'line' => $line); } } return $parsed; } catch (Exception $ex) { return array(); } } function cut_string($string, $length = 1024) { if (strlen($string) > $length) { return substr($string, 0, $length); } return $string; } if ($isCodePosted) { //if code posted... include_once '../../site/geshi/geshi.php'; $code = cut_string($_POST['code']); $geshi = new GeSHi($code, 'cpp'); $geshi->enable_classes(); $geshi->set_header_type(GESHI_HEADER_PRE_TABLE); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $geshi->set_overall_class('geshicode'); echo "<h3>Input</h3>\n"; echo $geshi->parse_code(); echo "<h3>Output</h3>\n"; $output = get_democlient_output($code); $results = parse_democlient_output($output); if (!empty($results)) { echo "<table id=\"resultsTable\">\n"; echo "<thead>\n"; echo " <tr><th class=\"center\" filter-type=\"ddl\">Line</th><th class=\"center\" filter-type=\"ddl\">Severity</th><th>Message</th></tr>\n"; echo "</thead>\n"; echo "<tbody>\n"; foreach ($results as $result) { //for each result... echo " <tr><td class=\"center\">" . htmlspecialchars($result['line']) . "</td><td class=\"center\">" . htmlspecialchars($result['severity']) . "</td><td>" . htmlspecialchars($result['msg']) . "</td></tr>\n"; } echo "</tbody>\n"; echo "</table>\n"; } else { echo "<p>No errors found.</p>\n"; } } else { echo "<p>Use the <a href=\"/demo/\">online demo</a> page to create the report.</p>\n"; } ?> </div> <!-- .wrap --> </div> <!-- #content --> </body> </html>