diff --git a/Universal/Docs/OOStructures/RequireFinalMethodsInTraitsStandard.xml b/Universal/Docs/FunctionDeclarations/RequireFinalMethodsInTraitsStandard.xml
similarity index 85%
rename from Universal/Docs/OOStructures/RequireFinalMethodsInTraitsStandard.xml
rename to Universal/Docs/FunctionDeclarations/RequireFinalMethodsInTraitsStandard.xml
index b78e6d29..4b2622de 100644
--- a/Universal/Docs/OOStructures/RequireFinalMethodsInTraitsStandard.xml
+++ b/Universal/Docs/FunctionDeclarations/RequireFinalMethodsInTraitsStandard.xml
@@ -6,8 +6,6 @@
diff --git a/Universal/Sniffs/OOStructures/RequireFinalMethodsInTraitsSniff.php b/Universal/Sniffs/FunctionDeclarations/RequireFinalMethodsInTraitsSniff.php
similarity index 83%
rename from Universal/Sniffs/OOStructures/RequireFinalMethodsInTraitsSniff.php
rename to Universal/Sniffs/FunctionDeclarations/RequireFinalMethodsInTraitsSniff.php
index b286a369..da9e2415 100644
--- a/Universal/Sniffs/OOStructures/RequireFinalMethodsInTraitsSniff.php
+++ b/Universal/Sniffs/FunctionDeclarations/RequireFinalMethodsInTraitsSniff.php
@@ -8,7 +8,7 @@
* @link https://github.com/PHPCSStandards/PHPCSExtra
*/
-namespace PHPCSExtra\Universal\Sniffs\OOStructures;
+namespace PHPCSExtra\Universal\Sniffs\FunctionDeclarations;
use PHP_CodeSniffer\Files\File;
use PHP_CodeSniffer\Sniffs\Sniff;
@@ -33,17 +33,6 @@ final class RequireFinalMethodsInTraitsSniff implements Sniff
*/
const METRIC_NAME = 'Non-private method in trait is abstract or final ?';
- /**
- * Whether or not this rule applies to magic methods.
- *
- * Defaults to `false`.
- *
- * @since 1.1.0
- *
- * @var bool
- */
- public $includeMagicMethods = false;
-
/**
* Returns an array of tokens this test wants to listen for.
*
@@ -81,14 +70,6 @@ public function process(File $phpcsFile, $stackPtr)
return;
}
- $methodName = FunctionDeclarations::getName($phpcsFile, $stackPtr);
- if ($this->includeMagicMethods === false
- && FunctionDeclarations::isMagicMethodName($methodName) === true
- ) {
- // Magic methods are excluded. Bow out.
- return;
- }
-
$methodProps = FunctionDeclarations::getProperties($phpcsFile, $stackPtr);
if ($methodProps['scope'] === 'private') {
// Private methods can't be final.
@@ -109,16 +90,26 @@ public function process(File $phpcsFile, $stackPtr)
$phpcsFile->recordMetric($stackPtr, self::METRIC_NAME, 'not abstract, not final');
+ $methodName = FunctionDeclarations::getName($phpcsFile, $stackPtr);
+ $magic = '';
+ $code = 'NonFinalMethodFound';
+ if (FunctionDeclarations::isMagicMethodName($methodName) === true) {
+ // Use separate error code for magic methods.
+ $magic = 'magic ';
+ $code = 'NonFinalMagicMethodFound';
+ }
+
$data = [
$methodProps['scope'],
+ $magic,
$methodName,
ObjectDeclarations::getName($phpcsFile, $scopePtr),
];
$fix = $phpcsFile->addFixableError(
- 'The non-abstract, %s method "%s()" in trait %s should be declared as final.',
+ 'The non-abstract, %s %smethod "%s()" in trait %s should be declared as final.',
$stackPtr,
- 'NonFinalMethodFound',
+ $code,
$data
);
diff --git a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc
similarity index 73%
rename from Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc
rename to Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc
index 773debe8..6c388b05 100644
--- a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc
+++ b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc
@@ -54,25 +54,6 @@ trait FinalMagicMethodsAreNotFlagged {
final public function __unserialize($data) {}
}
-trait MagicMethodsAreNotFlaggedByDefault {
- public function __construct() {}
- public function __destruct() {}
- public function __clone() {}
- public function __debugInfo() {}
- public function __invoke() {}
- public function __get($name) {}
- public function __set($name, $value) {}
- public function __isset($name) {}
- public function __unset($name) {}
- public function __call($name, $arguments) {}
- public static function __callStatic($name, $arguments) {}
- public function __sleep() {}
- public function __toString() {}
- public static function __set_state($properties) {}
- public function __serialize() {}
- public function __unserialize($data) {}
-}
-
/*
* Bad.
@@ -96,8 +77,7 @@ trait FixMe {
/*comment*/ protected function withCommentBeforeKeyword() {}
}
-// phpcs:set Universal.OOStructures.RequireFinalMethodsInTraits includeMagicMethods true
-trait MagicMethodsAreFlaggedOnRequest {
+trait MagicMethodsAreAlsoFlagged {
public function __construct() {}
public function __destruct() {}
public function __clone() {}
@@ -115,6 +95,3 @@ trait MagicMethodsAreFlaggedOnRequest {
public function __serialize() {}
public function __unserialize($data) {}
}
-
-// Reset property to default value.
-// phpcs:set Universal.OOStructures.RequireFinalMethodsInTraits includeMagicMethods false
diff --git a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc.fixed b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc.fixed
similarity index 74%
rename from Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc.fixed
rename to Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc.fixed
index 0fd73365..34173802 100644
--- a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.inc.fixed
+++ b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.inc.fixed
@@ -54,25 +54,6 @@ trait FinalMagicMethodsAreNotFlagged {
final public function __unserialize($data) {}
}
-trait MagicMethodsAreNotFlaggedByDefault {
- public function __construct() {}
- public function __destruct() {}
- public function __clone() {}
- public function __debugInfo() {}
- public function __invoke() {}
- public function __get($name) {}
- public function __set($name, $value) {}
- public function __isset($name) {}
- public function __unset($name) {}
- public function __call($name, $arguments) {}
- public static function __callStatic($name, $arguments) {}
- public function __sleep() {}
- public function __toString() {}
- public static function __set_state($properties) {}
- public function __serialize() {}
- public function __unserialize($data) {}
-}
-
/*
* Bad.
@@ -96,8 +77,7 @@ trait FixMe {
/*comment*/ protected final function withCommentBeforeKeyword() {}
}
-// phpcs:set Universal.OOStructures.RequireFinalMethodsInTraits includeMagicMethods true
-trait MagicMethodsAreFlaggedOnRequest {
+trait MagicMethodsAreAlsoFlagged {
public final function __construct() {}
public final function __destruct() {}
public final function __clone() {}
@@ -115,6 +95,3 @@ trait MagicMethodsAreFlaggedOnRequest {
public final function __serialize() {}
public final function __unserialize($data) {}
}
-
-// Reset property to default value.
-// phpcs:set Universal.OOStructures.RequireFinalMethodsInTraits includeMagicMethods false
diff --git a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.php b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.php
similarity index 58%
rename from Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.php
rename to Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.php
index 71c737b5..168fa928 100644
--- a/Universal/Tests/OOStructures/RequireFinalMethodsInTraitsUnitTest.php
+++ b/Universal/Tests/FunctionDeclarations/RequireFinalMethodsInTraitsUnitTest.php
@@ -8,14 +8,14 @@
* @link https://github.com/PHPCSStandards/PHPCSExtra
*/
-namespace PHPCSExtra\Universal\Tests\OOStructures;
+namespace PHPCSExtra\Universal\Tests\FunctionDeclarations;
use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest;
/**
* Unit test class for the RequireFinalMethodsInTraits sniff.
*
- * @covers PHPCSExtra\Universal\Sniffs\OOStructures\RequireFinalMethodsInTraitsSniff
+ * @covers PHPCSExtra\Universal\Sniffs\FunctionDeclarations\RequireFinalMethodsInTraitsSniff
*
* @since 1.1.0
*/
@@ -30,30 +30,30 @@ final class RequireFinalMethodsInTraitsUnitTest extends AbstractSniffUnitTest
public function getErrorList()
{
return [
- 81 => 1,
- 82 => 1,
- 84 => 1,
- 85 => 1,
- 87 => 1,
- 92 => 1,
- 94 => 1,
- 96 => 1,
- 101 => 1,
- 102 => 1,
- 103 => 1,
- 104 => 1,
- 105 => 1,
- 106 => 1,
- 107 => 1,
- 108 => 1,
- 109 => 1,
- 110 => 1,
- 111 => 1,
- 112 => 1,
- 113 => 1,
- 114 => 1,
- 115 => 1,
- 116 => 1,
+ 62 => 1,
+ 63 => 1,
+ 65 => 1,
+ 66 => 1,
+ 68 => 1,
+ 73 => 1,
+ 75 => 1,
+ 77 => 1,
+ 81 => 1,
+ 82 => 1,
+ 83 => 1,
+ 84 => 1,
+ 85 => 1,
+ 86 => 1,
+ 87 => 1,
+ 88 => 1,
+ 89 => 1,
+ 90 => 1,
+ 91 => 1,
+ 92 => 1,
+ 93 => 1,
+ 94 => 1,
+ 95 => 1,
+ 96 => 1,
];
}