From 8ad6f7147c773592674e50615d8e2e4224e3d062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 13 Dec 2024 07:55:14 +0100 Subject: [PATCH] Enhancement: Extract variable --- src/Classes/FinalRule.php | 6 ++++-- src/Classes/NoExtendsRule.php | 12 ++++++++---- .../PHPUnit/Framework/TestCaseWithSuffixRule.php | 6 ++++-- src/Closures/NoParameterWithNullDefaultValueRule.php | 6 ++++-- .../NoParameterWithNullableTypeDeclarationRule.php | 6 ++++-- .../NoNullableReturnTypeDeclarationRule.php | 6 ++++-- .../NoParameterWithNullDefaultValueRule.php | 6 ++++-- .../NoParameterWithNullableTypeDeclarationRule.php | 6 ++++-- src/Methods/FinalInAbstractClassRule.php | 6 ++++-- .../NoConstructorParameterWithDefaultValueRule.php | 12 ++++++++---- src/Methods/NoNullableReturnTypeDeclarationRule.php | 12 ++++++++---- .../NoParameterWithContainerTypeDeclarationRule.php | 12 ++++++++---- src/Methods/NoParameterWithNullDefaultValueRule.php | 12 ++++++++---- .../NoParameterWithNullableTypeDeclarationRule.php | 12 ++++++++---- src/Methods/PrivateInFinalClassRule.php | 6 ++++-- 15 files changed, 84 insertions(+), 42 deletions(-) diff --git a/src/Classes/FinalRule.php b/src/Classes/FinalRule.php index 26119ffa..04196858 100644 --- a/src/Classes/FinalRule.php +++ b/src/Classes/FinalRule.php @@ -93,10 +93,12 @@ public function processNode( return []; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( $this->errorMessageTemplate, $node->namespacedName->toString(), - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Classes/NoExtendsRule.php b/src/Classes/NoExtendsRule.php index 42772e55..b8aa47f3 100644 --- a/src/Classes/NoExtendsRule.php +++ b/src/Classes/NoExtendsRule.php @@ -69,10 +69,12 @@ public function processNode( } if (!isset($node->namespacedName)) { - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Anonymous class is not allowed to extend "%s".', $extendedClassName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder @@ -81,11 +83,13 @@ public function processNode( ]; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Class "%s" is not allowed to extend "%s".', $node->namespacedName->toString(), $extendedClassName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php b/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php index 4e252daa..0abb55ae 100644 --- a/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php +++ b/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php @@ -81,11 +81,13 @@ public function processNode( return []; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Class %s extends %s, is concrete, but does not have a Test suffix.', $fullyQualifiedClassName, $extendedPhpunitTestCaseClassName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Closures/NoParameterWithNullDefaultValueRule.php b/src/Closures/NoParameterWithNullDefaultValueRule.php index 32cb1c62..41bfb75a 100644 --- a/src/Closures/NoParameterWithNullDefaultValueRule.php +++ b/src/Closures/NoParameterWithNullDefaultValueRule.php @@ -55,10 +55,12 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Closure has parameter $%s with null as default value.', $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullDefaultValue()->toString()) diff --git a/src/Closures/NoParameterWithNullableTypeDeclarationRule.php b/src/Closures/NoParameterWithNullableTypeDeclarationRule.php index 4a9b5827..ab1e0442 100644 --- a/src/Closures/NoParameterWithNullableTypeDeclarationRule.php +++ b/src/Closures/NoParameterWithNullableTypeDeclarationRule.php @@ -51,10 +51,12 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Closure has parameter $%s with a nullable type declaration.', $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullableTypeDeclaration()->toString()) diff --git a/src/Functions/NoNullableReturnTypeDeclarationRule.php b/src/Functions/NoNullableReturnTypeDeclarationRule.php index 7e0ef3e5..57664786 100644 --- a/src/Functions/NoNullableReturnTypeDeclarationRule.php +++ b/src/Functions/NoNullableReturnTypeDeclarationRule.php @@ -40,10 +40,12 @@ public function processNode( return []; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Function %s() has a nullable return type declaration.', $node->namespacedName->toString(), - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Functions/NoParameterWithNullDefaultValueRule.php b/src/Functions/NoParameterWithNullDefaultValueRule.php index 82e1544a..d79ba38e 100644 --- a/src/Functions/NoParameterWithNullDefaultValueRule.php +++ b/src/Functions/NoParameterWithNullDefaultValueRule.php @@ -57,11 +57,13 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Function %s() has parameter $%s with null as default value.', $functionName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullDefaultValue()->toString()) diff --git a/src/Functions/NoParameterWithNullableTypeDeclarationRule.php b/src/Functions/NoParameterWithNullableTypeDeclarationRule.php index d6352cd1..8c2eaf5e 100644 --- a/src/Functions/NoParameterWithNullableTypeDeclarationRule.php +++ b/src/Functions/NoParameterWithNullableTypeDeclarationRule.php @@ -53,11 +53,13 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Function %s() has parameter $%s with a nullable type declaration.', $functionName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullableTypeDeclaration()->toString()) diff --git a/src/Methods/FinalInAbstractClassRule.php b/src/Methods/FinalInAbstractClassRule.php index 52e22c69..812bbf67 100644 --- a/src/Methods/FinalInAbstractClassRule.php +++ b/src/Methods/FinalInAbstractClassRule.php @@ -79,11 +79,13 @@ public function processNode( return []; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() is not final, but since the containing class is abstract, it should be.', $containingClass->getName(), $node->name->toString(), - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Methods/NoConstructorParameterWithDefaultValueRule.php b/src/Methods/NoConstructorParameterWithDefaultValueRule.php index de00ca50..07f532a2 100644 --- a/src/Methods/NoConstructorParameterWithDefaultValueRule.php +++ b/src/Methods/NoConstructorParameterWithDefaultValueRule.php @@ -60,10 +60,12 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Constructor in anonymous class has parameter $%s with default value.', $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noConstructorParameterWithDefaultValue()->toString()) @@ -80,11 +82,13 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Constructor in %s has parameter $%s with default value.', $className, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noConstructorParameterWithDefaultValue()->toString()) diff --git a/src/Methods/NoNullableReturnTypeDeclarationRule.php b/src/Methods/NoNullableReturnTypeDeclarationRule.php index f9080ac6..16afb430 100644 --- a/src/Methods/NoNullableReturnTypeDeclarationRule.php +++ b/src/Methods/NoNullableReturnTypeDeclarationRule.php @@ -41,10 +41,12 @@ public function processNode( $classReflection = $scope->getClassReflection(); if ($classReflection->isAnonymous()) { - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s() in anonymous class has a nullable return type declaration.', $node->name->name, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder @@ -53,11 +55,13 @@ public function processNode( ]; } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() has a nullable return type declaration.', $classReflection->getName(), $node->name->name, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder diff --git a/src/Methods/NoParameterWithContainerTypeDeclarationRule.php b/src/Methods/NoParameterWithContainerTypeDeclarationRule.php index c4bbce03..22cf60a7 100644 --- a/src/Methods/NoParameterWithContainerTypeDeclarationRule.php +++ b/src/Methods/NoParameterWithContainerTypeDeclarationRule.php @@ -152,25 +152,29 @@ private static function createError( Reflection\ClassReflection $classUsedInTypeDeclaration ): Rules\RuleError { if ($classReflection->isAnonymous()) { - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s() in anonymous class has a parameter $%s with a type declaration of %s, but containers should not be injected.', $methodName, $parameterName, $classUsedInTypeDeclaration->getName(), - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithContainerTypeDeclaration()->toString()) ->build(); } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() has a parameter $%s with a type declaration of %s, but containers should not be injected.', $classReflection->getName(), $methodName, $parameterName, $classUsedInTypeDeclaration->getName(), - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithContainerTypeDeclaration()->toString()) diff --git a/src/Methods/NoParameterWithNullDefaultValueRule.php b/src/Methods/NoParameterWithNullDefaultValueRule.php index aed0c583..4ced62f8 100644 --- a/src/Methods/NoParameterWithNullDefaultValueRule.php +++ b/src/Methods/NoParameterWithNullDefaultValueRule.php @@ -62,11 +62,13 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s() in anonymous class has parameter $%s with null as default value.', $methodName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullDefaultValue()->toString()) @@ -83,12 +85,14 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() has parameter $%s with null as default value.', $className, $methodName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithNullDefaultValue()->toString()) diff --git a/src/Methods/NoParameterWithNullableTypeDeclarationRule.php b/src/Methods/NoParameterWithNullableTypeDeclarationRule.php index 1d33d84d..7e11eab2 100644 --- a/src/Methods/NoParameterWithNullableTypeDeclarationRule.php +++ b/src/Methods/NoParameterWithNullableTypeDeclarationRule.php @@ -58,11 +58,13 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s() in anonymous class has parameter $%s with a nullable type declaration.', $methodName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithContainerTypeDeclaration()->toString()) @@ -79,12 +81,14 @@ public function processNode( /** @var string $parameterName */ $parameterName = $variable->name; - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() has parameter $%s with a nullable type declaration.', $className, $methodName, $parameterName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return $ruleErrorBuilder ->identifier(ErrorIdentifier::noParameterWithContainerTypeDeclaration()->toString()) diff --git a/src/Methods/PrivateInFinalClassRule.php b/src/Methods/PrivateInFinalClassRule.php index df8190ed..7b61211a 100644 --- a/src/Methods/PrivateInFinalClassRule.php +++ b/src/Methods/PrivateInFinalClassRule.php @@ -60,11 +60,13 @@ public function processNode( } } - $ruleErrorBuilder = Rules\RuleErrorBuilder::message(\sprintf( + $message = \sprintf( 'Method %s::%s() is protected, but since the containing class is final, it can be private.', $containingClass->getName(), $methodName, - )); + ); + + $ruleErrorBuilder = Rules\RuleErrorBuilder::message($message); return [ $ruleErrorBuilder