/** @test */ function it_merges_with_other_analysis_result() { $anaysisResult1 = new AnalysisResult(); $files1 = ['Z.php', 'A.php']; $lines1 = [31, 56, 11]; foreach ($files1 as $file) { foreach ($lines1 as $line) { $anaysisResult1->addIssue($file, $line, 'PHPMessDetector', 'error', 'Error'); } } $anaysisResult2 = new AnalysisResult(); $files2 = ['Y.php', 'B.php', 'A.php']; $lines2 = [300, 418]; foreach ($files2 as $file) { foreach ($lines2 as $line) { $anaysisResult2->addIssue($file, $line, 'PHPCodeSniffer', 'error', 'Error'); } } $anaysisResult1->mergeWith($anaysisResult2); $this->assertEquals(['A.php' => [11 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']], 31 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']], 56 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']], 300 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']], 418 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']]], 'B.php' => [300 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']], 418 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']]], 'Y.php' => [300 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']], 418 => [['tool' => 'PHPCodeSniffer', 'type' => 'error', 'message' => 'Error']]], 'Z.php' => [11 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']], 31 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']], 56 => [['tool' => 'PHPMessDetector', 'type' => 'error', 'message' => 'Error']]]], $anaysisResult1->toArray()); }
/** * Run each configured PHP analysis tool. * @return void */ protected function runAllAnalysisTools() { $result = new AnalysisResult(); $this->trigger(self::EVENT_STARTING_ANALYSIS); foreach ($this->getAnalysisTools() as $tool) { $startingMessage = ['description' => $tool->getDescription(), 'ignoredPaths' => $tool->getIgnoredPaths()]; $this->trigger(self::EVENT_STARTING_TOOL, $startingMessage); $tool->run($this->getAnalysedPath()); $result->mergeWith($tool->getAnalysisResult()); $this->trigger(self::EVENT_FINISHED_TOOL); } $this->output->result($result); $this->trigger(self::EVENT_FINISHED_ANALYSIS); }