diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
index ac9fc0a0..3d907aa4 100644
--- a/.github/workflows/php.yml
+++ b/.github/workflows/php.yml
@@ -13,15 +13,12 @@ jobs:
fail-fast: false
matrix:
php-version:
- - "7.4"
- - "8.0"
- "8.1"
+ - "8.2"
+ - "8.3"
dependencies:
- "lowest"
- "highest"
- exclude:
- - php-version: "8.1"
- dependencies: "lowest"
name: Tests with PHP ${{ matrix.php-version }} and ${{ matrix.dependencies }} dependencies
steps:
@@ -93,4 +90,4 @@ jobs:
run: composer install
- name: Run rector
- run: vendor/bin/rector process Magento2 Magento2Framework PHP_CodeSniffer --dry-run --autoload-file vendor/squizlabs/php_codesniffer/autoload.php --autoload-file vendor/phpcompatibility/php-compatibility/PHPCSAliases.php
+ run: vendor/bin/rector process Magento2 Magento2Framework PHP_CodeSniffer --dry-run --autoload-file vendor/squizlabs/php_codesniffer/autoload.php --autoload-file vendor/magento/php-compatibility-fork/PHPCSAliases.php
diff --git a/Magento2/Helpers/Assert.php b/Magento2/Helpers/Assert.php
index 95a5160b..a900c1cd 100644
--- a/Magento2/Helpers/Assert.php
+++ b/Magento2/Helpers/Assert.php
@@ -1,8 +1,8 @@
getTokens();
- $commentStartPtr = $phpcsFile->findPrevious(T_DOC_COMMENT_OPEN_TAG, ($stackPtr), 0);
- $commentEndPtr = $phpcsFile->findPrevious(T_DOC_COMMENT_CLOSE_TAG, ($stackPtr), 0);
- if (!$commentStartPtr) {
- $phpcsFile->addError('Comment block is missing', $stackPtr, 'MethodArguments');
+ $commentEndPtr = $stackPtr;
+ $tokensToFind = [
+ \T_SEMICOLON,
+ \T_OPEN_CURLY_BRACKET,
+ \T_CLOSE_CURLY_BRACKET,
+ \T_ATTRIBUTE_END,
+ \T_DOC_COMMENT_CLOSE_TAG
+ ];
+
+ do {
+ $commentEndPtr = $phpcsFile->findPrevious($tokensToFind, $commentEndPtr - 1);
+ if (
+ $commentEndPtr !== false
+ && $tokens[$commentEndPtr]['code'] === \T_ATTRIBUTE_END
+ && isset($tokens[$commentEndPtr]['attribute_opener'])
+ ) {
+ $commentEndPtr = $tokens[$commentEndPtr]['attribute_opener'];
+ }
+ } while ($commentEndPtr !== false && !in_array($tokens[$commentEndPtr]['code'], $tokensToFind, true));
+
+ if ($commentEndPtr === false || $tokens[$commentEndPtr]['code'] !== \T_DOC_COMMENT_CLOSE_TAG) {
+ $phpcsFile->addError('Comment block is missing', $stackPtr, 'NoCommentBlock');
return;
}
+ $commentStartPtr = $tokens[$commentEndPtr]['comment_opener']
+ ?? $phpcsFile->findPrevious(T_DOC_COMMENT_OPEN_TAG, $commentEndPtr - 1);
+
if ($this->PHPDocFormattingValidator->hasDeprecatedWellFormatted($commentStartPtr, $tokens) !== true) {
$phpcsFile->addWarning(
'Motivation behind the added @deprecated tag MUST be explained. '
diff --git a/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php b/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php
index f219c64a..3ad01f94 100644
--- a/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php
+++ b/Magento2/Sniffs/Annotation/MethodArgumentsSniff.php
@@ -1,7 +1,7 @@
PHPDocFormattingValidator->providesMeaning($namePtr, $commentStartPtr, $tokens) !== true) {
- $phpcsFile->addWarning(
+ $fix = $phpcsFile->addFixableWarning(
sprintf(
'%s description must contain meaningful information beyond what its name provides or be removed.',
ucfirst($tokens[$stackPtr]['content'])
@@ -72,6 +74,19 @@ public function process(File $phpcsFile, $stackPtr)
$stackPtr,
'InvalidDescription'
);
+
+ if ($fix) {
+ for ($i = $commentStartPtr; $i <= $commentCloserPtr; $i++) {
+ $phpcsFile->fixer->replaceToken($i, '');
+ }
+
+ if (
+ $tokens[$commentStartPtr - 1]['code'] === T_WHITESPACE
+ && $tokens[$commentCloserPtr + 1]['code'] === T_WHITESPACE
+ ) {
+ $phpcsFile->fixer->replaceToken($commentCloserPtr + 1, '');
+ }
+ }
}
if ($this->PHPDocFormattingValidator->hasDeprecatedWellFormatted($commentStartPtr, $tokens) !== true) {
@@ -105,11 +120,35 @@ private function validateTags(File $phpcsFile, $commentStartPtr, $tokens)
}
if (in_array($tokens[$i]['content'], $this->forbiddenTags) === true) {
- $phpcsFile->addWarning(
+ $fix = $phpcsFile->addFixableWarning(
sprintf('Tag %s MUST NOT be used.', $tokens[$i]['content']),
$i,
'ForbiddenTags'
);
+
+ if ($fix) {
+ for ($j = $i - 1; $j > $commentStartPtr; $j--) {
+ if (!in_array($tokens[$j]['code'], [T_DOC_COMMENT_STAR, T_DOC_COMMENT_WHITESPACE], true)) {
+ break;
+ }
+
+ if ($tokens[$j]['code'] === T_DOC_COMMENT_WHITESPACE && $tokens[$j]['content'] === "\n") {
+ break;
+ }
+
+ $phpcsFile->fixer->replaceToken($j, '');
+ }
+
+ $phpcsFile->fixer->replaceToken($i, '');
+
+ for ($j = $i + 1; $j < $commentCloserPtr; $j++) {
+ $phpcsFile->fixer->replaceToken($j, '');
+
+ if ($tokens[$j]['code'] === T_DOC_COMMENT_WHITESPACE && $tokens[$j]['content'] === "\n") {
+ break;
+ }
+ }
+ }
}
}
diff --git a/Magento2/Sniffs/Commenting/ClassPropertyPHPDocFormattingSniff.php b/Magento2/Sniffs/Commenting/ClassPropertyPHPDocFormattingSniff.php
index 61aa29d2..27015a37 100644
--- a/Magento2/Sniffs/Commenting/ClassPropertyPHPDocFormattingSniff.php
+++ b/Magento2/Sniffs/Commenting/ClassPropertyPHPDocFormattingSniff.php
@@ -1,7 +1,7 @@
null,
'^pathinfo$' => 'Magento\Framework\Filesystem\Io\File::getPathInfo',
'^pcntl_.*$' => null,
+ '^posix_isatty$' => 'stream_isatty',
'^posix_.*$' => null,
'^pfpro_.*$' => null,
'^pfsockopen$' => null,
diff --git a/Magento2/Sniffs/Functions/FunctionsDeprecatedWithoutArgumentSniff.php b/Magento2/Sniffs/Functions/FunctionsDeprecatedWithoutArgumentSniff.php
index e410c4d9..3400a482 100644
--- a/Magento2/Sniffs/Functions/FunctionsDeprecatedWithoutArgumentSniff.php
+++ b/Magento2/Sniffs/Functions/FunctionsDeprecatedWithoutArgumentSniff.php
@@ -1,7 +1,7 @@
true,
+ 'escapeHtml' => true,
+ 'escapeHtmlAttr' => true,
+ 'escapeJs' => true,
+ 'escapeJsQuote' => true,
+ 'escapeQuote' => true,
+ 'escapeUrl' => true,
+ 'escapeXssInUrl' => true,
+ ];
+
+ /**
+ * @inheritDoc
+ */
+ public function register()
+ {
+ return [
+ T_OBJECT_OPERATOR,
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function process(File $phpcsFile, $stackPtr)
+ {
+ $tokens = $phpcsFile->getTokens();
+
+ if ($stackPtr <= 1 || !isset($tokens[$stackPtr + 2])) {
+ return;
+ }
+
+ $objectPtr = $stackPtr - 1;
+ if ($tokens[$objectPtr]['code'] !== T_VARIABLE) {
+ $objectPtr = $phpcsFile->findPrevious(Tokens::$emptyTokens, $objectPtr, null, true);
+
+ if (!$objectPtr) {
+ return;
+ }
+ }
+
+ if (
+ $tokens[$objectPtr]['code'] !== T_VARIABLE
+ || $tokens[$objectPtr]['content'] !== '$block'
+ ) {
+ return;
+ }
+
+ $methodPtr = $stackPtr + 1;
+ if ($tokens[$methodPtr]['code'] !== T_STRING) {
+ $methodPtr = $phpcsFile->findNext(Tokens::$emptyTokens, $methodPtr, null, true);
+
+ if (!$methodPtr) {
+ return;
+ }
+ }
+
+ if (
+ $tokens[$methodPtr]['code'] !== T_STRING
+ || !isset(self::ESCAPER_METHODS[$tokens[$methodPtr]['content']])
+ ) {
+ return;
+ }
+
+ $openParenPtr = $methodPtr + 1;
+ if ($tokens[$openParenPtr]['code'] !== T_OPEN_PARENTHESIS) {
+ $openParenPtr = $phpcsFile->findNext(Tokens::$emptyTokens, $openParenPtr, null, true);
+
+ if (!$openParenPtr) {
+ return;
+ }
+ }
+
+ if ($tokens[$openParenPtr]['code'] !== T_OPEN_PARENTHESIS) {
+ return;
+ }
+
+ $fix = $phpcsFile->addFixableWarning(
+ 'Using %s on $block is deprecated. Please use equivalent method on $escaper',
+ $methodPtr,
+ 'Found',
+ [
+ $tokens[$methodPtr]['content'], // method name
+ ]
+ );
+
+ if ($fix) {
+ $phpcsFile->fixer->replaceToken($objectPtr, '$escaper');
+ }
+ }
+}
diff --git a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php
index 09dbedfb..7ade771c 100644
--- a/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php
+++ b/Magento2/Sniffs/Legacy/InstallUpgradeSniff.php
@@ -1,7 +1,7 @@
tokens[$stackPtr]['code'] === T_ECHO) {
- $startOfStatement = $this->file->findPrevious(T_OPEN_TAG, $stackPtr);
+ $startOfStatement = $this->file->findPrevious([T_OPEN_TAG, T_SEMICOLON], $stackPtr);
return $this->file->findPrevious(T_COMMENT, $stackPtr, $startOfStatement);
}
if ($this->tokens[$stackPtr]['code'] === T_OPEN_TAG_WITH_ECHO) {
- $endOfStatement = $this->file->findNext(T_CLOSE_TAG, $stackPtr);
+ $endOfStatement = $this->file->findNext([T_CLOSE_TAG, T_SEMICOLON], $stackPtr);
return $this->file->findNext(T_COMMENT, $stackPtr, $endOfStatement);
}
return false;
diff --git a/Magento2/Sniffs/Strings/ExecutableRegExSniff.php b/Magento2/Sniffs/Strings/ExecutableRegExSniff.php
index 179356eb..7a7bd992 100644
--- a/Magento2/Sniffs/Strings/ExecutableRegExSniff.php
+++ b/Magento2/Sniffs/Strings/ExecutableRegExSniff.php
@@ -1,7 +1,7 @@
1,
10 => 1,
18 => 1,
30 => 1,
@@ -31,13 +32,18 @@ public function getErrorList()
185 => 1,
227 => 1,
235 => 1,
+ 261 => 1,
268 => 2,
269 => 1,
277 => 1,
278 => 1,
288 => 1,
289 => 1,
- 298 => 1
+ 298 => 1,
+ 396 => 1,
+ 407 => 1,
+ 418 => 1,
+ 424 => 1,
];
}
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
index 4ffbea81..9c6af406 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
@@ -179,3 +179,10 @@ class AlsoDeprecatedButHandler
}
+/**
+ * @package this tag should not be used
+ */
+class OnlyUselessCommentContent
+{
+
+}
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc.fixed b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc.fixed
new file mode 100644
index 00000000..33cbc544
--- /dev/null
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc.fixed
@@ -0,0 +1,165 @@
+ 1,
109 => 1,
118 => 1,
- 127 => 1
+ 127 => 1,
+ 183 => 1,
];
}
}
diff --git a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
index cde71269..aca8a73b 100644
--- a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
+++ b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
@@ -200,4 +200,14 @@ class correctlyFormattedClassMemberDocBlock
* @deprecated This property will be removed in version 1.0.0 without replacement
*/
protected string $deprecatedWithKeyword;
+
+ /**
+ * @var string
+ */
+ protected readonly string $readOnlyString;
+
+ /**
+ * @var int
+ */
+ protected readonly int $readOnlyInteger;
}
diff --git a/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc
new file mode 100644
index 00000000..260f0c93
--- /dev/null
+++ b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc
@@ -0,0 +1,87 @@
+
+
+
+ This unescaped output is fine here; other sniffs will complain about it though.
+
+ getSomeString(); ?>
+ = $block->getSomeString(); ?>
+ = /** @noEscape */ $block->getSomeString(); ?>
+ = /** @escapeNotVerified */ $block->getSomeString(); ?>
+
+
+
+ These should be using equivalent methods on the `$escaper` class, not the `$block` class.
+
+ Note that I couldn't find any use of this method in any templates within Magento.
+ = $block->escapeCss($block->getSomeString()); ?>
+
+ = $block->escapeHtml(__($block->getSomeString())) ?>
+ = $block->escapeHtml(__($block->getSomeString())); ?>
+ = $block->escapeHtml(__($block->getSomeString()), ['strong', 'em', 'span']) ?>
+
+
+
+
+
+
+
+ The only example of this method being used was in a block class, rather than a template.
+ getItems() as $item) {
+ $item['sku'] = $block->escapeJsQuote($item['sku']);
+ }
+ ?>
+
+ The only example of this method being used was in a block class, rather than a template.
+ = $block->escapeQuote(__($block->getData('welcome'))); ?>
+
+ link text
+
+ Note that I couldn't find any use of this method in any templates within Magento.
+ = $block->escapeXssInUrl($block->getSomeString()); ?>
+
+
+
+ These are edge cases for formatting differences
+
+ escapeHtml('');
+ $block ->escapeHtml('');
+ $block-> escapeHtml('');
+ $block
+ ->escapeHtml('');
+ $block
+
+ ->escapeHtml('');
+ $block->
+ escapeHtml('');
+ $block-> // comment
+ escapeHtml('');
+ $block /* comment */
+ ->escapeHtml('');
+
+ $block /* comment */ -> /* comment */ escapeHtml('');
+ ?>
+
+
+
+ These close-matches shouldn't be flagged by this sniff.
+
+ = $block->escapeHTML(__($block->getSomeString())) ?>
+ = $block->escapeHtmlString(__($block->getSomeString())) ?>
+ = $block->escapeHtmlAttribute($block->getSomeString()) ?>
+ = $block->escapeCSS($block->getSomeString()); ?>
+ = $block->escapeJS($block->getData('html_id')) ?>
+ = $block->escapeJavaScript($block->getData('html_id')) ?>
+ = $block->escapeQuotes(__($block->getData('welcome'))); ?>
+ = $block->escapeURL($block->getUrl('adminhtml/notification/index')) ?>
+
diff --git a/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc.fixed b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc.fixed
new file mode 100644
index 00000000..80c4f22c
--- /dev/null
+++ b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.inc.fixed
@@ -0,0 +1,87 @@
+
+
+
+ This unescaped output is fine here; other sniffs will complain about it though.
+
+ getSomeString(); ?>
+ = $block->getSomeString(); ?>
+ = /** @noEscape */ $block->getSomeString(); ?>
+ = /** @escapeNotVerified */ $block->getSomeString(); ?>
+
+
+
+ These should be using equivalent methods on the `$escaper` class, not the `$block` class.
+
+ Note that I couldn't find any use of this method in any templates within Magento.
+ = $escaper->escapeCss($block->getSomeString()); ?>
+
+ = $escaper->escapeHtml(__($block->getSomeString())) ?>
+ = $escaper->escapeHtml(__($block->getSomeString())); ?>
+ = $escaper->escapeHtml(__($block->getSomeString()), ['strong', 'em', 'span']) ?>
+
+
+
+
+
+
+
+ The only example of this method being used was in a block class, rather than a template.
+ getItems() as $item) {
+ $item['sku'] = $escaper->escapeJsQuote($item['sku']);
+ }
+ ?>
+
+ The only example of this method being used was in a block class, rather than a template.
+ = $escaper->escapeQuote(__($block->getData('welcome'))); ?>
+
+ link text
+
+ Note that I couldn't find any use of this method in any templates within Magento.
+ = $escaper->escapeXssInUrl($block->getSomeString()); ?>
+
+
+
+ These are edge cases for formatting differences
+
+ escapeHtml('');
+ $escaper ->escapeHtml('');
+ $escaper-> escapeHtml('');
+ $escaper
+ ->escapeHtml('');
+ $escaper
+
+ ->escapeHtml('');
+ $escaper->
+ escapeHtml('');
+ $escaper-> // comment
+ escapeHtml('');
+ $escaper /* comment */
+ ->escapeHtml('');
+
+ $escaper /* comment */ -> /* comment */ escapeHtml('');
+ ?>
+
+
+
+ These close-matches shouldn't be flagged by this sniff.
+
+ = $block->escapeHTML(__($block->getSomeString())) ?>
+ = $block->escapeHtmlString(__($block->getSomeString())) ?>
+ = $block->escapeHtmlAttribute($block->getSomeString()) ?>
+ = $block->escapeCSS($block->getSomeString()); ?>
+ = $block->escapeJS($block->getData('html_id')) ?>
+ = $block->escapeJavaScript($block->getData('html_id')) ?>
+ = $block->escapeQuotes(__($block->getData('welcome'))); ?>
+ = $block->escapeURL($block->getUrl('adminhtml/notification/index')) ?>
+
diff --git a/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.php b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.php
new file mode 100644
index 00000000..feead3d1
--- /dev/null
+++ b/Magento2/Tests/Legacy/EscapeMethodsOnBlockClassUnitTest.php
@@ -0,0 +1,45 @@
+ 1,
+ 21 => 1,
+ 22 => 1,
+ 23 => 1,
+ 25 => 1,
+ 26 => 1,
+ 27 => 1,
+ 31 => 1,
+ 40 => 1,
+ 45 => 1,
+ 47 => 1,
+ 50 => 1,
+ 57 => 1,
+ 58 => 1,
+ 59 => 1,
+ 61 => 1,
+ 64 => 1,
+ 66 => 1,
+ 68 => 1,
+ 70 => 1,
+ 72 => 1,
+ ];
+ }
+}
diff --git a/Magento2/ruleset.xml b/Magento2/ruleset.xml
index da1465a9..119a757c 100644
--- a/Magento2/ruleset.xml
+++ b/Magento2/ruleset.xml
@@ -94,6 +94,10 @@
10
error
+
+ 10
+ error
+
10
error
@@ -754,6 +758,8 @@
*/Test/*
*Test.php
*/PHPCSUtils/*
+
+
@@ -761,11 +767,11 @@
-
+
-
+
diff --git a/Magento2Framework/Sniffs/Header/CopyrightAnotherExtensionsFilesSniff.php b/Magento2Framework/Sniffs/Header/CopyrightAnotherExtensionsFilesSniff.php
index 54331910..7d66fab1 100644
--- a/Magento2Framework/Sniffs/Header/CopyrightAnotherExtensionsFilesSniff.php
+++ b/Magento2Framework/Sniffs/Header/CopyrightAnotherExtensionsFilesSniff.php
@@ -1,7 +1,7 @@
getTokensAsString($stackPtr, count($phpcsFile->getTokens()));
+ // @phpcs:ignore Magento2.Functions.DiscouragedFunction.Discouraged
+ $content = file_get_contents($phpcsFile->getFilename());
- if (
- strpos($fileText, self::COPYRIGHT_MAGENTO_TEXT) !== false
- || preg_match(self::COPYRIGHT_ADOBE, $fileText)
- ) {
- return;
+ if ($this->isCopyrightYearValid($content) === false) {
+ $phpcsFile->addWarningOnLine(
+ 'Copyright is missing or Copyright content/year is not valid',
+ null,
+ self::WARNING_CODE
+ );
}
-
- $phpcsFile->addWarningOnLine(
- 'Copyright is missing or has wrong format',
- null,
- self::WARNING_CODE
- );
}
}
diff --git a/Magento2Framework/Sniffs/Header/CopyrightGraphQLSniff.php b/Magento2Framework/Sniffs/Header/CopyrightGraphQLSniff.php
index 1e488e69..22e8615f 100644
--- a/Magento2Framework/Sniffs/Header/CopyrightGraphQLSniff.php
+++ b/Magento2Framework/Sniffs/Header/CopyrightGraphQLSniff.php
@@ -1,7 +1,7 @@
getFilename());
- if (strpos($content, self::COPYRIGHT_MAGENTO_TEXT) !== false || preg_match(self::COPYRIGHT_ADOBE, $content)) {
- return;
+ if ($this->isCopyrightYearValid($content) === false) {
+ $phpcsFile->addWarningOnLine(
+ 'Copyright is missing or Copyright content/year is not valid',
+ null,
+ self::WARNING_CODE
+ );
}
-
- $phpcsFile->addWarningOnLine(
- 'Copyright is missing or has wrong format',
- null,
- self::WARNING_CODE
- );
}
}
diff --git a/Magento2Framework/Sniffs/Header/CopyrightSniff.php b/Magento2Framework/Sniffs/Header/CopyrightSniff.php
index 81442207..eef4d578 100644
--- a/Magento2Framework/Sniffs/Header/CopyrightSniff.php
+++ b/Magento2Framework/Sniffs/Header/CopyrightSniff.php
@@ -1,7 +1,7 @@
getTokens()[$positionComment]['content'];
- $adobeCopyrightFound = preg_match(self::COPYRIGHT_ADOBE, $content);
+ // @phpcs:ignore Magento2.Functions.DiscouragedFunction.Discouraged
+ $content = file_get_contents($phpcsFile->getFilename());
- if (strpos($content, self::COPYRIGHT_MAGENTO_TEXT) !== false || $adobeCopyrightFound) {
- return;
+ if ($this->isCopyrightYearValid($content) === false) {
+ $phpcsFile->addWarningOnLine(
+ 'Copyright is missing or Copyright content/year is not valid',
+ null,
+ self::WARNING_CODE
+ );
}
-
- $phpcsFile->addWarningOnLine(
- 'Copyright is missing or has wrong format',
- $phpcsFile->getTokens()[$positionComment]['line'],
- self::WARNING_CODE
- );
}
}
diff --git a/Magento2Framework/Sniffs/Header/CopyrightValidation.php b/Magento2Framework/Sniffs/Header/CopyrightValidation.php
new file mode 100644
index 00000000..589e26aa
--- /dev/null
+++ b/Magento2Framework/Sniffs/Header/CopyrightValidation.php
@@ -0,0 +1,33 @@
+= 2010 && $year <= date("Y")) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/Magento2Framework/Sniffs/Header/LicenseSniff.php b/Magento2Framework/Sniffs/Header/LicenseSniff.php
index cf7a5479..f5562421 100644
--- a/Magento2Framework/Sniffs/Header/LicenseSniff.php
+++ b/Magento2Framework/Sniffs/Header/LicenseSniff.php
@@ -1,7 +1,7 @@
1
+ null => 1
];
}
diff --git a/Magento2Framework/Tests/Header/CopyrightUnitTest.4.inc b/Magento2Framework/Tests/Header/CopyrightUnitTest.4.inc
index 1cadcad0..e785253e 100644
--- a/Magento2Framework/Tests/Header/CopyrightUnitTest.4.inc
+++ b/Magento2Framework/Tests/Header/CopyrightUnitTest.4.inc
@@ -1,7 +1,7 @@
1,
];
}
+
if ($testFile === 'CopyrightUnitTest.2.inc' || $testFile === 'CopyrightUnitTest.3.inc') {
return [
- 3 => 1,
+ null => 1,
];
}
diff --git a/Magento2Framework/ruleset.xml b/Magento2Framework/ruleset.xml
index ecdb92da..e827ff13 100644
--- a/Magento2Framework/ruleset.xml
+++ b/Magento2Framework/ruleset.xml
@@ -4,6 +4,8 @@
+
+
5
warning
diff --git a/README.md b/README.md
index 3cfd6c0a..8ca973e1 100644
--- a/README.md
+++ b/README.md
@@ -113,7 +113,7 @@ npm run eslint -- path/to/analyze
```
### RECTOR PHP
-From `magento-condign-standard` project, you can execute rector php as follows:
+From `magento-coding-standard` project, you can execute rector php as follows:
```bash
vendor/bin/rector process Magento2 Magento2Framework PHP_CodeSniffer --dry-run --autoload-file vendor/squizlabs/php_codesniffer/autoload.php
```
diff --git a/composer.json b/composer.json
index e4c0c17b..c80111c5 100644
--- a/composer.json
+++ b/composer.json
@@ -6,20 +6,19 @@
"AFL-3.0"
],
"type": "phpcodesniffer-standard",
- "version": "31",
+ "version": "35",
"require": {
- "php": ">=7.4",
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0",
"webonyx/graphql-php": "^15.0",
"ext-simplexml": "*",
"ext-dom": "*",
- "phpcompatibility/php-compatibility": "^9.3",
"squizlabs/php_codesniffer": "^3.6.1",
- "rector/rector": "^0.15.10",
- "symfony/polyfill": "^1.16",
- "phpcsstandards/phpcsutils": "^1.0.5"
+ "rector/rector": "^1.2.4",
+ "phpcsstandards/phpcsutils": "^1.0.5",
+ "magento/php-compatibility-fork": "^0.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.5.8",
+ "phpunit/phpunit": "^9.5.10",
"yoast/phpunit-polyfills": "^1.0"
},
"autoload-dev": {
@@ -37,8 +36,8 @@
}
},
"scripts": {
- "post-install-cmd": "vendor/bin/phpcs --config-set installed_paths ../../..,../../phpcompatibility/php-compatibility/PHPCompatibility",
- "post-update-cmd": "vendor/bin/phpcs --config-set installed_paths ../../..,../../phpcompatibility/php-compatibility/PHPCompatibility"
+ "post-install-cmd": "vendor/bin/phpcs --config-set installed_paths ../../..,../../magento/php-compatibility-fork/PHPCompatibility",
+ "post-update-cmd": "vendor/bin/phpcs --config-set installed_paths ../../..,../../magento/php-compatibility-fork/PHPCompatibility"
},
"config": {
"allow-plugins": {
diff --git a/composer.lock b/composer.lock
index eb5742d8..43e60b65 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "005e2882d6bfb6ebf35f0acfa890efac",
+ "content-hash": "e2b70ce9c22c7b443187cd24724bcf7d",
"packages": [
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
@@ -85,31 +85,37 @@
"time": "2023-01-05T11:28:13+00:00"
},
{
- "name": "phpcompatibility/php-compatibility",
- "version": "9.3.5",
+ "name": "magento/php-compatibility-fork",
+ "version": "v0.1.0",
"source": {
"type": "git",
- "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
+ "url": "https://github.com/magento/PHPCompatibilityFork.git",
+ "reference": "1cf031c2a68e3e52e460c5690ed8d1d6d45f4653"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
+ "url": "https://api.github.com/repos/magento/PHPCompatibilityFork/zipball/1cf031c2a68e3e52e460c5690ed8d1d6d45f4653",
+ "reference": "1cf031c2a68e3e52e460c5690ed8d1d6d45f4653",
"shasum": ""
},
"require": {
- "php": ">=5.3",
- "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
+ "php": ">=5.4",
+ "phpcsstandards/phpcsutils": "^1.0.5",
+ "squizlabs/php_codesniffer": "^3.7.1"
},
- "conflict": {
- "squizlabs/php_codesniffer": "2.6.2"
+ "replace": {
+ "phpcompatibility/php-compatibility": "*",
+ "wimg/php-compatibility": "*"
},
"require-dev": {
- "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcsstandards/phpcsdevcs": "^1.1.3",
+ "phpcsstandards/phpcsdevtools": "^1.2.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.1.0",
+ "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0"
},
"suggest": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
},
"type": "phpcodesniffer-standard",
@@ -133,45 +139,45 @@
"homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
}
],
- "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
+ "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility. This is a fork of phpcompatibility/php-compatibility",
"homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
"keywords": [
"compatibility",
"phpcs",
- "standards"
+ "standards",
+ "static analysis"
],
"support": {
"issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
"source": "https://github.com/PHPCompatibility/PHPCompatibility"
},
- "time": "2019-12-27T09:44:58+00:00"
+ "time": "2023-11-29T22:34:17+00:00"
},
{
"name": "phpcsstandards/phpcsutils",
- "version": "1.0.5",
+ "version": "1.0.9",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHPCSUtils.git",
- "reference": "0cfef5193e68e8ff179333d8ae937db62939b656"
+ "reference": "908247bc65010c7b7541a9551e002db12e9dae70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/0cfef5193e68e8ff179333d8ae937db62939b656",
- "reference": "0cfef5193e68e8ff179333d8ae937db62939b656",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/908247bc65010c7b7541a9551e002db12e9dae70",
+ "reference": "908247bc65010c7b7541a9551e002db12e9dae70",
"shasum": ""
},
"require": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0",
"php": ">=5.4",
- "squizlabs/php_codesniffer": "^3.7.1 || 4.0.x-dev@dev"
+ "squizlabs/php_codesniffer": "^3.8.0 || 4.0.x-dev@dev"
},
"require-dev": {
"ext-filter": "*",
"php-parallel-lint/php-console-highlighter": "^1.0",
"php-parallel-lint/php-parallel-lint": "^1.3.2",
- "phpcsstandards/phpcsdevcs": "^1.1.3",
- "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3",
- "yoast/phpunit-polyfills": "^1.0.1"
+ "phpcsstandards/phpcsdevcs": "^1.1.6",
+ "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0"
},
"type": "phpcodesniffer-standard",
"extra": {
@@ -216,22 +222,37 @@
"support": {
"docs": "https://phpcsutils.com/",
"issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues",
+ "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy",
"source": "https://github.com/PHPCSStandards/PHPCSUtils"
},
- "time": "2023-04-17T16:27:27+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2023-12-08T14:50:00+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "1.9.14",
+ "version": "1.12.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "e5fcc96289cf737304286a9b505fbed091f02e58"
+ "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58",
- "reference": "e5fcc96289cf737304286a9b505fbed091f02e58",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1",
+ "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1",
"shasum": ""
},
"require": {
@@ -260,8 +281,11 @@
"static analysis"
],
"support": {
+ "docs": "https://phpstan.org/user-guide/getting-started",
+ "forum": "https://github.com/phpstan/phpstan/discussions",
"issues": "https://github.com/phpstan/phpstan/issues",
- "source": "https://github.com/phpstan/phpstan/tree/1.9.14"
+ "security": "https://github.com/phpstan/phpstan/security/policy",
+ "source": "https://github.com/phpstan/phpstan-src"
},
"funding": [
{
@@ -271,48 +295,41 @@
{
"url": "https://github.com/phpstan",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
}
],
- "time": "2023-01-19T10:47:09+00:00"
+ "time": "2024-09-05T16:09:28+00:00"
},
{
"name": "rector/rector",
- "version": "0.15.10",
+ "version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "000bfb6f7974449399f39e1a210458395b75c887"
+ "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/000bfb6f7974449399f39e1a210458395b75c887",
- "reference": "000bfb6f7974449399f39e1a210458395b75c887",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/42a4aa23b48b4cfc8ebfeac2b570364e27744381",
+ "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.9.7"
+ "phpstan/phpstan": "^1.11.11"
},
"conflict": {
"rector/rector-doctrine": "*",
"rector/rector-downgrade-php": "*",
- "rector/rector-php-parser": "*",
"rector/rector-phpunit": "*",
"rector/rector-symfony": "*"
},
+ "suggest": {
+ "ext-dom": "To manipulate phpunit.xml via the custom-rule command"
+ },
"bin": [
"bin/rector"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "0.14-dev"
- }
- },
"autoload": {
"files": [
"bootstrap.php"
@@ -323,9 +340,15 @@
"MIT"
],
"description": "Instant Upgrade and Automated Refactoring of any PHP code",
+ "keywords": [
+ "automation",
+ "dev",
+ "migration",
+ "refactoring"
+ ],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.15.10"
+ "source": "https://github.com/rectorphp/rector/tree/1.2.4"
},
"funding": [
{
@@ -333,20 +356,20 @@
"type": "github"
}
],
- "time": "2023-01-21T14:30:16+00:00"
+ "time": "2024-08-23T09:03:01+00:00"
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.7.1",
+ "version": "3.8.0",
"source": {
"type": "git",
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
+ "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+ "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
- "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7",
+ "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7",
"shasum": ""
},
"require": {
@@ -356,7 +379,7 @@
"php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
},
"bin": [
"bin/phpcs",
@@ -375,151 +398,58 @@
"authors": [
{
"name": "Greg Sherwood",
- "role": "lead"
- }
- ],
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
- "keywords": [
- "phpcs",
- "standards"
- ],
- "support": {
- "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
- "source": "https://github.com/squizlabs/PHP_CodeSniffer",
- "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
- },
- "time": "2022-06-18T07:21:10+00:00"
- },
- {
- "name": "symfony/polyfill",
- "version": "v1.27.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill.git",
- "reference": "b78222a273aac3e5bab6358bf499d7f1fb88e48b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill/zipball/b78222a273aac3e5bab6358bf499d7f1fb88e48b",
- "reference": "b78222a273aac3e5bab6358bf499d7f1fb88e48b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "replace": {
- "symfony/polyfill-apcu": "self.version",
- "symfony/polyfill-ctype": "self.version",
- "symfony/polyfill-iconv": "self.version",
- "symfony/polyfill-intl-grapheme": "self.version",
- "symfony/polyfill-intl-icu": "self.version",
- "symfony/polyfill-intl-idn": "self.version",
- "symfony/polyfill-intl-messageformatter": "self.version",
- "symfony/polyfill-intl-normalizer": "self.version",
- "symfony/polyfill-mbstring": "self.version",
- "symfony/polyfill-php72": "self.version",
- "symfony/polyfill-php73": "self.version",
- "symfony/polyfill-php74": "self.version",
- "symfony/polyfill-php80": "self.version",
- "symfony/polyfill-php81": "self.version",
- "symfony/polyfill-php82": "self.version",
- "symfony/polyfill-php83": "self.version",
- "symfony/polyfill-util": "self.version",
- "symfony/polyfill-uuid": "self.version",
- "symfony/polyfill-xml": "self.version"
- },
- "require-dev": {
- "symfony/intl": "^4.4|^5.0|^6.0",
- "symfony/phpunit-bridge": "^5.3|^6.0",
- "symfony/var-dumper": "^4.4|^5.1|^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- }
- },
- "autoload": {
- "files": [
- "src/bootstrap.php",
- "src/Apcu/bootstrap.php",
- "src/Ctype/bootstrap.php",
- "src/Uuid/bootstrap.php",
- "src/Iconv/bootstrap.php",
- "src/Intl/Grapheme/bootstrap.php",
- "src/Intl/Idn/bootstrap.php",
- "src/Intl/Icu/bootstrap.php",
- "src/Intl/MessageFormatter/bootstrap.php",
- "src/Intl/Normalizer/bootstrap.php",
- "src/Mbstring/bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\": "src/"
+ "role": "Former lead"
},
- "classmap": [
- "src/Intl/Icu/Resources/stubs",
- "src/Intl/MessageFormatter/Resources/stubs",
- "src/Intl/Normalizer/Resources/stubs",
- "src/Php82/Resources/stubs",
- "src/Php80/Resources/stubs",
- "src/Php73/Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Juliette Reinders Folmer",
+ "role": "Current lead"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
- "description": "Symfony polyfills backporting features to lower PHP versions",
- "homepage": "https://symfony.com",
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
- "compat",
- "compatibility",
- "polyfill",
- "shim"
+ "phpcs",
+ "standards",
+ "static analysis"
],
"support": {
- "issues": "https://github.com/symfony/polyfill/issues",
- "source": "https://github.com/symfony/polyfill/tree/v1.27.0"
+ "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+ "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+ "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
},
{
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/jrfnl",
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
}
],
- "time": "2022-11-10T10:11:03+00:00"
+ "time": "2023-12-08T12:32:31+00:00"
},
{
"name": "webonyx/graphql-php",
- "version": "v15.0.0",
+ "version": "v15.8.1",
"source": {
"type": "git",
"url": "https://github.com/webonyx/graphql-php.git",
- "reference": "dc754edf765479644a82d96105bd2979530d7f8d"
+ "reference": "575ac95f13adfb38219a748572355385c101fdf7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/dc754edf765479644a82d96105bd2979530d7f8d",
- "reference": "dc754edf765479644a82d96105bd2979530d7f8d",
+ "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/575ac95f13adfb38219a748572355385c101fdf7",
+ "reference": "575ac95f13adfb38219a748572355385c101fdf7",
"shasum": ""
},
"require": {
@@ -529,24 +459,28 @@
},
"require-dev": {
"amphp/amp": "^2.6",
- "dms/phpunit-arraysubset-asserts": "^0.4",
+ "amphp/http-server": "^2.1",
+ "dms/phpunit-arraysubset-asserts": "dev-master",
"ergebnis/composer-normalize": "^2.28",
- "mll-lab/php-cs-fixer-config": "^4.4",
+ "friendsofphp/php-cs-fixer": "3.30.0",
+ "mll-lab/php-cs-fixer-config": "^5",
"nyholm/psr7": "^1.5",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "1.9.7",
- "phpstan/phpstan-phpunit": "1.3.3",
- "phpstan/phpstan-strict-rules": "1.4.4",
- "phpunit/phpunit": "^9.5",
- "psr/http-message": "^1",
+ "phpstan/phpstan": "1.10.47",
+ "phpstan/phpstan-phpunit": "1.3.15",
+ "phpstan/phpstan-strict-rules": "1.5.2",
+ "phpunit/phpunit": "^9.5 || ^10",
+ "psr/http-message": "^1 || ^2",
"react/http": "^1.6",
"react/promise": "^2.9",
+ "rector/rector": "^0.18",
"symfony/polyfill-php81": "^1.23",
- "symfony/var-exporter": "^5 || ^6",
- "thecodingmachine/safe": "^1.3"
+ "symfony/var-exporter": "^5 || ^6 || ^7",
+ "thecodingmachine/safe": "^1.3 || ^2"
},
"suggest": {
+ "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform",
"psr/http-message": "To use standard GraphQL server",
"react/promise": "To leverage async resolving on React PHP platform"
},
@@ -568,7 +502,7 @@
],
"support": {
"issues": "https://github.com/webonyx/graphql-php/issues",
- "source": "https://github.com/webonyx/graphql-php/tree/v15.0.0"
+ "source": "https://github.com/webonyx/graphql-php/tree/v15.8.1"
},
"funding": [
{
@@ -576,36 +510,36 @@
"type": "open_collective"
}
],
- "time": "2023-01-06T12:18:04+00:00"
+ "time": "2023-12-05T17:23:35+00:00"
}
],
"packages-dev": [
{
"name": "doctrine/instantiator",
- "version": "1.4.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
+ "doctrine/coding-standard": "^11",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.16 || ^1",
- "phpstan/phpstan": "^1.4",
- "phpstan/phpstan-phpunit": "^1",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.22"
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^1.9.4",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5.27",
+ "vimeo/psalm": "^5.4"
},
"type": "library",
"autoload": {
@@ -632,7 +566,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
+ "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
},
"funding": [
{
@@ -648,20 +582,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T08:28:38+00:00"
+ "time": "2022-12-30T00:23:10+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.0",
+ "version": "1.11.1",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
- "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"shasum": ""
},
"require": {
@@ -699,7 +633,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
},
"funding": [
{
@@ -707,20 +641,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T13:19:32+00:00"
+ "time": "2023-03-08T13:26:56+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.15.2",
+ "version": "v4.18.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc"
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
- "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"shasum": ""
},
"require": {
@@ -761,9 +695,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
},
- "time": "2022-11-12T15:38:23+00:00"
+ "time": "2023-12-10T21:03:43+00:00"
},
{
"name": "phar-io/manifest",
@@ -878,23 +812,23 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.20",
+ "version": "9.2.29",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "af7463c955007de36db0c5e26d03e2f933c2e980"
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/af7463c955007de36db0c5e26d03e2f933c2e980",
- "reference": "af7463c955007de36db0c5e26d03e2f933c2e980",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.14",
+ "nikic/php-parser": "^4.15",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -909,8 +843,8 @@
"phpunit/phpunit": "^9.3"
},
"suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
+ "ext-pcov": "PHP extension that provides line coverage",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"type": "library",
"extra": {
@@ -943,7 +877,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.20"
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
},
"funding": [
{
@@ -951,7 +886,7 @@
"type": "github"
}
],
- "time": "2022-12-13T07:49:28+00:00"
+ "time": "2023-09-19T04:57:46+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -1196,20 +1131,20 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.27",
+ "version": "9.6.15",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38"
+ "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38",
- "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1",
+ "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1",
+ "doctrine/instantiator": "^1.3.1 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -1220,7 +1155,7 @@
"phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
- "phpunit/php-code-coverage": "^9.2.13",
+ "phpunit/php-code-coverage": "^9.2.28",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
@@ -1238,8 +1173,8 @@
"sebastian/version": "^3.0.2"
},
"suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
+ "ext-soap": "To be able to generate mocks based on WSDL files",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"bin": [
"phpunit"
@@ -1247,7 +1182,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.5-dev"
+ "dev-master": "9.6-dev"
}
},
"autoload": {
@@ -1278,7 +1213,8 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27"
+ "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15"
},
"funding": [
{
@@ -1294,7 +1230,7 @@
"type": "tidelift"
}
],
- "time": "2022-12-09T07:31:23+00:00"
+ "time": "2023-12-01T16:55:19+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -1596,16 +1532,16 @@
},
{
"name": "sebastian/diff",
- "version": "4.0.4",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
"shasum": ""
},
"require": {
@@ -1650,7 +1586,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
},
"funding": [
{
@@ -1658,20 +1594,20 @@
"type": "github"
}
],
- "time": "2020-10-26T13:10:38+00:00"
+ "time": "2023-05-07T05:35:17+00:00"
},
{
"name": "sebastian/environment",
- "version": "5.1.4",
+ "version": "5.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
- "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
"shasum": ""
},
"require": {
@@ -1713,7 +1649,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
},
"funding": [
{
@@ -1721,7 +1657,7 @@
"type": "github"
}
],
- "time": "2022-04-03T09:37:03+00:00"
+ "time": "2023-02-03T06:03:51+00:00"
},
{
"name": "sebastian/exporter",
@@ -1802,16 +1738,16 @@
},
{
"name": "sebastian/global-state",
- "version": "5.0.5",
+ "version": "5.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ "reference": "bde739e7565280bda77be70044ac1047bc007e34"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
- "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
+ "reference": "bde739e7565280bda77be70044ac1047bc007e34",
"shasum": ""
},
"require": {
@@ -1854,7 +1790,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
},
"funding": [
{
@@ -1862,7 +1798,7 @@
"type": "github"
}
],
- "time": "2022-02-14T08:28:10+00:00"
+ "time": "2023-08-02T09:26:13+00:00"
},
{
"name": "sebastian/lines-of-code",
@@ -2035,16 +1971,16 @@
},
{
"name": "sebastian/recursion-context",
- "version": "4.0.4",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
"shasum": ""
},
"require": {
@@ -2083,10 +2019,10 @@
}
],
"description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "homepage": "https://github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
},
"funding": [
{
@@ -2094,7 +2030,7 @@
"type": "github"
}
],
- "time": "2020-10-26T13:17:30+00:00"
+ "time": "2023-02-03T06:07:39+00:00"
},
{
"name": "sebastian/resource-operations",
@@ -2153,16 +2089,16 @@
},
{
"name": "sebastian/type",
- "version": "3.2.0",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
- "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
"shasum": ""
},
"require": {
@@ -2197,7 +2133,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
},
"funding": [
{
@@ -2205,7 +2141,7 @@
"type": "github"
}
],
- "time": "2022-09-12T14:47:03+00:00"
+ "time": "2023-02-03T06:13:03+00:00"
},
{
"name": "sebastian/version",
@@ -2262,16 +2198,16 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"shasum": ""
},
"require": {
@@ -2300,7 +2236,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
},
"funding": [
{
@@ -2308,20 +2244,20 @@
"type": "github"
}
],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2023-11-20T00:12:19+00:00"
},
{
"name": "yoast/phpunit-polyfills",
- "version": "1.0.5",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
- "reference": "3b59adeef77fb1c03ff5381dbb9d68b0aaff3171"
+ "reference": "224e4a1329c03d8bad520e3fc4ec980034a4b212"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/3b59adeef77fb1c03ff5381dbb9d68b0aaff3171",
- "reference": "3b59adeef77fb1c03ff5381dbb9d68b0aaff3171",
+ "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/224e4a1329c03d8bad520e3fc4ec980034a4b212",
+ "reference": "224e4a1329c03d8bad520e3fc4ec980034a4b212",
"shasum": ""
},
"require": {
@@ -2368,7 +2304,7 @@
"issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues",
"source": "https://github.com/Yoast/PHPUnit-Polyfills"
},
- "time": "2023-03-30T23:39:05+00:00"
+ "time": "2023-08-19T14:25:08+00:00"
}
],
"aliases": [],
@@ -2377,10 +2313,10 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=7.4",
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0",
"ext-simplexml": "*",
"ext-dom": "*"
},
"platform-dev": [],
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/eslint/.eslintrc-magento b/eslint/.eslintrc-magento
index 5d403da3..69b47e83 100644
--- a/eslint/.eslintrc-magento
+++ b/eslint/.eslintrc-magento
@@ -18,7 +18,8 @@
"eol-last": 2,
"eqeqeq": [2, "smart"],
"guard-for-in": 2,
- "keyword-spacing": [2, {}],
+ "indent": [2, 4],
+ "keyword-spacing": [2, {"after": true, "before": true}],
"lines-around-comment": [
2,
{
@@ -50,6 +51,7 @@
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-func-assign": 2,
+ "no-global-assign": 2,
"no-implied-eval": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
@@ -81,10 +83,16 @@
}
],
"no-use-before-define": 2,
+ "no-useless-call": 2,
+ "no-useless-computed-key": 2,
+ "no-useless-constructor": 2,
+ "no-useless-escape": 2,
+ "no-useless-rename": 2,
+ "no-useless-return": 2,
"no-with": 2,
"one-var": [2, "always"],
"operator-assignment": [2, "always"],
- "quotes": [2, "single"],
+ "quotes": [2, "single", {"allowTemplateLiterals": true}],
"radix": 2,
"semi": [2, "always"],
"semi-spacing": 2,
diff --git a/eslint/rules/utils.js b/eslint/rules/utils.js
index ae181210..398e2b86 100644
--- a/eslint/rules/utils.js
+++ b/eslint/rules/utils.js
@@ -75,18 +75,18 @@ function getExpressionId(node) {
while (node) {
switch (node.type) {
- case 'CallExpression':
- node = node.callee;
- break;
-
- case 'MemberExpression':
- node = node.object;
- break;
-
- case 'Identifier':
- return node;
- default:
- return null;
+ case 'CallExpression':
+ node = node.callee;
+ break;
+
+ case 'MemberExpression':
+ node = node.object;
+ break;
+
+ case 'Identifier':
+ return node;
+ default:
+ return null;
}
}
}
diff --git a/rector.php b/rector.php
index 8bc53e56..bd9da885 100644
--- a/rector.php
+++ b/rector.php
@@ -5,7 +5,7 @@
use Magento2\Rector\Src\ReplaceMbStrposNullLimit;
use Magento2\Rector\Src\ReplaceNewDateTimeNull;
use Rector\Config\RectorConfig;
-use Rector\Core\ValueObject\PhpVersion;
+use Rector\ValueObject\PhpVersion;
use Rector\Php80\Rector\Class_\StringableForToStringRector;
use Rector\Php80\Rector\ClassMethod\FinalPrivateToPrivateVisibilityRector;
use Rector\CodeQuality\Rector\ClassMethod\OptionalParametersAfterRequiredRector;
@@ -17,16 +17,13 @@
$rectorConfig->phpVersion(PhpVersion::PHP_80);
$rectorConfig->phpVersion(PhpVersion::PHP_81);
- // get services (needed for register a single rule)
- $services = $rectorConfig->services();
-
// register a single rule
- $services->set(FinalPrivateToPrivateVisibilityRector::class);
- $services->set(OptionalParametersAfterRequiredRector::class);
- $services->set(SetStateToStaticRector::class);
- $services->set(StringableForToStringRector::class);
- $services->set(Php81ResourceReturnToObjectRector::class);
- $services->set(ReplacePregSplitNullLimit::class);
- $services->set(ReplaceMbStrposNullLimit::class);
- $services->set(ReplaceNewDateTimeNull::class);
+ $rectorConfig->singleton(FinalPrivateToPrivateVisibilityRector::class);
+ $rectorConfig->singleton(OptionalParametersAfterRequiredRector::class);
+ $rectorConfig->singleton(SetStateToStaticRector::class);
+ $rectorConfig->singleton(StringableForToStringRector::class);
+ $rectorConfig->singleton(Php81ResourceReturnToObjectRector::class);
+ $rectorConfig->singleton(ReplacePregSplitNullLimit::class);
+ $rectorConfig->singleton(ReplaceMbStrposNullLimit::class);
+ $rectorConfig->singleton(ReplaceNewDateTimeNull::class);
};