From 687522ba42c03e74e9cb9d5592e1677f35fb03ce Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 12 Jul 2026 12:47:07 +0200 Subject: [PATCH 1/4] [CodeQuality] Add PHPUNIT_NARROW_ASSERTS set focused on narrowing broad asserts to specific methods --- config/sets/phpunit-narrow-asserts.php | 49 ++++++++++++++++++++++++++ src/Set/PHPUnitSetList.php | 2 ++ 2 files changed, 51 insertions(+) create mode 100644 config/sets/phpunit-narrow-asserts.php diff --git a/config/sets/phpunit-narrow-asserts.php b/config/sets/phpunit-narrow-asserts.php new file mode 100644 index 00000000..c7e47e2f --- /dev/null +++ b/config/sets/phpunit-narrow-asserts.php @@ -0,0 +1,49 @@ + assertArrayHasKey('b', $a). + */ +return static function (RectorConfig $rectorConfig): void { + $rectorConfig->rules([ + AssertCompareOnCountableWithMethodToAssertCountRector::class, + AssertComparisonToSpecificMethodRector::class, + AssertNotOperatorRector::class, + AssertTrueFalseToSpecificMethodRector::class, + AssertSameBoolNullToSpecificMethodRector::class, + AssertFalseStrposToContainsRector::class, + AssertIssetToSpecificMethodRector::class, + AssertInstanceOfComparisonRector::class, + AssertFuncCallToPHPUnitAssertRector::class, + SimplifyForeachInstanceOfRector::class, + UseSpecificWillMethodRector::class, + UseSpecificWithMethodRector::class, + AssertEmptyNullableObjectToAssertInstanceofRector::class, + + AssertEqualsToSameRector::class, + AssertSameTrueFalseToAssertTrueFalseRector::class, + MatchAssertSameExpectedTypeRector::class, + AssertArrayCastedObjectToAssertSameRector::class, + ]); +}; diff --git a/src/Set/PHPUnitSetList.php b/src/Set/PHPUnitSetList.php index a72f8020..59cdd573 100644 --- a/src/Set/PHPUnitSetList.php +++ b/src/Set/PHPUnitSetList.php @@ -31,5 +31,7 @@ final class PHPUnitSetList public const string PHPUNIT_CODE_QUALITY = __DIR__ . '/../../config/sets/phpunit-code-quality.php'; + public const string PHPUNIT_NARROW_ASSERTS = __DIR__ . '/../../config/sets/phpunit-narrow-asserts.php'; + public const string ANNOTATIONS_TO_ATTRIBUTES = __DIR__ . '/../../config/sets/annotations-to-attributes.php'; } From cf34723861c855702f2ea4cbdbcaea969b8a3de3 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 12 Jul 2026 12:50:33 +0200 Subject: [PATCH 2/4] Exclude UseSpecificWillMethodRector, not an assert narrowing --- config/sets/phpunit-narrow-asserts.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/sets/phpunit-narrow-asserts.php b/config/sets/phpunit-narrow-asserts.php index c7e47e2f..d2c46259 100644 --- a/config/sets/phpunit-narrow-asserts.php +++ b/config/sets/phpunit-narrow-asserts.php @@ -18,7 +18,6 @@ use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertSameTrueFalseToAssertTrueFalseRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertTrueFalseToSpecificMethodRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\MatchAssertSameExpectedTypeRector; -use Rector\PHPUnit\CodeQuality\Rector\MethodCall\UseSpecificWillMethodRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\UseSpecificWithMethodRector; /** @@ -37,7 +36,6 @@ AssertInstanceOfComparisonRector::class, AssertFuncCallToPHPUnitAssertRector::class, SimplifyForeachInstanceOfRector::class, - UseSpecificWillMethodRector::class, UseSpecificWithMethodRector::class, AssertEmptyNullableObjectToAssertInstanceofRector::class, From 3a428d15fda9f885ad61562f615fbfc2b1f817d7 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 12 Jul 2026 12:50:59 +0200 Subject: [PATCH 3/4] Exclude SimplifyForeachInstanceOfRector too --- config/sets/phpunit-narrow-asserts.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/sets/phpunit-narrow-asserts.php b/config/sets/phpunit-narrow-asserts.php index d2c46259..9ed66e57 100644 --- a/config/sets/phpunit-narrow-asserts.php +++ b/config/sets/phpunit-narrow-asserts.php @@ -4,7 +4,6 @@ use Rector\Config\RectorConfig; use Rector\PHPUnit\CodeQuality\Rector\Expression\AssertArrayCastedObjectToAssertSameRector; -use Rector\PHPUnit\CodeQuality\Rector\Foreach_\SimplifyForeachInstanceOfRector; use Rector\PHPUnit\CodeQuality\Rector\FuncCall\AssertFuncCallToPHPUnitAssertRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertCompareOnCountableWithMethodToAssertCountRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertComparisonToSpecificMethodRector; @@ -35,7 +34,6 @@ AssertIssetToSpecificMethodRector::class, AssertInstanceOfComparisonRector::class, AssertFuncCallToPHPUnitAssertRector::class, - SimplifyForeachInstanceOfRector::class, UseSpecificWithMethodRector::class, AssertEmptyNullableObjectToAssertInstanceofRector::class, From 15d2e3b7991b4c635cc7344f15ef22434e1acfe8 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 12 Jul 2026 12:52:23 +0200 Subject: [PATCH 4/4] Drop AssertFuncCallToPHPUnitAssertRector and UseSpecificWithMethodRector, not narrowing asserts --- config/sets/phpunit-narrow-asserts.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/sets/phpunit-narrow-asserts.php b/config/sets/phpunit-narrow-asserts.php index 9ed66e57..449b8bc7 100644 --- a/config/sets/phpunit-narrow-asserts.php +++ b/config/sets/phpunit-narrow-asserts.php @@ -4,7 +4,6 @@ use Rector\Config\RectorConfig; use Rector\PHPUnit\CodeQuality\Rector\Expression\AssertArrayCastedObjectToAssertSameRector; -use Rector\PHPUnit\CodeQuality\Rector\FuncCall\AssertFuncCallToPHPUnitAssertRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertCompareOnCountableWithMethodToAssertCountRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertComparisonToSpecificMethodRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertEmptyNullableObjectToAssertInstanceofRector; @@ -17,7 +16,6 @@ use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertSameTrueFalseToAssertTrueFalseRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertTrueFalseToSpecificMethodRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\MatchAssertSameExpectedTypeRector; -use Rector\PHPUnit\CodeQuality\Rector\MethodCall\UseSpecificWithMethodRector; /** * Narrow broad asserts to their specific, more descriptive method calls, @@ -33,8 +31,6 @@ AssertFalseStrposToContainsRector::class, AssertIssetToSpecificMethodRector::class, AssertInstanceOfComparisonRector::class, - AssertFuncCallToPHPUnitAssertRector::class, - UseSpecificWithMethodRector::class, AssertEmptyNullableObjectToAssertInstanceofRector::class, AssertEqualsToSameRector::class,