refactor: apply Rector safe sets + fix the transform's fallout (reviewed)

Ran `make rector-fix` (deadCode + codeQuality prepared sets) over the PSR-4
class trees (Core/Domain/Cli/Infrastructure). Net -600 lines: dead-code removal
and the empty-if/else collapse (the feedback_simplify_empty_else pattern this
adoption targeted). 99 files mechanically transformed.

The output was reviewed against the full test suite + PHPStan + a targeted scan;
this commit is the CORRECTED pass (no broken state in history):

- FIX (Rector bug): its boolean inversion dropped the parens around an
  assignment-in-condition — `if (($rKey = array_search(...)) === false)` became
  `if ($rKey = array_search(...) !== false)`, assigning the bool to $rKey and
  unsetting the wrong array offset. Restored parens in 7 sites (BouquetService,
  ChannelService, CategoryService). PHPStan caught only 1 of the 7; the rest
  were silent. Added BouquetServiceTest as a regression (proven to fail on the
  broken form).
- FIX (pre-existing, same class): GroupService::removeGroupFromUsers had the
  identical dropped-parens bug already in the tree — corrected here too.
- FIX: ServersCronJob::pingServer returns floor() (float) under an `: int`
  return type — added an (int) cast.
- ACCEPT: LocallyCalledStaticMethodToNonStaticRector converted 25 locally-called
  private static helpers to instance methods (behaviour-preserving; call sites
  rewritten). Updated MonitorCommandTest's reflection helper to invoke on a
  constructor-less instance.

Verified: PHPStan level 5 clean (0), suite 691 tests / 0 errors.

NOTE: do not re-run `make rector-fix` on this tree without first skipping the
inversion rule — the dropped-parens bug is deterministic and would return.
This commit is contained in:
Divarion_D
2026-09-13 17:27:42 +03:00
parent 98aea670c3
commit dc7fa83b0a
103 changed files with 664 additions and 1205 deletions
+8 -2
View File
@@ -19,11 +19,17 @@ final class MonitorCommandTest extends TestCase {
}
}
/** Invoke a private static MonitorCommand method via reflection. */
/**
* Invoke a private MonitorCommand method via reflection on a constructor-less
* instance. Works for both instance and (still) static helpers — a static
* method ignores the object argument. The tested helpers are pure (no $this),
* so a bare instance is sufficient.
*/
private function call(string $method, ...$args) {
$m = new ReflectionMethod(MonitorCommand::class, $method);
$m->setAccessible(true);
return $m->invoke(null, ...$args);
$instance = (new \ReflectionClass(MonitorCommand::class))->newInstanceWithoutConstructor();
return $m->invoke($instance, ...$args);
}
// ── parseFrameRate (label768/780/1047/1052/1057) ───────────