diff --git a/src/Command/CognitiveMetricsCommand.php b/src/Command/CognitiveMetricsCommand.php index 8ac124b..3e69f9c 100644 --- a/src/Command/CognitiveMetricsCommand.php +++ b/src/Command/CognitiveMetricsCommand.php @@ -5,6 +5,7 @@ namespace Phauthentic\CognitiveCodeAnalysis\Command; use Exception; +use InvalidArgumentException; use Phauthentic\CognitiveCodeAnalysis\Business\CodeCoverage\CodeCoverageFactory; use Phauthentic\CognitiveCodeAnalysis\Business\CodeCoverage\CoverageReportReaderInterface; use Phauthentic\CognitiveCodeAnalysis\Business\Cognitive\Baseline; @@ -129,8 +130,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $pathInput = $input->getArgument(self::ARGUMENT_PATH); $paths = $this->parsePaths($pathInput); - $configFile = $input->getOption(self::OPTION_CONFIG_FILE); - if ($configFile && !$this->loadConfiguration($configFile, $output)) { + if (!$this->loadConfiguration($input, $output)) { return Command::FAILURE; } @@ -147,6 +147,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int if ($sortResult['status'] === Command::FAILURE) { return Command::FAILURE; } + $metricsCollection = $sortResult['collection']; $reportType = $input->getOption(self::OPTION_REPORT_TYPE); @@ -237,7 +238,7 @@ private function applySorting( try { $sorted = $this->sorter->sort($metricsCollection, $sortBy, $sortOrder); return ['status' => Command::SUCCESS, 'collection' => $sorted]; - } catch (\InvalidArgumentException $e) { + } catch (InvalidArgumentException $e) { $output->writeln('Sorting error: ' . $e->getMessage() . ''); $output->writeln('Available sort fields: ' . implode(', ', $this->sorter->getSortableFields()) . ''); return ['status' => Command::FAILURE, 'collection' => $metricsCollection]; @@ -247,14 +248,23 @@ private function applySorting( /** * Loads configuration and handles errors. * - * @param string $configFile * @param OutputInterface $output * @return bool Success or failure. */ - private function loadConfiguration(string $configFile, OutputInterface $output): bool + private function loadConfiguration(InputInterface $input, OutputInterface $output): bool { try { + $configFile = $input->getOption(self::OPTION_CONFIG_FILE); + if (!$configFile && file_exists(getcwd() . '/phpcca.yml')) { + $configFile = getcwd() . '/phpcca.yml'; + } + + if (!$configFile) { + return true; + } + $this->metricsFacade->loadConfig($configFile); + return true; } catch (Exception $e) { $output->writeln('Failed to load configuration: ' . $e->getMessage() . ''); @@ -279,7 +289,7 @@ private function loadCoverageReader( return null; } - // Auto-detect format if not specified + // Auto-detect format if isn't specified if ($format === null) { $format = $this->detectCoverageFormat($coverageFile); if ($format === null) { @@ -309,12 +319,12 @@ private function detectCoverageFormat(string $coverageFile): ?string return null; } - // Cobertura format has root element with line-rate attribute + // Cobertura format has root element with a line-rate attribute if (preg_match('/]*line-rate=/', $content)) { return 'cobertura'; } - // Clover format has with generated attribute and child + // Clover format has with a generated attribute and child if (preg_match('/]*generated=.*writeln(sprintf( 'Coverage file not found: %s', $coverageFile