Skip to content

Commit 3e58149

Browse files
committed
DRY refactoring
1 parent 523f1c1 commit 3e58149

File tree

7 files changed

+68
-66
lines changed

7 files changed

+68
-66
lines changed

src/Analyser/FileAnalyser.php

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use PhpParser\Comment;
66
use PhpParser\Node;
77
use PHPStan\Dependency\DependencyResolver;
8-
use PHPStan\File\FileHelper;
98
use PHPStan\Node\FileNode;
109
use PHPStan\Parser\Parser;
1110
use PHPStan\Rules\FileRuleError;
@@ -32,24 +31,20 @@ class FileAnalyser
3231

3332
private DependencyResolver $dependencyResolver;
3433

35-
private FileHelper $fileHelper;
36-
3734
private bool $reportUnmatchedIgnoredErrors;
3835

3936
public function __construct(
4037
ScopeFactory $scopeFactory,
4138
NodeScopeResolver $nodeScopeResolver,
4239
Parser $parser,
4340
DependencyResolver $dependencyResolver,
44-
FileHelper $fileHelper,
4541
bool $reportUnmatchedIgnoredErrors
4642
)
4743
{
4844
$this->scopeFactory = $scopeFactory;
4945
$this->nodeScopeResolver = $nodeScopeResolver;
5046
$this->parser = $parser;
5147
$this->dependencyResolver = $dependencyResolver;
52-
$this->fileHelper = $fileHelper;
5348
$this->reportUnmatchedIgnoredErrors = $reportUnmatchedIgnoredErrors;
5449
}
5550

@@ -312,27 +307,7 @@ private function resolveDependencies(
312307
array $analysedFiles
313308
): array
314309
{
315-
$dependencies = [];
316-
317-
foreach ($this->dependencyResolver->resolveDependencies($node, $scope) as $dependencyReflection) {
318-
$dependencyFile = $dependencyReflection->getFileName();
319-
if ($dependencyFile === false) {
320-
continue;
321-
}
322-
$dependencyFile = $this->fileHelper->normalizePath($dependencyFile);
323-
324-
if ($scope->getFile() === $dependencyFile) {
325-
continue;
326-
}
327-
328-
if (!isset($analysedFiles[$dependencyFile])) {
329-
continue;
330-
}
331-
332-
$dependencies[$dependencyFile] = $dependencyFile;
333-
}
334-
335-
return array_values($dependencies);
310+
return $this->dependencyResolver->resolveDependencies($node, $scope)->getFileDependencies($scope->getFile(), $analysedFiles);
336311
}
337312

338313
}

src/Dependency/DependencyDumper.php

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use PHPStan\Analyser\ScopeContext;
88
use PHPStan\Analyser\ScopeFactory;
99
use PHPStan\File\FileFinder;
10-
use PHPStan\File\FileHelper;
1110
use PHPStan\Parser\Parser;
1211

1312
class DependencyDumper
@@ -17,8 +16,6 @@ class DependencyDumper
1716

1817
private NodeScopeResolver $nodeScopeResolver;
1918

20-
private FileHelper $fileHelper;
21-
2219
private Parser $parser;
2320

2421
private ScopeFactory $scopeFactory;
@@ -28,15 +25,13 @@ class DependencyDumper
2825
public function __construct(
2926
DependencyResolver $dependencyResolver,
3027
NodeScopeResolver $nodeScopeResolver,
31-
FileHelper $fileHelper,
3228
Parser $parser,
3329
ScopeFactory $scopeFactory,
3430
FileFinder $fileFinder
3531
)
3632
{
3733
$this->dependencyResolver = $dependencyResolver;
3834
$this->nodeScopeResolver = $nodeScopeResolver;
39-
$this->fileHelper = $fileHelper;
4035
$this->parser = $parser;
4136
$this->scopeFactory = $scopeFactory;
4237
$this->fileFinder = $fileFinder;
@@ -110,27 +105,7 @@ private function resolveDependencies(
110105
array $analysedFiles
111106
): array
112107
{
113-
$dependencies = [];
114-
115-
foreach ($this->dependencyResolver->resolveDependencies($node, $scope) as $dependencyReflection) {
116-
$dependencyFile = $dependencyReflection->getFileName();
117-
if ($dependencyFile === false) {
118-
continue;
119-
}
120-
$dependencyFile = $this->fileHelper->normalizePath($dependencyFile);
121-
122-
if ($scope->getFile() === $dependencyFile) {
123-
continue;
124-
}
125-
126-
if (!isset($analysedFiles[$dependencyFile])) {
127-
continue;
128-
}
129-
130-
$dependencies[$dependencyFile] = $dependencyFile;
131-
}
132-
133-
return array_values($dependencies);
108+
return $this->dependencyResolver->resolveDependencies($node, $scope)->getFileDependencies($scope->getFile(), $analysedFiles);
134109
}
135110

136111
}

src/Dependency/DependencyResolver.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use PhpParser\Node\Stmt\Foreach_;
1010
use PhpParser\Node\Stmt\Function_;
1111
use PHPStan\Analyser\Scope;
12+
use PHPStan\File\FileHelper;
1213
use PHPStan\Node\InClassMethodNode;
1314
use PHPStan\Reflection\ParametersAcceptorSelector;
1415
use PHPStan\Reflection\ParametersAcceptorWithPhpDocs;
@@ -20,19 +21,17 @@
2021
class DependencyResolver
2122
{
2223

24+
private FileHelper $fileHelper;
25+
2326
private \PHPStan\Reflection\ReflectionProvider $reflectionProvider;
2427

25-
public function __construct(ReflectionProvider $reflectionProvider)
28+
public function __construct(FileHelper $fileHelper, ReflectionProvider $reflectionProvider)
2629
{
30+
$this->fileHelper = $fileHelper;
2731
$this->reflectionProvider = $reflectionProvider;
2832
}
2933

30-
/**
31-
* @param \PhpParser\Node $node
32-
* @param Scope $scope
33-
* @return ReflectionWithFilename[]
34-
*/
35-
public function resolveDependencies(\PhpParser\Node $node, Scope $scope): array
34+
public function resolveDependencies(\PhpParser\Node $node, Scope $scope): NodeDependencies
3635
{
3736
$dependenciesReflections = [];
3837

@@ -188,7 +187,7 @@ public function resolveDependencies(\PhpParser\Node $node, Scope $scope): array
188187
}
189188
}
190189

191-
return $dependenciesReflections;
190+
return new NodeDependencies($this->fileHelper, $dependenciesReflections);
192191
}
193192

194193
private function considerArrayForCallableTest(Scope $scope, Array_ $arrayNode): bool
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace PHPStan\Dependency;
4+
5+
use PHPStan\File\FileHelper;
6+
use PHPStan\Reflection\ReflectionWithFilename;
7+
8+
class NodeDependencies
9+
{
10+
11+
private FileHelper $fileHelper;
12+
13+
/** @var ReflectionWithFilename[] */
14+
private array $reflections;
15+
16+
/**
17+
* @param FileHelper $fileHelper
18+
* @param ReflectionWithFilename[] $reflections
19+
*/
20+
public function __construct(FileHelper $fileHelper, array $reflections)
21+
{
22+
$this->fileHelper = $fileHelper;
23+
$this->reflections = $reflections;
24+
}
25+
26+
/**
27+
* @param string $currentFile
28+
* @param array<string, true> $analysedFiles
29+
* @return string[]
30+
*/
31+
public function getFileDependencies(string $currentFile, array $analysedFiles): array
32+
{
33+
$dependencies = [];
34+
35+
foreach ($this->reflections as $dependencyReflection) {
36+
$dependencyFile = $dependencyReflection->getFileName();
37+
if ($dependencyFile === false) {
38+
continue;
39+
}
40+
$dependencyFile = $this->fileHelper->normalizePath($dependencyFile);
41+
42+
if ($currentFile === $dependencyFile) {
43+
continue;
44+
}
45+
46+
if (!isset($analysedFiles[$dependencyFile])) {
47+
continue;
48+
}
49+
50+
$dependencies[$dependencyFile] = $dependencyFile;
51+
}
52+
53+
return array_values($dependencies);
54+
}
55+
56+
}

src/Testing/RuleTestCase.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ private function getAnalyser(): Analyser
8686
$this->createScopeFactory($broker, $typeSpecifier),
8787
$nodeScopeResolver,
8888
$this->getParser(),
89-
new DependencyResolver($broker),
90-
$fileHelper,
89+
new DependencyResolver($fileHelper, $broker),
9190
true
9291
);
9392
$this->analyser = new Analyser(

tests/PHPStan/Analyser/AnalyserTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,8 +518,7 @@ private function createAnalyser(bool $reportUnmatchedIgnoredErrors): \PHPStan\An
518518
$this->createScopeFactory($broker, $typeSpecifier),
519519
$nodeScopeResolver,
520520
new DirectParser(new \PhpParser\Parser\Php7(new \PhpParser\Lexer()), $traverser),
521-
new DependencyResolver($broker),
522-
$fileHelper,
521+
new DependencyResolver($fileHelper, $broker),
523522
$reportUnmatchedIgnoredErrors
524523
);
525524

tests/PHPStan/Dependency/DependencyDumperTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,8 @@ public function testDumpDependencies(): void
7676
$fileFinder = $container->getByType(FileFinder::class);
7777

7878
$dumper = new DependencyDumper(
79-
new DependencyResolver($mockBroker),
79+
new DependencyResolver($fileHelper, $mockBroker),
8080
$nodeScopeResolver,
81-
$fileHelper,
8281
$mockParser,
8382
$scopeFactory,
8483
$fileFinder

0 commit comments

Comments
 (0)