From 96ff0eaa35bec005f9e436697e1ba8ab85310eb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 26 Apr 2025 16:19:53 +0200 Subject: [PATCH 01/19] Enhancement: Increase phpstan/phpstan level from 5 to 6 --- phpstan.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index 7d7f95975..a95f15d28 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ parameters: - level: 5 + level: 6 paths: - src - tests/tests From 04fa9c2a8f8264d69f1c4bd748c3254c6ef6d477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:07:24 +0200 Subject: [PATCH 02/19] Fix: Describe iterable type --- tests/tests/Target/MapBuilderTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/tests/Target/MapBuilderTest.php b/tests/tests/Target/MapBuilderTest.php index dbdaef30d..5b83539ec 100644 --- a/tests/tests/Target/MapBuilderTest.php +++ b/tests/tests/Target/MapBuilderTest.php @@ -417,6 +417,9 @@ public static function provider(): array ]; } + /** + * @param non-empty-list $files + */ #[DataProvider('provider')] public function testBuildsMap(array $expected, array $files): void { From 5debf1e3d5b6a1be541b1ad83f24105e99d74dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:08:07 +0200 Subject: [PATCH 03/19] Fix: Describe iterable type --- tests/tests/Target/MapBuilderTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/tests/Target/MapBuilderTest.php b/tests/tests/Target/MapBuilderTest.php index 5b83539ec..de1612653 100644 --- a/tests/tests/Target/MapBuilderTest.php +++ b/tests/tests/Target/MapBuilderTest.php @@ -418,6 +418,7 @@ public static function provider(): array } /** + * @param TargetMap $expected * @param non-empty-list $files */ #[DataProvider('provider')] From b2e3fa249d41475d11166147df6c45befb75ad26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:08:50 +0200 Subject: [PATCH 04/19] Fix: Describe iterable type --- src/Target/MapBuilder.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Target/MapBuilder.php b/src/Target/MapBuilder.php index 11a8088ff..d4906b767 100644 --- a/src/Target/MapBuilder.php +++ b/src/Target/MapBuilder.php @@ -206,6 +206,9 @@ public function build(Filter $filter, FileAnalyser $analyser): array ]; } + /** + * @param array $reverseLookup + */ private function processMethods(Class_|Trait_ $classOrTrait, string $file, array &$methods, array &$reverseLookup): void { foreach ($classOrTrait->methods() as $method) { From 251073b4df3021904b284531360f6eb957d09fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:09:41 +0200 Subject: [PATCH 05/19] Fix: Describe iterable type --- src/Target/MapBuilder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Target/MapBuilder.php b/src/Target/MapBuilder.php index d4906b767..cfda06293 100644 --- a/src/Target/MapBuilder.php +++ b/src/Target/MapBuilder.php @@ -207,6 +207,7 @@ public function build(Filter $filter, FileAnalyser $analyser): array } /** + * @param TargetMapPart $methods * @param array $reverseLookup */ private function processMethods(Class_|Trait_ $classOrTrait, string $file, array &$methods, array &$reverseLookup): void From f9c439ce4d2f12005e18ae60db9fdaea0b8703bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:11:48 +0200 Subject: [PATCH 06/19] Fix: Describe iterable type --- src/Report/Html/Renderer/File.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Report/Html/Renderer/File.php b/src/Report/Html/Renderer/File.php index 09dbe31fe..0e3853475 100644 --- a/src/Report/Html/Renderer/File.php +++ b/src/Report/Html/Renderer/File.php @@ -113,6 +113,7 @@ * @phpstan-import-type ProcessedTraitType from FileNode * @phpstan-import-type ProcessedMethodType from FileNode * @phpstan-import-type ProcessedFunctionType from FileNode + * @phpstan-import-type TestType from FileNode * * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage */ @@ -1118,6 +1119,9 @@ private function abbreviateMethodName(string $methodName): string return $methodName; } + /** + * @param TestType $testData + */ private function createPopoverContentForTest(string $test, array $testData): string { $testCSS = ''; From a486ad1520f823e2719a5e57b4014c4e77c92ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 11:15:52 +0200 Subject: [PATCH 07/19] Fix: Describe iterable type --- src/Report/Html/Renderer/File.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Report/Html/Renderer/File.php b/src/Report/Html/Renderer/File.php index 0e3853475..b1c3f7e97 100644 --- a/src/Report/Html/Renderer/File.php +++ b/src/Report/Html/Renderer/File.php @@ -102,6 +102,7 @@ use function str_replace; use function token_get_all; use function trim; +use SebastianBergmann\CodeCoverage\CodeCoverage; use SebastianBergmann\CodeCoverage\FileCouldNotBeWrittenException; use SebastianBergmann\CodeCoverage\Node\File as FileNode; use SebastianBergmann\CodeCoverage\Util\Percentage; @@ -113,7 +114,7 @@ * @phpstan-import-type ProcessedTraitType from FileNode * @phpstan-import-type ProcessedMethodType from FileNode * @phpstan-import-type ProcessedFunctionType from FileNode - * @phpstan-import-type TestType from FileNode + * @phpstan-import-type TestType from CodeCoverage * * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage */ @@ -907,7 +908,8 @@ private function renderPathStructure(FileNode $node): string } /** - * @param list $codeLines + * @param list $codeLines + * @param array $testData */ private function renderPathLines(array $path, array $branches, array $codeLines, array $testData): string { From 6182b1063ab307919a405697c2b3e0a1b10198ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:09:52 +0200 Subject: [PATCH 08/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 57ccbb166..febc54729 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -129,6 +129,9 @@ public function setFunctionCoverage(array $functionCoverage): void $this->functionCoverage = $functionCoverage; } + /** + * @return FunctionCoverageType + */ public function functionCoverage(): array { ksort($this->functionCoverage); From 68b5d8158d4d39ad7448a4dcf00116475fea664b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:10:29 +0200 Subject: [PATCH 09/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index febc54729..26d886f84 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -124,6 +124,9 @@ public function lineCoverage(): array return $this->lineCoverage; } + /** + * @param FunctionCoverageType $functionCoverage + */ public function setFunctionCoverage(array $functionCoverage): void { $this->functionCoverage = $functionCoverage; From 3c2b353e3a97c2305c5959039606405c3a9fbc4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:11:41 +0200 Subject: [PATCH 10/19] Enhancement: Extract local type alias --- src/Data/ProcessedCodeCoverageData.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 26d886f84..c53498c01 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -42,6 +42,7 @@ * hit: list * } * @phpstan-type FunctionCoverageType array> + * @phpstan-type LineCoverageType array>> */ final class ProcessedCodeCoverageData { @@ -49,7 +50,7 @@ final class ProcessedCodeCoverageData * Line coverage data. * An array of filenames, each having an array of linenumbers, each executable line having an array of testcase ids. * - * @var array>> + * @var LineCoverageType */ private array $lineCoverage = []; From 3e4b94fe2e2288c48470c2564317cc3731ef4545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:12:13 +0200 Subject: [PATCH 11/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index c53498c01..75b8ff797 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -113,6 +113,9 @@ public function markCodeAsExecutedByTestCase(string $testCaseId, RawCodeCoverage } } + /** + * @param LineCoverageType $lineCoverage + */ public function setLineCoverage(array $lineCoverage): void { $this->lineCoverage = $lineCoverage; From 4aa8006e6f3b350cc8a1da561c1c0003aeff9a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:12:37 +0200 Subject: [PATCH 12/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 75b8ff797..14540fcc8 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -121,6 +121,9 @@ public function setLineCoverage(array $lineCoverage): void $this->lineCoverage = $lineCoverage; } + /** + * @return LineCoverageType + */ public function lineCoverage(): array { ksort($this->lineCoverage); From a98b75b8f3fa07037285f129524a93e9862792f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:13:45 +0200 Subject: [PATCH 13/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 14540fcc8..750725f12 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -149,6 +149,9 @@ public function functionCoverage(): array return $this->functionCoverage; } + /** + * @return list + */ public function coveredFiles(): array { ksort($this->lineCoverage); From 1d60bf060196cd46254d48516e9b033123bed4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:17:08 +0200 Subject: [PATCH 14/19] Enhancement: Extract local type alias --- src/Data/ProcessedCodeCoverageData.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 750725f12..ea3967647 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -42,7 +42,8 @@ * hit: list * } * @phpstan-type FunctionCoverageType array> - * @phpstan-type LineCoverageType array>> + * @phpstan-type LineCoverageForFileType array> + * @phpstan-type LineCoverageType array */ final class ProcessedCodeCoverageData { From ce64737f087e52e05627e61bd98936eceb41126f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 12:17:41 +0200 Subject: [PATCH 15/19] Fix: Describe iterable type --- src/Data/ProcessedCodeCoverageData.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index ea3967647..58e71d1d1 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -237,6 +237,8 @@ public function merge(self $newData): void * * During a merge, a higher number is better. * + * @param LineCoverageForFileType $data + * * @return 1|2|3|4 */ private function priorityForLine(array $data, int $line): int From 015ffc7c0055e8467e39d1fc2516acc432751850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 13:07:14 +0200 Subject: [PATCH 16/19] Enhancement: Extract local type alias --- src/Data/ProcessedCodeCoverageData.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Data/ProcessedCodeCoverageData.php b/src/Data/ProcessedCodeCoverageData.php index 58e71d1d1..70f2d811c 100644 --- a/src/Data/ProcessedCodeCoverageData.php +++ b/src/Data/ProcessedCodeCoverageData.php @@ -41,7 +41,8 @@ * }>, * hit: list * } - * @phpstan-type FunctionCoverageType array> + * @phpstan-type FunctionCoverageForFileType array + * @phpstan-type FunctionCoverageType array * @phpstan-type LineCoverageForFileType array> * @phpstan-type LineCoverageType array */ From 952cc1e1d80693af73853989b778334d152814d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 13:08:32 +0200 Subject: [PATCH 17/19] Fix: Use local type alias --- src/Node/Builder.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Node/Builder.php b/src/Node/Builder.php index e6b83f999..541e09b8d 100644 --- a/src/Node/Builder.php +++ b/src/Node/Builder.php @@ -29,6 +29,7 @@ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage * * @phpstan-import-type TestType from CodeCoverage + * @phpstan-import-type FunctionCoverageForFileType from ProcessedCodeCoverageData */ final readonly class Builder { @@ -132,7 +133,7 @@ private function addItems(Directory $root, array $items, array $tests): void * ) * * - * @return array, functionCoverage: array>}>> + * @return array, functionCoverage: FunctionCoverageForFileType}>> */ private function buildDirectoryStructure(ProcessedCodeCoverageData $data): array { From 4346d34a0343f060419dcb0de7642a6ce045e9b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 13:09:22 +0200 Subject: [PATCH 18/19] Fix: Use local type alias --- src/Node/Builder.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Node/Builder.php b/src/Node/Builder.php index 541e09b8d..f655754f4 100644 --- a/src/Node/Builder.php +++ b/src/Node/Builder.php @@ -30,6 +30,7 @@ * * @phpstan-import-type TestType from CodeCoverage * @phpstan-import-type FunctionCoverageForFileType from ProcessedCodeCoverageData + * @phpstan-import-type LineCoverageForFileType from ProcessedCodeCoverageData */ final readonly class Builder { @@ -133,7 +134,7 @@ private function addItems(Directory $root, array $items, array $tests): void * ) * * - * @return array, functionCoverage: FunctionCoverageForFileType}>> + * @return array> */ private function buildDirectoryStructure(ProcessedCodeCoverageData $data): array { From f76bf29c7a538421996b6585391179f8167073ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 27 Apr 2025 13:11:18 +0200 Subject: [PATCH 19/19] Fix: Adjust iterable type description --- src/Node/Builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Node/Builder.php b/src/Node/Builder.php index f655754f4..90454dec8 100644 --- a/src/Node/Builder.php +++ b/src/Node/Builder.php @@ -134,7 +134,7 @@ private function addItems(Directory $root, array $items, array $tests): void * ) * * - * @return array> + * @return array */ private function buildDirectoryStructure(ProcessedCodeCoverageData $data): array {