Skip to content

Commit a8b112f

Browse files
wip
1 parent d62ada2 commit a8b112f

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

src/Analyzer/FilesToParse.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,12 @@ public function add(SplFileInfo $file): void
3434
$this->queue->enqueue($file);
3535
}
3636

37-
public function isEmpty(): bool
37+
public function next(): ?SplFileInfo
3838
{
39-
return $this->queue->isEmpty();
40-
}
39+
if ($this->queue->isEmpty()) {
40+
return null;
41+
}
4142

42-
public function shift(): SplFileInfo
43-
{
4443
return $this->queue->dequeue();
4544
}
4645
}

src/CLI/Runner.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,13 @@ public function check(
5151
// first step: collect all files to parse
5252
$filesToParse = $this->collectFilesToParse($classSetRule);
5353

54-
// second step: parse all files, resolve extension points recursively, enrich deps
54+
// second step: parse all files and collect class descriptions (and parsing errors) in an index
5555
$classDescriptionIndex = $this->collectParsedFiles($filesToParse, $fileParser, $progress);
5656

57-
// third step: check all rules on all files
57+
// third step: enrich class descriptions with resolved dependencies
58+
$classDescriptionIndex->enrich();
59+
60+
// fourth step: check all rules on all files
5861
$this->checkRulesOnParsedFiles(
5962
$classSetRule,
6063
$classDescriptionIndex,
@@ -111,16 +114,14 @@ protected function collectParsedFiles(FilesToParse $filesToParse, Parser $filePa
111114
$classDescriptionIndex = new ClassDescriptionIndex();
112115
$resolver = FQCNToFilePathResolver::create();
113116

114-
while (!$filesToParse->isEmpty()) {
115-
$file = $filesToParse->shift();
116-
117+
while ($file = $filesToParse->next()) {
117118
$progress->startParsingFile($file->getRelativePathname());
118119

119120
$result = $fileParser->parse($file->getContents(), $file->getRelativePathname());
120121

121122
$classDescriptionIndex->add($file->getRelativePathname(), $result);
122123

123-
// recursively collect extension points (interfaces, traits, parent classes)
124+
// collect extension points (interfaces, traits, parent classes) and add them to the queue
124125
foreach ($result->classDescriptions() as $classDescription) {
125126
foreach ($classDescription->getExtensionPoints() as $fqcn) {
126127
$fileToParse = $resolver->resolve($fqcn);
@@ -136,8 +137,6 @@ protected function collectParsedFiles(FilesToParse $filesToParse, Parser $filePa
136137
$progress->endParsingFile($file->getRelativePathname());
137138
}
138139

139-
$classDescriptionIndex->enrich();
140-
141140
return $classDescriptionIndex;
142141
}
143142

0 commit comments

Comments
 (0)