public function generate($folder, $name = null)
{
$list = Analyzer::getThemeAnalyzers($this->themesToShow);
$list = '"' . join('", "', $list) . '"';
$sqlite = new \Sqlite3($folder . '/dump.sqlite');
$sqlQuery = 'SELECT * FROM results WHERE analyzer in (' . $list . ')';
$res = $sqlite->query($sqlQuery);
$results = array();
$titleCache = array();
$severityCache = array();
while ($row = $res->fetchArray(SQLITE3_ASSOC)) {
if (!isset($results[$row['file']])) {
$file = array('errors' => 0, 'warnings' => 0, 'fixable' => 0, 'filename' => $row['file'], 'messages' => array());
$results[$row['file']] = $file;
}
if (!isset($titleCache[$row['analyzer']])) {
$analyzer = Analyzer::getInstance($row['analyzer']);
$titleCache[$row['analyzer']] = $analyzer->getDescription()->getName();
$severityCache[$row['analyzer']] = $analyzer->getSeverity();
}
$message = array('type' => 'warning', 'source' => $row['analyzer'], 'severity' => $severityCache[$row['analyzer']], 'fixable' => 'fixable', 'message' => $titleCache[$row['analyzer']]);
if (!isset($results[$row['file']]['messages'][$row['line']])) {
$results[$row['file']]['messages'][$row['line']] = array(0 => array());
}
$results[$row['file']]['messages'][$row['line']][0][] = $message;
++$results[$row['file']]['warnings'];
$this->count();
}
if ($name === null) {
return json_encode($results);
} else {
file_put_contents($folder . '/' . $name . '.' . self::FILE_EXTENSION, json_encode($results));
return true;
}
}