Commit graph

3 commits

Author SHA1 Message Date
Snider
94ce7bc1e7 feat: add QA pipeline with security and mutation testing tools
Add comprehensive PHP quality assurance tooling:

**New tools:**
- roave/security-advisories - Blocks packages with known CVEs
- infection/infection - Mutation testing for test quality
- rector/rector - Automated refactoring and PHP upgrades
- psalm/plugin-laravel - Better Laravel support in Psalm

**New config files:**
- qa.yaml - QA pipeline definition for `core php qa` command
- infection.json5 - Mutation testing configuration
- rector.php - Automated refactoring rules

**QA Pipeline stages:**
1. Quick: security audit, code style, PHPStan
2. Standard: Psalm, tests
3. Full: Rector dry-run, mutation testing

**Current status:**
- Security: No vulnerabilities
- Pint: Pass
- PHPStan: Level 1, 0 errors
- Psalm: Level 8, 0 errors, 93% type inference
- Tests: 197 passing
- Rector: 225 files with potential improvements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 23:21:12 +00:00
Snider
7e367803fc fix: resolve static analysis issues and bump PHPStan to level 1
- Replace \Log:: with proper Log facade imports in Channel.php and EncryptArrayObject.php
- Remove unnecessary null coalescing on $_GET/$_POST superglobals in Input.php
- Add @property annotations to SeoMetadata and ImageOptimization models
- Add @property-read annotations for Livewire computed properties in ConfigPanel and WorkspaceConfig
- Bump PHPStan level from 0 to 1
- Remove Log facade from Psalm suppressions (now properly imported)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 23:09:27 +00:00
Snider
1ab03b7c59 fix: resolve static analysis errors in PHPStan and Psalm
- Configure PHPStan at level 0 with suppressions for optional dependencies
- Configure Psalm at level 8 with issue handlers for:
  - Optional packages (Bunny, FFMpeg, Imagick, Intervention, Predis, Flux, Horizon)
  - Runtime class aliases (App\Support\*, App\Traits\*)
  - Cross-package dependencies (Core\Tenant\*, Core\Config\Workspace)
  - Laravel HasFactory template param and NoValue false positives
- Fix StorageMetrics::increment() accessibility by adding public wrapper
- Add autoload-dev mappings for test fixture namespaces

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 22:58:44 +00:00