Skip to content

Commit 8b2ee49

Browse files
Implement Class_::file()
1 parent 0bdd309 commit 8b2ee49

File tree

5 files changed

+39
-3
lines changed

5 files changed

+39
-3
lines changed

src/StaticAnalysis/CodeUnitFindingVisitor.php

+15
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
*/
3535
final class CodeUnitFindingVisitor extends NodeVisitorAbstract
3636
{
37+
/**
38+
* @var non-empty-string
39+
*/
40+
private string $file;
41+
3742
/**
3843
* @var array<string, \SebastianBergmann\CodeCoverage\StaticAnalysis\Interface_>
3944
*/
@@ -54,6 +59,14 @@ final class CodeUnitFindingVisitor extends NodeVisitorAbstract
5459
*/
5560
private array $functions = [];
5661

62+
/**
63+
* @param non-empty-string $file
64+
*/
65+
public function __construct(string $file)
66+
{
67+
$this->file = $file;
68+
}
69+
5770
public function enterNode(Node $node): void
5871
{
5972
if ($node instanceof Interface_) {
@@ -109,6 +122,7 @@ public function leaveNode(Node $node): void
109122
$this->classes[$namespacedClassName]->name(),
110123
$this->classes[$namespacedClassName]->namespacedName(),
111124
$this->classes[$namespacedClassName]->namespace(),
125+
$this->classes[$namespacedClassName]->file(),
112126
$this->classes[$namespacedClassName]->startLine(),
113127
$this->classes[$namespacedClassName]->endLine(),
114128
$this->classes[$namespacedClassName]->parentClass(),
@@ -274,6 +288,7 @@ private function processClass(Class_ $node): void
274288
$name,
275289
$namespacedName,
276290
$this->namespace($namespacedName, $name),
291+
$this->file,
277292
$node->getStartLine(),
278293
$node->getEndLine(),
279294
$parentClass,

src/StaticAnalysis/ParsingFileAnalyser.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ private function analyse(string $filename): void
172172
assert($nodes !== null);
173173

174174
$traverser = new NodeTraverser;
175-
$codeUnitFindingVisitor = new CodeUnitFindingVisitor;
175+
$codeUnitFindingVisitor = new CodeUnitFindingVisitor($filename);
176176
$lineCountingVisitor = new LineCountingVisitor($linesOfCode);
177177
$ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode);
178178
$executableLinesFindingVisitor = new ExecutableLinesFindingVisitor($source);

src/StaticAnalysis/Value/Class_.php

+16-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
private string $namespacedName;
2626
private string $namespace;
2727

28+
/**
29+
* @var non-empty-string
30+
*/
31+
private string $file;
32+
2833
/**
2934
* @var non-negative-int
3035
*/
@@ -58,18 +63,20 @@
5863
/**
5964
* @param non-empty-string $name
6065
* @param non-empty-string $namespacedName
66+
* @param non-empty-string $file
6167
* @param non-negative-int $startLine
6268
* @param non-negative-int $endLine
6369
* @param ?non-empty-string $parentClass
6470
* @param list<non-empty-string> $interfaces
6571
* @param list<non-empty-string> $traits
6672
* @param array<non-empty-string, Method> $methods
6773
*/
68-
public function __construct(string $name, string $namespacedName, string $namespace, int $startLine, int $endLine, ?string $parentClass, array $interfaces, array $traits, array $methods)
74+
public function __construct(string $name, string $namespacedName, string $namespace, string $file, int $startLine, int $endLine, ?string $parentClass, array $interfaces, array $traits, array $methods)
6975
{
7076
$this->name = $name;
7177
$this->namespacedName = $namespacedName;
7278
$this->namespace = $namespace;
79+
$this->file = $file;
7380
$this->startLine = $startLine;
7481
$this->endLine = $endLine;
7582
$this->parentClass = $parentClass;
@@ -104,6 +111,14 @@ public function namespace(): string
104111
return $this->namespace;
105112
}
106113

114+
/**
115+
* @return non-empty-string
116+
*/
117+
public function file(): string
118+
{
119+
return $this->file;
120+
}
121+
107122
/**
108123
* @return non-negative-int
109124
*/

tests/tests/StaticAnalysis/CodeUnitFindingVisitorTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ private function findCodeUnits(string $filename): CodeUnitFindingVisitor
264264
assert($nodes !== null);
265265

266266
$traverser = new NodeTraverser;
267-
$codeUnitFindingVisitor = new CodeUnitFindingVisitor;
267+
$codeUnitFindingVisitor = new CodeUnitFindingVisitor($filename);
268268

269269
$traverser->addVisitor(new NameResolver);
270270
$traverser->addVisitor(new ParentConnectingVisitor);

tests/tests/StaticAnalysis/Value/ClassTest.php

+6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ public function testHasNamespaced(): void
3232
$this->assertSame('example', $this->class()->namespace());
3333
}
3434

35+
public function testHasFile(): void
36+
{
37+
$this->assertSame('file.php', $this->class()->file());
38+
}
39+
3540
public function testHasStartLine(): void
3641
{
3742
$this->assertSame(1, $this->class()->startLine());
@@ -81,6 +86,7 @@ private function class(?string $parentClass = null, array $interfaces = [], arra
8186
'Example',
8287
'example\Example',
8388
'example',
89+
'file.php',
8490
1,
8591
2,
8692
$parentClass,

0 commit comments

Comments
 (0)