public function collectReport() { $report = parent::collectReport(); // fill the database foreach ($this->slices as $filename => $slices) { if ($slices) { $this->projectDatabase->addFileSlice($filename, $slices["_db"]); } } $this->projectDatabase->finalize(); // run each plugin for each slice foreach ($this->projectCheckPlugins as $plugin_id => $plugin) { $plugin->startLintCheck($this->projectDatabase); foreach ($this->slices as $filename => $slice) { if ($slice) { $plugin->checkFileSlice($this->projectDatabase, $filename, $slice[$plugin_id]); } } $plugin_report = $plugin->getProjectReport($this->projectDatabase); foreach ($plugin_report as $filename => $errors_list) { foreach ($errors_list as $e) { $code = $e['code']; if (!isset($this->errorMap[$code])) { error_log("No descriptions for error code '{$code}'"); continue; } $description = $this->errorMap[$code]; if (!isset($description["severity"]) || !isset($description["message"])) { error_log("Invalid description for error code '{$code}'"); continue; } $code_defect = XRef_CodeDefect::fromTokenText($e['text'], $code, $description['severity'], $description["message"], $e['params']); $code_defect->fileName = $e['location'][0]; $code_defect->lineNumber = $e['location'][1]; $report[$filename][] = $code_defect; } } } return $this->xref->sortAndFilterReport($report); }
/** * Runs all registered lint plugins for the given parsed file. * * @param XRef_IParsedFile $pf - parsed file object * @return XRef_CodeDefect[] */ protected function getFileReport(XRef_IParsedFile $pf) { $report = array(); foreach ($this->plugins as $pluginId => $plugin) { $found_defects = $plugin->getReport($pf); if ($found_defects) { foreach ($found_defects as $d) { list($token, $error_code) = $d; if (!isset($this->errorMap[$error_code])) { error_log("No descriptions for error code '{$error_code}'"); continue; } $description = $this->errorMap[$error_code]; if (!isset($description["severity"]) || !isset($description["message"])) { error_log("Invalid description for error code '{$error_code}'"); continue; } $report[] = XRef_CodeDefect::fromToken($token, $error_code, $description["severity"], $description["message"]); } } } return $report; }