Skip to content

Commit 7155b92

Browse files
authored
Introduce shipmonk/phpstan-rules (#1046)
1 parent 9b0682a commit 7155b92

File tree

9 files changed

+55
-15
lines changed

9 files changed

+55
-15
lines changed

.dev-tools/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"phpstan/phpstan-phpunit": "^2.0.6",
1414
"phpstan/phpstan-strict-rules": "^2.0.4",
1515
"shipmonk/composer-dependency-analyser": "^1.8.3",
16+
"shipmonk/phpstan-rules": "^4.1.4",
1617
"squizlabs/php_codesniffer": "^3.13.2",
1718
"tomasvotruba/type-coverage": "^2.0.2",
1819
"vimeo/psalm": "^6.12"

.dev-tools/composer.lock

Lines changed: 36 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.dev-tools/phpstan.neon

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ parameters:
77
- ../vendor/autoload.php
88
level: max
99
ignoreErrors:
10-
- '~internal (class|method) PhpCsFixer(CustomFixers(Dev)?)?\\~'
10+
- message: '~internal (class|method) PhpCsFixer(CustomFixers(Dev)?)?\\~'
11+
- identifier: shipmonk.checkedExceptionInYieldingMethod
1112
paths:
1213
- ../src
1314
- ../tests

src/Analyzer/Analysis/SwitchAnalysis.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ final class SwitchAnalysis
2020
private int $casesEnd;
2121

2222
/** @var list<CaseAnalysis> */
23-
private array $cases = [];
23+
private array $cases;
2424

2525
/**
2626
* @param list<CaseAnalysis> $cases

src/Fixer/IssetToArrayKeyExistsFixer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ public function fix(\SplFileInfo $file, Tokens $tokens): void
8585

8686
$keyStartIndex = $tokens->getNextMeaningfulToken($openBrackets);
8787
\assert(\is_int($keyStartIndex));
88+
8889
$keyEndIndex = $tokens->getPrevMeaningfulToken($closeBrackets);
90+
\assert(\is_int($keyEndIndex));
8991

9092
$keyTokens = [];
9193
for ($i = $keyStartIndex; $i <= $keyEndIndex; $i++) {

src/Fixer/StringableInterfaceFixer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ private static function getInterfaces(Tokens $tokens, int $classKeywordIndex, in
151151
$interface = '';
152152
for (
153153
$index = $tokens->getNextMeaningfulToken($implementsIndex);
154+
// @phpstan-ignore-next-line
154155
$index < $classOpenBraceIndex;
155156
$index = $tokens->getNextMeaningfulToken($index)
156157
) {

tests/AutoReview/TestsCodeTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public function testDataProvidersKeys(string $className): void
9494
\assert($dataSet instanceof \Iterator);
9595

9696
$keyType = null;
97-
foreach (\array_keys(\iterator_to_array($dataSet)) as $key) {
97+
foreach (\array_keys(\iterator_to_array($dataSet, true)) as $key) {
9898
// based on the type of first key determine what type should be for all keys
9999
if ($keyType === null) {
100100
$keyType = \is_int($key) ? 'int' : 'string';
@@ -127,9 +127,9 @@ public function testDataProvidersValues(string $className): void
127127
$dataProviders = self::getDataProviders($className);
128128

129129
foreach ($dataProviders as $dataProvider) {
130-
/** @var \Iterator<array<int, null|string>> $dataSet */
131-
$dataSet = $dataProvider->invoke(null);
132-
$dataSet = \iterator_to_array($dataSet);
130+
/** @var \Iterator<array<int, null|string>> $dataSetIterator */
131+
$dataSetIterator = $dataProvider->invoke(null);
132+
$dataSet = \iterator_to_array($dataSetIterator, false);
133133

134134
$doNotChangeCases = [];
135135
foreach ($dataSet as $value) {
@@ -170,7 +170,7 @@ public static function provideTestClassCases(): iterable
170170
->notName('autoload.php')
171171
->in(__DIR__ . '/..');
172172

173-
$tests = [];
173+
$testsArray = [];
174174

175175
/** @var SplFileInfo $file */
176176
foreach ($finder as $file) {
@@ -180,10 +180,10 @@ public static function provideTestClassCases(): iterable
180180
}
181181

182182
$className .= '\\' . $file->getBasename('.php');
183-
$tests[$className] = [$className];
183+
$testsArray[$className] = [$className];
184184
}
185185

186-
$tests = new \ArrayIterator($tests);
186+
$tests = new \ArrayIterator($testsArray);
187187
}
188188

189189
return $tests;

tests/Fixer/SingleSpaceAfterStatementFixerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,12 +308,12 @@ public function testTokenIsUseful(int $token): void
308308

309309
$property->setValue($fixer, \array_diff($tokens, [$token]));
310310

311-
$tokens = Tokens::fromCode(self::EXAMPLE_WITH_ALL_TOKENS);
312-
$fixer->fix(self::createSplFileInfoDouble(), $tokens);
311+
$allTokens = Tokens::fromCode(self::EXAMPLE_WITH_ALL_TOKENS);
312+
$fixer->fix(self::createSplFileInfoDouble(), $allTokens);
313313

314314
self::assertNotSame(
315315
$expectedTokens->generateCode(),
316-
$tokens->generateCode(),
316+
$allTokens->generateCode(),
317317
\sprintf('Removing token %s did not broke fixing', Token::getNameForId($token)),
318318
);
319319
}

tests/FixersTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,13 @@ public static function provideFixerIsInCollectionCases(): iterable
6262
}
6363

6464
/**
65-
* @return array<array-key, string>
65+
* @return list<string>
6666
*/
6767
private static function fixerNamesFromCollection(): array
6868
{
6969
return \array_map(
7070
static fn (FixerInterface $fixer): string => $fixer->getName(),
71-
\iterator_to_array(new Fixers()),
71+
\iterator_to_array(new Fixers(), false),
7272
);
7373
}
7474
}

0 commit comments

Comments
 (0)