Example #1
0
 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);
 }
Example #2
0
 /**
  * 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;
 }