From 353d09bd3074faed366c7a048f0c740a09ce4afa Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 6 May 2025 08:59:33 +0200 Subject: [PATCH 1/3] Remove references to test-only classes from rules.neon --- config/rules.neon | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/rules.neon b/config/rules.neon index 198c233d9..b401c2ba2 100644 --- a/config/rules.neon +++ b/config/rules.neon @@ -15,9 +15,6 @@ services: tags: [phpstan.rules.rule] arguments: classMethods: - - 'staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery' - - 'staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct' - - 'staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery' - 'Doctrine\DBAL\Connection::executeQuery' - 'Doctrine\DBAL\Connection::executeCacheQuery' - 'Doctrine\DBAL\Connection::executeStatement' @@ -45,7 +42,6 @@ services: tags: [phpstan.rules.rule] arguments: classMethods: - - 'staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery#0' - 'PDO::query#0' - 'PDO::prepare#0' - 'mysqli::query#0' @@ -67,9 +63,6 @@ services: tags: [phpstan.rules.rule] arguments: classMethods: - - 'staabm\PHPStanDba\Tests\Fixture\Connection::assembleNoArrays' - - 'staabm\PHPStanDba\Tests\Fixture\Connection::assembleOneArray#1' - - 'staabm\PHPStanDba\Tests\Fixture\Connection::assembleTwoArrays#1,2' - 'Doctrine\DBAL\Connection::insert#1' - 'Doctrine\DBAL\Connection::delete#1' - 'Doctrine\DBAL\Connection::update#1,2' From 47c63fb1e9e3ec945162346b525aff4b9caed259 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 6 May 2025 10:03:59 +0200 Subject: [PATCH 2/3] fix --- phpstan.neon.dist | 3 +++ src/Rules/DoctrineKeyValueStyleRule.php | 2 +- src/Rules/SyntaxErrorInPreparedStatementMethodRule.php | 2 +- src/Rules/SyntaxErrorInQueryMethodRule.php | 2 +- tests/rules/DoctrineKeyValueStyleRuleStrictTest.php | 6 +++++- tests/rules/DoctrineKeyValueStyleRuleTest.php | 6 +++++- .../rules/SyntaxErrorInPreparedStatementMethodRuleTest.php | 7 +++++-- ...taxErrorInPreparedStatementMethodSubclassedRuleTest.php | 7 ++++++- tests/rules/SyntaxErrorInQueryMethodSubclassedRuleTest.php | 4 +++- 9 files changed, 30 insertions(+), 9 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 7b0abe3e1..31a4bc433 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -36,3 +36,6 @@ parameters: - message: '#^Instanceof between mysqli_result\|string\|null>> and mysqli_result will always evaluate to true\.$#' path: src/DbSchema/SchemaHasherMysql.php + - + message: '#^Public property ".*::\$classMethods" is never used$#' + path: src/Rules/* diff --git a/src/Rules/DoctrineKeyValueStyleRule.php b/src/Rules/DoctrineKeyValueStyleRule.php index 262fe91c9..77dae7e08 100644 --- a/src/Rules/DoctrineKeyValueStyleRule.php +++ b/src/Rules/DoctrineKeyValueStyleRule.php @@ -33,7 +33,7 @@ final class DoctrineKeyValueStyleRule implements Rule /** * @var array}> */ - private array $classMethods; + public array $classMethods; private ReflectionProvider $reflectionProvider; diff --git a/src/Rules/SyntaxErrorInPreparedStatementMethodRule.php b/src/Rules/SyntaxErrorInPreparedStatementMethodRule.php index 4cd5ec33a..df2d38b8a 100644 --- a/src/Rules/SyntaxErrorInPreparedStatementMethodRule.php +++ b/src/Rules/SyntaxErrorInPreparedStatementMethodRule.php @@ -31,7 +31,7 @@ final class SyntaxErrorInPreparedStatementMethodRule implements Rule /** * @var list */ - private array $classMethods; + public array $classMethods; private ReflectionProvider $reflectionProvider; diff --git a/src/Rules/SyntaxErrorInQueryMethodRule.php b/src/Rules/SyntaxErrorInQueryMethodRule.php index d4f69e18e..ab3582d1d 100644 --- a/src/Rules/SyntaxErrorInQueryMethodRule.php +++ b/src/Rules/SyntaxErrorInQueryMethodRule.php @@ -24,7 +24,7 @@ final class SyntaxErrorInQueryMethodRule implements Rule /** * @var list */ - private array $classMethods; + public array $classMethods; private ReflectionProvider $reflectionProvider; diff --git a/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php b/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php index 71a754eb7..d1131c66a 100644 --- a/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php +++ b/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php @@ -27,7 +27,11 @@ protected function tearDown(): void protected function getRule(): Rule { - return self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); + $rule = self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleNoArrays', []]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleOneArray', [1]]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1,2]]; + return $rule; } public static function getAdditionalConfigFiles(): array diff --git a/tests/rules/DoctrineKeyValueStyleRuleTest.php b/tests/rules/DoctrineKeyValueStyleRuleTest.php index 17c8e1753..9d45e5c8f 100644 --- a/tests/rules/DoctrineKeyValueStyleRuleTest.php +++ b/tests/rules/DoctrineKeyValueStyleRuleTest.php @@ -15,7 +15,11 @@ class DoctrineKeyValueStyleRuleTest extends RuleTestCase { protected function getRule(): Rule { - return self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); + $rule = self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleNoArrays', []]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleOneArray', [1]]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1,2]]; + return $rule; } public static function getAdditionalConfigFiles(): array diff --git a/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php b/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php index c163aa170..d9ff89030 100644 --- a/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php +++ b/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php @@ -18,8 +18,11 @@ class SyntaxErrorInPreparedStatementMethodRuleTest extends RuleTestCase { protected function getRule(): Rule { - return self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); - } + $rule = self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery'; + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct'; + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery'; + return $rule; } public static function getAdditionalConfigFiles(): array { diff --git a/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php b/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php index 5018bb130..0d39deb46 100644 --- a/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php +++ b/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php @@ -10,6 +10,7 @@ use staabm\PHPStanDba\QueryReflection\PdoMysqlQueryReflector; use staabm\PHPStanDba\QueryReflection\PdoPgSqlQueryReflector; use staabm\PHPStanDba\Rules\SyntaxErrorInPreparedStatementMethodRule; +use staabm\PHPStanDba\Rules\SyntaxErrorInQueryMethodRule; /** * @extends RuleTestCase @@ -18,7 +19,11 @@ class SyntaxErrorInPreparedStatementMethodSubclassedRuleTest extends RuleTestCas { protected function getRule(): Rule { - return self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); + $rule = self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery'; + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct'; + $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery'; + return $rule; } public static function getAdditionalConfigFiles(): array diff --git a/tests/rules/SyntaxErrorInQueryMethodSubclassedRuleTest.php b/tests/rules/SyntaxErrorInQueryMethodSubclassedRuleTest.php index a2f0d28b4..6cc8ee6a4 100644 --- a/tests/rules/SyntaxErrorInQueryMethodSubclassedRuleTest.php +++ b/tests/rules/SyntaxErrorInQueryMethodSubclassedRuleTest.php @@ -18,7 +18,9 @@ class SyntaxErrorInQueryMethodSubclassedRuleTest extends RuleTestCase { protected function getRule(): Rule { - return self::getContainer()->getByType(SyntaxErrorInQueryMethodRule::class); + $rule = self::getContainer()->getByType(SyntaxErrorInQueryMethodRule::class); + $rule->classMethods[] = 'staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery#0'; + return $rule; } public static function getAdditionalConfigFiles(): array From 2e54ccec8ffa6845a2b019d8159e2a927323f540 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 6 May 2025 10:09:10 +0200 Subject: [PATCH 3/3] fix --- tests/rules/DoctrineKeyValueStyleRuleStrictTest.php | 2 +- tests/rules/DoctrineKeyValueStyleRuleTest.php | 2 +- .../SyntaxErrorInPreparedStatementMethodRuleTest.php | 8 ++++---- ...axErrorInPreparedStatementMethodSubclassedRuleTest.php | 5 +---- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php b/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php index d1131c66a..69f8f2652 100644 --- a/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php +++ b/tests/rules/DoctrineKeyValueStyleRuleStrictTest.php @@ -30,7 +30,7 @@ protected function getRule(): Rule $rule = self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleNoArrays', []]; $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleOneArray', [1]]; - $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1,2]]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1, 2]]; return $rule; } diff --git a/tests/rules/DoctrineKeyValueStyleRuleTest.php b/tests/rules/DoctrineKeyValueStyleRuleTest.php index 9d45e5c8f..e87a4f364 100644 --- a/tests/rules/DoctrineKeyValueStyleRuleTest.php +++ b/tests/rules/DoctrineKeyValueStyleRuleTest.php @@ -18,7 +18,7 @@ protected function getRule(): Rule $rule = self::getContainer()->getByType(DoctrineKeyValueStyleRule::class); $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleNoArrays', []]; $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleOneArray', [1]]; - $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1,2]]; + $rule->classMethods[] = ['staabm\PHPStanDba\Tests\Fixture\Connection', 'assembleTwoArrays', [1, 2]]; return $rule; } diff --git a/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php b/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php index d9ff89030..c5483e732 100644 --- a/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php +++ b/tests/rules/SyntaxErrorInPreparedStatementMethodRuleTest.php @@ -19,10 +19,10 @@ class SyntaxErrorInPreparedStatementMethodRuleTest extends RuleTestCase protected function getRule(): Rule { $rule = self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery'; - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct'; - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery'; - return $rule; } + $rule->classMethods[] = 'staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery'; + $rule->classMethods[] = 'staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct'; + return $rule; + } public static function getAdditionalConfigFiles(): array { diff --git a/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php b/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php index 0d39deb46..9e530de7f 100644 --- a/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php +++ b/tests/rules/SyntaxErrorInPreparedStatementMethodSubclassedRuleTest.php @@ -10,7 +10,6 @@ use staabm\PHPStanDba\QueryReflection\PdoMysqlQueryReflector; use staabm\PHPStanDba\QueryReflection\PdoPgSqlQueryReflector; use staabm\PHPStanDba\Rules\SyntaxErrorInPreparedStatementMethodRule; -use staabm\PHPStanDba\Rules\SyntaxErrorInQueryMethodRule; /** * @extends RuleTestCase @@ -20,9 +19,7 @@ class SyntaxErrorInPreparedStatementMethodSubclassedRuleTest extends RuleTestCas protected function getRule(): Rule { $rule = self::getContainer()->getByType(SyntaxErrorInPreparedStatementMethodRule::class); - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\Connection::preparedQuery'; - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\PreparedStatement::__construct'; - $rule->classMethods[] ='staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery'; + $rule->classMethods[] = 'staabm\PHPStanDba\Tests\Fixture\BaseQueryClass::doQuery'; return $rule; }