mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-15 12:02:46 +02:00
enigma, episode, episodes, process_monitor and stream_view referenced migrated classes (UserRepository, BouquetService, StreamRepository, RequestManager, SettingsManager, ...) by short name with either no `use` or a `use` placed *below* the first usage. PHP imports outside the top scope are positional, so the short name resolved to a now-nonexistent global class — a runtime fatal on those admin pages (php -l passes; not covered by PHPStan/PHPUnit). The migration's automated `use` insertion missed them due to the interleaved HTML / short-tag (<? , <?=) structure, and the later php-cs-fixer pass stripped some as 'unused' because it could not see usage inside short-tag blocks. - Consolidate every needed `use XcVm\...;` into a single top-of-file PHP block. - Exclude Public/Views and Modules/*/views from php-cs-fixer (no_unused_imports is unreliable on short-tag templates); their import correctness is enforced by the new check_procedural_use gate instead. Verified: php -l (short_open_tag=1) clean; PHPStan no errors; PHPUnit green.
56 lines
2.1 KiB
PHP
56 lines
2.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* PHP-CS-Fixer configuration for XC_VM.
|
|
*
|
|
* Scope is intentionally NARROW: import/namespace hygiene only. We do NOT apply
|
|
* @PSR12 or any indentation/brace rules — the codebase is tab-indented legacy
|
|
* code and a full reformat would produce an unreviewable diff. The rules below
|
|
* only touch the `use`/`namespace` block, which is exactly what the PSR-4
|
|
* migration churned.
|
|
*
|
|
* Usage:
|
|
* make cs # check only (dry-run, fails on diff) — used in CI
|
|
* make cs-fix # apply fixes in place
|
|
*/
|
|
|
|
$finder = PhpCsFixer\Finder::create()
|
|
->in(__DIR__ . '/src')
|
|
->name('*.php')
|
|
// Composer autoloader glue + third-party packages (committed + shipped).
|
|
->exclude('vendor')
|
|
// Bundled third-party TMDB client (vendored, kept global on purpose).
|
|
->exclude('Modules/tmdb/lib')
|
|
// Runtime/transient trees.
|
|
->exclude('tmp')
|
|
->exclude('backups')
|
|
// View templates: HTML interleaved with many <? / <?= short-tag PHP blocks.
|
|
// no_unused_imports cannot reliably see class usage inside short-tag blocks
|
|
// and would strip still-needed imports. Their import correctness is enforced
|
|
// instead by tools/ci/check_procedural_use.php (short-tag aware).
|
|
->notPath('#^Public/Views/#')
|
|
->notPath('#^Modules/[^/]+/views/#');
|
|
|
|
return (new PhpCsFixer\Config())
|
|
->setIndent("\t")
|
|
->setLineEnding("\n")
|
|
->setRules([
|
|
// Remove imports that are no longer referenced (cleans up leftovers from
|
|
// the PSR-4 migration's automated `use` insertion).
|
|
'no_unused_imports' => true,
|
|
// Sort `use` statements alphabetically, classes/functions/consts grouped.
|
|
'ordered_imports' => [
|
|
'sort_algorithm' => 'alpha',
|
|
'imports_order' => ['class', 'function', 'const'],
|
|
],
|
|
// `use \Foo;` -> `use Foo;` (leading slash in imports is redundant).
|
|
'no_leading_import_slash' => true,
|
|
// Exactly one blank line after the import block.
|
|
'single_line_after_imports' => true,
|
|
// Exactly one blank line after the namespace declaration.
|
|
'blank_line_after_namespace' => true,
|
|
// Collapse multiple blank lines between/around `use` statements.
|
|
'no_extra_blank_lines' => ['tokens' => ['use']],
|
|
])
|
|
->setFinder($finder);
|