Online Demo Report
$code ) ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); return file('http://cppcheck.sourceforge.net/cgi-bin/democlient.cgi', false, $context); } /** * ... * @param array $output Output lines * @return array Parsed output */ function parse_democlient_output($output) { $parsed = array(); foreach ($output as $line) { //for each output line... $line = trim($line); if (empty($line)) { //if empty line... continue; } preg_match('/\[test.c:(\d+)\]: (.*)/', $line, $matches); $lineNumber = $matches[1]; $result = $matches[2]; if (!empty($lineNumber) && !empty($result)) { //if complete result... $parsed[$lineNumber][] = $result; } } return $parsed; } 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 "Input
\n"; echo $geshi->parse_code(); echo "Output
\n"; $output = get_democlient_output($code); $report = parse_democlient_output($output); echo "- \n";
foreach ($report as $lineNumber => $results) { //for each line results...
echo "
- Line $lineNumber: \n"; foreach ($results as $result) { //for each results... echo "
- " . htmlspecialchars($result) . " \n"; } } echo "
Use the online demo page to create the report.
\n"; } ?>