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