From dcf5038f30b5debdd09725a85b23422b29939b72 Mon Sep 17 00:00:00 2001 From: Garvin Hicking <gh@faktor-e.de> Date: Fri, 14 Jun 2024 13:46:33 +0200 Subject: [PATCH] [BUGFIX] Fix ExtensionScanner ignoring all lines instead of single one Once the ExtensionScanner hits a '@extensionScannerIgnoreLine' annotated code line, it internally sets a flag that is never reset. That causes all following lines to be ignored, not just one. This patch will reset the property `$isCurrentLineIgnored` to `false` again, once the annotated line has passed. Tests are adapted to verify this behaviour. Due to the behavioral change it is possible that the scanner now finds more hits in third-party scanned extensions that previously may have been ignored. Resolves: #100702 Releases: main, 12.4 Change-Id: Ib1cbb5e7758e7e302e4395d759e8585eeff15d8e Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84733 Tested-by: core-ci <typo3@b13.com> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../ExtensionScanner/Php/Matcher/AbstractCoreMatcher.php | 5 +++++ .../Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php | 2 +- .../ExtensionScanner/Php/Fixtures/CodeStatisticsFixture.php | 1 + .../Php/Matcher/ArrayDimensionMatcherTest.php | 1 + .../ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php | 1 + .../Php/Matcher/ClassConstantMatcherTest.php | 1 + .../ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php | 1 + .../ExtensionScanner/Php/Matcher/ConstantMatcherTest.php | 1 + .../Php/Matcher/Fixtures/ArrayDimensionMatcherFixture.php | 6 ++++++ .../Php/Matcher/Fixtures/ArrayGlobalMatcherFixture.php | 6 ++++++ .../Php/Matcher/Fixtures/ClassConstantMatcherFixture.php | 3 +++ .../Php/Matcher/Fixtures/ClassNameMatcherFixture.php | 3 +++ .../Php/Matcher/Fixtures/ConstantMatcherFixture.php | 3 +++ .../Php/Matcher/Fixtures/FunctionCallMatcherFixture.php | 3 +++ .../Fixtures/InterfaceMethodChangedMatcherFixture.php | 2 +- .../Fixtures/MethodArgumentDroppedMatcherFixture.php | 2 ++ .../Fixtures/MethodArgumentDroppedStaticMatcherFixture.php | 2 ++ .../Fixtures/MethodArgumentRequiredMatcherFixture.php | 2 ++ .../Fixtures/MethodArgumentRequiredStaticMatcherFixture.php | 1 + .../Matcher/Fixtures/MethodArgumentUnusedMatcherFixture.php | 2 ++ .../Php/Matcher/Fixtures/MethodCallMatcherFixture.php | 2 ++ .../Php/Matcher/Fixtures/MethodCallStaticMatcherFixture.php | 2 ++ .../Matcher/Fixtures/PropertyExistsStaticMatcherFixture.php | 4 ++++ .../Matcher/Fixtures/PropertyProtectedMatcherFixture.php | 2 ++ .../Php/Matcher/Fixtures/PropertyPublicMatcherFixture.php | 2 ++ .../Php/Matcher/FunctionCallMatcherTest.php | 1 + .../Php/Matcher/MethodArgumentDroppedMatcherTest.php | 1 + .../Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php | 1 + .../Php/Matcher/MethodArgumentUnusedMatcherTest.php | 1 + .../ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php | 1 + .../Php/Matcher/MethodCallStaticMatcherTest.php | 1 + .../Php/Matcher/PropertyProtectedMatcherTest.php | 1 + .../Php/Matcher/PropertyPublicMatcherTest.php | 1 + 33 files changed, 66 insertions(+), 2 deletions(-) diff --git a/typo3/sysext/install/Classes/ExtensionScanner/Php/Matcher/AbstractCoreMatcher.php b/typo3/sysext/install/Classes/ExtensionScanner/Php/Matcher/AbstractCoreMatcher.php index e1c013be637b..9fac7470bc3b 100644 --- a/typo3/sysext/install/Classes/ExtensionScanner/Php/Matcher/AbstractCoreMatcher.php +++ b/typo3/sysext/install/Classes/ExtensionScanner/Php/Matcher/AbstractCoreMatcher.php @@ -185,6 +185,11 @@ abstract class AbstractCoreMatcher extends NodeVisitorAbstract implements CodeSc if ($startLineOfNode === $this->currentCodeLine) { return $this->isCurrentLineIgnored; } + if ($this->isCurrentLineIgnored) { + // "ignoreMode" is still active, but we're past the line + // where it was enabled. Reset this beauty. + $this->isCurrentLineIgnored = false; + } $currentLineIsIgnored = false; if ($startLineOfNode !== $this->currentCodeLine) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php index f35a8867e4ec..8951aac93b4a 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/CodeStatisticsTest.php @@ -39,6 +39,6 @@ final class CodeStatisticsTest extends UnitTestCase self::assertTrue($subject->isFileIgnored()); self::assertEquals(2, $subject->getNumberOfIgnoredLines()); - self::assertEquals(6, $subject->getNumberOfEffectiveCodeLines()); + self::assertEquals(7, $subject->getNumberOfEffectiveCodeLines()); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Fixtures/CodeStatisticsFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Fixtures/CodeStatisticsFixture.php index 21acd66707bb..1ae5eb4bae32 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Fixtures/CodeStatisticsFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Fixtures/CodeStatisticsFixture.php @@ -32,5 +32,6 @@ class CodeStatisticsFixture // @extensionScannerIgnoreLine $some = 'other ignored line'; + $somethingNotIgnored = 'not ignored'; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php index 264678db60ef..e85c7c65eab2 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayDimensionMatcherTest.php @@ -51,6 +51,7 @@ final class ArrayDimensionMatcherTest extends UnitTestCase $expectedHitLineNumbers = [ 28, 29, + 40, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php index 4e4aad346126..7cf7d0c4b7cb 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ArrayGlobalMatcherTest.php @@ -49,6 +49,7 @@ final class ArrayGlobalMatcherTest extends UnitTestCase $traverser->traverse($statements); $expectedHitLineNumbers = [ 28, + 40, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php index b6d144818e53..e82e2895f986 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassConstantMatcherTest.php @@ -58,6 +58,7 @@ final class ClassConstantMatcherTest extends UnitTestCase 30, 31, 32, + 41, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php index 8e46a0831c5d..8a7c67b964de 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ClassNameMatcherTest.php @@ -72,6 +72,7 @@ final class ClassNameMatcherTest extends UnitTestCase 44, 47, 48, + 60, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $match) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php index 337f18d334db..55a75fc3c372 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/ConstantMatcherTest.php @@ -51,6 +51,7 @@ final class ConstantMatcherTest extends UnitTestCase $traverser->traverse($statements); $expectedHitLineNumbers = [ 28, + 36, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayDimensionMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayDimensionMatcherFixture.php index 702e2573ab35..757863e26507 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayDimensionMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayDimensionMatcherFixture.php @@ -35,5 +35,11 @@ class ArrayDimensionMatcherFixture $foo::maxSessionDataSize; // @extensionScannerIgnoreLine $foo['maxSessionDataSize']; + + // Match (again). No longer ignored. + $foo['bar']['maxSessionDataSize']; + // Ignore match (again). Done only once here for all fixtures. + // @extensionScannerIgnoreLine + $foo['bar']['maxSessionDataSize']; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayGlobalMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayGlobalMatcherFixture.php index b2ada13b4229..f34615da984d 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayGlobalMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ArrayGlobalMatcherFixture.php @@ -35,5 +35,11 @@ class ArrayGlobalMatcherFixture $foo['TYPO3_DB']; // @extensionScannerIgnoreLine $GLOBALS['TYPO3_DB']; + + // Match (again). No longer ignored. + $GLOBALS['TYPO3_DB']; + // Ignore match (again). + // @extensionScannerIgnoreLine + $GLOBALS['TYPO3_DB']; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassConstantMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassConstantMatcherFixture.php index fd03b968c5ce..743a44075cec 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassConstantMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassConstantMatcherFixture.php @@ -36,5 +36,8 @@ class ClassConstantMatcherFixture $foo = \My\Different\SystemEnvironmentBuilder::REQUESTTYPE_FE; // @extensionScannerIgnoreLine $foo = SystemEnvironmentBuilder::REQUESTTYPE_FE; + + // Match (again). No longer ignored. + $foo = \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_FE; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassNameMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassNameMatcherFixture.php index 8651358f3be4..aaab4c7cda17 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassNameMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ClassNameMatcherFixture.php @@ -55,5 +55,8 @@ class ClassNameMatcherFixture extends App2 implements App3, Con\Application \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\\TYPO3\CMS\Backend\Console\Application')->foo(); // @extensionScannerIgnoreLine $bar = \RemoveXSS::class; + + // Match (again). No longer ignored. + $foo = new \RemoveXSS(); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ConstantMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ConstantMatcherFixture.php index 56b860241573..fdece9eabfc3 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ConstantMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/ConstantMatcherFixture.php @@ -31,5 +31,8 @@ class ConstantMatcherFixture $foo = \My\Project\AClass::TYPO3_DLOG; // @extensionScannerIgnoreLine $foo = TYPO3_DLOG; + + // Match (again). No longer ignored. + $foo = TYPO3_DLOG; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/FunctionCallMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/FunctionCallMatcherFixture.php index d8a25bfd2004..dbe25a666bc2 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/FunctionCallMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/FunctionCallMatcherFixture.php @@ -38,5 +38,8 @@ class FunctionCallMatcherFixture debugBegin(); // @extensionScannerIgnoreLine $bar->bar(\debugBegin()); + + // Match (again). No longer ignored. + \debugBegin(); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/InterfaceMethodChangedMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/InterfaceMethodChangedMatcherFixture.php index 4e4d15efb993..59de1d36caf4 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/InterfaceMethodChangedMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/InterfaceMethodChangedMatcherFixture.php @@ -45,8 +45,8 @@ class InterfaceMethodChangedMatcherFixture */ public function like2($arg1, $arg2, $arg3): void { - // @extensionScannerIgnoreLine // Match: Call to ->like() with three arguments has been removed + // @extensionScannerIgnoreLine $foo->like2('arg1', 'arg2', 'arg3'); } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedMatcherFixture.php index c04ef9fbb4a5..0a40723cc4b7 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedMatcherFixture.php @@ -43,5 +43,7 @@ class MethodArgumentDroppedMatcherFixture $foo->euc_char_mapping('arg1', 'arg2'); // @extensionScannerIgnoreLine $foo->euc_char_mapping('arg1', 'arg2', 'arg3'); + // Match (again). No longer ignored. + $foo->euc_char_mapping('arg1', 'arg2', 'arg3'); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedStaticMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedStaticMatcherFixture.php index 081e0075371e..d0d1e79ac380 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedStaticMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentDroppedStaticMatcherFixture.php @@ -42,5 +42,7 @@ class MethodArgumentDroppedStaticMatcherFixture $foo::getFileAbsFileName(...$args1, ...$args2); // @extensionScannerIgnoreLine $foo::getFileAbsFileName('foo', 'bar'); + // Match (again). No longer ignored. + \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('foo', 'bar'); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredMatcherFixture.php index 477486122b76..a66876d3fe25 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredMatcherFixture.php @@ -43,5 +43,7 @@ class MethodArgumentRequiredMatcherFixture $foo::searchWhere('arg1', 'arg2', 'arg3', 'arg4', 'arg5'); // @extensionScannerIgnoreLine $this->searchWhere('arg1', 'arg2'); + // Match (again). No longer ignored. + \TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('foo', 'bar'); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredStaticMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredStaticMatcherFixture.php index d8dfbf672469..33ec47a58ca3 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredStaticMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentRequiredStaticMatcherFixture.php @@ -42,5 +42,6 @@ class MethodArgumentRequiredStaticMatcherFixture $foo::addNavigationComponent(...'foo'); // @extensionScannerIgnoreLine ExtensionManagementUtility::addNavigationComponent('foo', 'bar'); + // Match (again). No longer ignored. } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentUnusedMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentUnusedMatcherFixture.php index 21033edda56f..8a343295bafb 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentUnusedMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodArgumentUnusedMatcherFixture.php @@ -43,5 +43,7 @@ class MethodArgumentUnusedMatcherFixture $foo->RTE_transform(...$args1, ...$args2, ...$args3); // @extensionScannerIgnoreLine $foo->RTE_transform('arg1', 'arg2'); + // Match (again). No longer ignored. + $foo->RTE_transform('arg1', 'arg2'); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallMatcherFixture.php index 4dae1e09b8e4..c6e196f5fddd 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallMatcherFixture.php @@ -58,5 +58,7 @@ class MethodCallMatcherFixture $foo->confirmMsg('arg1', 'arg2', 'arg3', 'arg4', 'arg5'); // @extensionScannerIgnoreLine $bar->bar($foo->confirmMsg('arg1', 'arg2', 'arg3', 'arg4', 'arg5')); + // Match (again). No longer ignored. + $foo->confirmMsg('arg1', 'arg2', 'arg3', 'arg4'); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallStaticMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallStaticMatcherFixture.php index c27da73219c1..a112240bea5e 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallStaticMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/MethodCallStaticMatcherFixture.php @@ -37,5 +37,7 @@ class MethodCallStaticMatcherFixture $foo->getAjaxUrl('bar'); // @extensionScannerIgnoreLine $foo::getAjaxUrl('bar'); + // Match (again). No longer ignored. + BackendUtility::getAjaxUrl(); } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyExistsStaticMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyExistsStaticMatcherFixture.php index 51c42ca79820..c8c32de30705 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyExistsStaticMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyExistsStaticMatcherFixture.php @@ -47,6 +47,8 @@ class PropertyExistsStaticMatcherFixture4 // Not a match: suppressed // @extensionScannerIgnoreLine public static $iAmAMatch; + // Match (again). No longer ignored. + public static $iAmAnUnignoredMatch; } class PropertyExistsStaticMatcherFixture5 @@ -58,6 +60,8 @@ class PropertyExistsStaticMatcherFixture5 * @var string|null */ public static $iAmAMatch; + // Match (again). No longer ignored. + public static $iAmAnUnignoredMatch; } class PropertyExistsStaticMatcherFixture6 diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyProtectedMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyProtectedMatcherFixture.php index e363472a6e0f..7721ab27b176 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyProtectedMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyProtectedMatcherFixture.php @@ -45,5 +45,7 @@ class PropertyProtectedMatcherFixture static::$foo(); // @extensionScannerIgnoreLine $foo->recUpdateAccessCache; + // Match (again). No longer ignored. + $foo->recUpdateAccessCache; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyPublicMatcherFixture.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyPublicMatcherFixture.php index e2ad010c1447..6529a423fb47 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyPublicMatcherFixture.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/Fixtures/PropertyPublicMatcherFixture.php @@ -45,5 +45,7 @@ class PropertyPublicMatcherFixture static::$foo(); // @extensionScannerIgnoreLine $foo->localizationMode; + // Match (again). No longer ignored. + $foo->localizationMode; } } diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php index 7e7259d74525..011a023d1097 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/FunctionCallMatcherTest.php @@ -50,6 +50,7 @@ final class FunctionCallMatcherTest extends UnitTestCase $traverser->traverse($statements); $expectedHitLineNumbers = [ 28, + 43, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php index 78d0e0c428f9..8ee7213749fc 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedMatcherTest.php @@ -50,6 +50,7 @@ final class MethodArgumentDroppedMatcherTest extends UnitTestCase $traverser->traverse($statements); $expectedHitLineNumbers = [ 28, + 47, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php index 083b114e480a..9bcc276e9f12 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentDroppedStaticMatcherTest.php @@ -53,6 +53,7 @@ final class MethodArgumentDroppedStaticMatcherTest extends UnitTestCase 30, 32, 34, + 46, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php index f57591b5fa2b..e3e97636fe1f 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodArgumentUnusedMatcherTest.php @@ -52,6 +52,7 @@ final class MethodArgumentUnusedMatcherTest extends UnitTestCase $expectedHitLineNumbers = [ 28, 29, + 47, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php index 172af55b7a8f..b82c165cfa91 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallMatcherTest.php @@ -54,6 +54,7 @@ final class MethodCallMatcherTest extends UnitTestCase 30, 33, 35, + 62, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php index 616fbb561caa..512758ca73ec 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/MethodCallStaticMatcherTest.php @@ -55,6 +55,7 @@ final class MethodCallStaticMatcherTest extends UnitTestCase $expectedHitLineNumbers = [ 30, 32, + 41, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php index bd4235a7d36e..c19227f8cba2 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyProtectedMatcherTest.php @@ -50,6 +50,7 @@ final class PropertyProtectedMatcherTest extends UnitTestCase $traverser->traverse($statements); $expectedHitLineNumbers = [ 28, + 49, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { diff --git a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php index 0f6142226237..77818494cd5c 100644 --- a/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php +++ b/typo3/sysext/install/Tests/Unit/ExtensionScanner/Php/Matcher/PropertyPublicMatcherTest.php @@ -50,6 +50,7 @@ final class PropertyPublicMatcherTest extends UnitTestCase $expectedHitLineNumbers = [ 28, 29, + 49, ]; $actualHitLineNumbers = []; foreach ($subject->getMatches() as $hit) { -- GitLab