Skip to content

Commit 4ac41c1

Browse files
fix(phpstan): resolve type safety issues for static analysis
Add proper type guards and remove unused dependencies to pass PHPStan level 9 analysis. - Add type guards for mixed array values in CalculateQueueMetricsAction - Add type assertions for command option values - Remove unused QueueMetricsRepository dependency from RecordJobStartAction - Handle mixed types from getMetrics() return values safely All 118 tests still passing with strict type safety.
1 parent 45aac1f commit 4ac41c1

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/Actions/CalculateQueueMetricsAction.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ public function execute(string $connection, string $queue): void
5050
$jobClass = $job['jobClass'];
5151
$metrics = $this->jobRepository->getMetrics($jobClass, $connection, $queue);
5252

53-
$totalProcessed += $metrics['total_processed'];
54-
$totalFailed += $metrics['total_failed'];
55-
$totalDurationMs += $metrics['total_duration_ms'];
53+
$totalProcessed += is_int($metrics['total_processed']) ? $metrics['total_processed'] : 0;
54+
$totalFailed += is_int($metrics['total_failed']) ? $metrics['total_failed'] : 0;
55+
$totalDurationMs += is_float($metrics['total_duration_ms']) || is_int($metrics['total_duration_ms'])
56+
? (float) $metrics['total_duration_ms']
57+
: 0.0;
5658

57-
if ($metrics['last_processed_at'] !== null) {
59+
if ($metrics['last_processed_at'] instanceof \Carbon\Carbon) {
5860
if ($lastProcessedAt === null || $metrics['last_processed_at']->greaterThan($lastProcessedAt)) {
5961
$lastProcessedAt = $metrics['last_processed_at'];
6062
}

src/Actions/RecordJobStartAction.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Carbon\Carbon;
88
use PHPeek\LaravelQueueMetrics\Repositories\Contracts\JobMetricsRepository;
9-
use PHPeek\LaravelQueueMetrics\Repositories\Contracts\QueueMetricsRepository;
109

1110
/**
1211
* Record when a job starts processing.
@@ -15,7 +14,6 @@
1514
{
1615
public function __construct(
1716
private JobMetricsRepository $repository,
18-
private QueueMetricsRepository $queueMetricsRepository,
1917
) {}
2018

2119
public function execute(

src/Console/CalculateQueueMetricsCommand.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@ public function handle(): int
4343
try {
4444
if ($connection !== null && $queue !== null) {
4545
// Calculate for specific queue
46-
$this->info("Calculating metrics for {$connection}:{$queue}...");
47-
$this->action->execute($connection, $queue);
46+
$connectionStr = is_string($connection) ? $connection : '';
47+
$queueStr = is_string($queue) ? $queue : '';
48+
$this->info("Calculating metrics for {$connectionStr}:{$queueStr}...");
49+
$this->action->execute($connectionStr, $queueStr);
4850
$this->info('✓ Metrics calculated successfully');
4951

5052
return self::SUCCESS;

0 commit comments

Comments
 (0)