/** * @param State $state * @param Logger $logger * * @throws \RuntimeException */ public function run(State $state, Logger $logger) { $codeParser = new CodeParser(); $cacheDir = $state->config->getCacheDir(); $cacheNote = $cacheDir ? 'cache at ' . $cacheDir : 'cache disabled'; $logger->log(0, sprintf('parse class dirs (%s)', $cacheNote)); $classes = $codeParser->parse($state->config->getClassDirs(), $state->config->getCacheDir()); if ($logger->hasDepth(1)) { foreach ($classes as $class) { $logger->log(1, sprintf('found class <cyan>%s<reset> in %s', $class->name, $class->fileName)); } } $state->classes = $classes; }
public function testParser() { $parser = new CodeParser(); $refs = $parser->parse([__DIR__ . '/samples']); self::assertCount(6, $refs); self::assertArrayHasKey('Simple', $refs); self::assertArrayHasKey('CodeDocs\\Integration\\Base', $refs); self::assertArrayHasKey('CodeDocs\\Integration\\InterFirst', $refs); self::assertArrayHasKey('CodeDocs\\Integration\\InterSecond', $refs); self::assertArrayHasKey('CodeDocs\\Integration\\Complex', $refs); self::assertArrayHasKey('CodeDocs\\Integration\\SomeTrait', $refs); $this->checkSimple($refs['Simple']); $ref = $refs['CodeDocs\\Integration\\Base']; self::assertEquals(['CodeDocs\\Integration\\SomeTrait'], $ref->traits); self::assertTrue($ref->isAbstract); self::assertSame(6, $ref->startLine); self::assertSame(9, $ref->endLine); $ref = $refs['CodeDocs\\Integration\\InterFirst']; self::assertTrue($ref->isInterface); self::assertSame(11, $ref->startLine); self::assertSame(14, $ref->endLine); $ref = $refs['CodeDocs\\Integration\\InterSecond']; self::assertTrue($ref->isInterface); self::assertEquals(['NotExists\\AnotherInterface'], $ref->implements); self::assertSame(16, $ref->startLine); self::assertSame(19, $ref->endLine); $ref = $refs['CodeDocs\\Integration\\Complex']; self::assertFalse($ref->isInterface); self::assertTrue($ref->isFinal); self::assertEquals(['CodeDocs\\Integration\\InterFirst', 'CodeDocs\\Integration\\InterSecond'], $ref->implements); self::assertEquals('CodeDocs\\Integration\\Base', $ref->extends); self::assertSame(21, $ref->startLine); self::assertSame(24, $ref->endLine); $ref = $refs['CodeDocs\\Integration\\SomeTrait']; self::assertTrue($ref->isTrait); self::assertSame(26, $ref->startLine); self::assertSame(28, $ref->endLine); }