diff --git a/Makefile b/Makefile
index b43979fc..20b01bf2 100644
--- a/Makefile
+++ b/Makefile
@@ -44,7 +44,7 @@ cs: vendor ## Fixes any found code style violation
$(PHP_CS_FIXER_BIN) fix --allow-risky=yes
phpstan: vendor ## Performs static code analysis using phpstan
- $(PHPSTAN_BIN) analyse
+ $(PHPSTAN_BIN) analyse
psalm: vendor ## Performs static code analysis using psalm
$(PSALM_BIN)
diff --git a/baseline.xml b/baseline.xml
index 6d313797..27865015 100644
--- a/baseline.xml
+++ b/baseline.xml
@@ -28,13 +28,32 @@
]]>
-
+
-
+
+
+
+
+
+
+
+
+
+
+ astMap]]>
+ astMapExtractor->extract()]]>
+
+
+
+
+
+
+
+
@@ -45,31 +64,57 @@
* }>]]>
-
+
-
+
-
-
-
-
+
+
+
+
+
+ astMap]]>
+ astMapExtractor->extract()]]>
+
-
-
-
-
+
+
+
+
+
+ astMap]]>
+ astMapExtractor->extract()]]>
+
-
+
+
+
+
+
+ astMap]]>
+ astMapExtractor->extract()]]>
+
+
+
-
+
+
+
+
+
+
+ astMap]]>
+ astMapExtractor->extract()]]>
+
+
diff --git a/config/services.php b/config/services.php
index fddefcea..8555ba6b 100644
--- a/config/services.php
+++ b/config/services.php
@@ -8,20 +8,16 @@
use Psr\EventDispatcher\EventDispatcherInterface;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Ast\AstFileReferenceCacheInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Contract\Ast\TypeResolverInterface;
use Qossmic\Deptrac\Contract\Config\CollectorType;
use Qossmic\Deptrac\Contract\Config\EmitterType;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
+use Qossmic\Deptrac\Contract\Layer\LayerProviderInterface;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Contract\OutputFormatter\BaselineMapperInterface;
use Qossmic\Deptrac\Core\Analyser\DependencyLayersAnalyser;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\AllowDependencyHandler;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\DependsOnDisallowedLayer;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\DependsOnInternalToken;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\DependsOnPrivateLayer;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\MatchingLayersHandler;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\UncoveredDependentHandler;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\UnmatchedSkippedViolations;
use Qossmic\Deptrac\Core\Analyser\LayerDependenciesAnalyser;
use Qossmic\Deptrac\Core\Analyser\LayerForTokenAnalyser;
use Qossmic\Deptrac\Core\Analyser\RulesetUsageAnalyser;
@@ -30,64 +26,83 @@
use Qossmic\Deptrac\Core\Ast\AstLoader;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\AnonymousClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\CatchExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassConstantExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassMethodExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\FunctionCallExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\FunctionLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\GroupUseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\InstanceofExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\InterfaceExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\NewExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\PropertyExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\StaticCallExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\StaticPropertyFetchExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\TraitUseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\UseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\VariableExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
use Qossmic\Deptrac\Core\Dependency\DependencyResolver;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassSuperglobalDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FileDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionCallDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionSuperglobalDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\UsesDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\InheritanceFlattener;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\InputCollector\FileInputCollector;
use Qossmic\Deptrac\Core\InputCollector\InputCollectorInterface;
-use Qossmic\Deptrac\Core\Layer\Collector\AttributeCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\BoolCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassLikeCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassNameRegexCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorProvider;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorResolver;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorResolverInterface;
-use Qossmic\Deptrac\Core\Layer\Collector\ComposerCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\DirectoryCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\ExtendsCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\FunctionNameCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\GlobCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\ImplementsCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\InheritanceLevelCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\InheritsCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\InterfaceCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\LayerCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\MethodCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\PhpInternalCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\SuperglobalCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\TagValueRegexCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\TraitCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\UsesCollector;
+use Qossmic\Deptrac\Core\Layer\CollectorProvider;
+use Qossmic\Deptrac\Core\Layer\CollectorResolver;
+use Qossmic\Deptrac\Core\Layer\LayerProvider;
use Qossmic\Deptrac\Core\Layer\LayerResolver;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\AllowDependencyHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\DependsOnDisallowedLayer;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\DependsOnInternalToken;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\DependsOnPrivateLayer;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\MatchingLayersHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\UncoveredDependentHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\UnmatchedSkippedViolations;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\AnonymousClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\CatchExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassConstantExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassMethodExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\FunctionCallExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\FunctionLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\GroupUseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\InstanceofExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\InterfaceExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\NewExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\PropertyExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\StaticCallExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\StaticPropertyFetchExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\TraitUseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\UseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\VariableExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FileDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionCallDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\UsesDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Layer\AttributeCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\BoolCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassLikeCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassNameRegexCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ComposerCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\DirectoryCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ExtendsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\FunctionNameCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\GlobCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ImplementsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InheritanceLevelCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InheritsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InterfaceCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\LayerCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\MethodCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\PhpInternalCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\SuperglobalCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\TagValueRegexCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\TraitCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\UsesCollector;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\BaselineOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\CodeclimateOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\ConsoleOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GraphVizOutputDisplayFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GraphVizOutputDotFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GraphVizOutputHtmlFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GraphVizOutputImageFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\JsonOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\JUnitOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\MermaidJSOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\XMLOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Command\AnalyseCommand;
use Qossmic\Deptrac\Supportive\Console\Command\AnalyseRunner;
use Qossmic\Deptrac\Supportive\Console\Command\ChangedFilesCommand;
@@ -105,21 +120,7 @@
use Qossmic\Deptrac\Supportive\Console\Command\InitCommand;
use Qossmic\Deptrac\Supportive\File\Dumper;
use Qossmic\Deptrac\Supportive\File\YmlFileLoader;
-use Qossmic\Deptrac\Supportive\OutputFormatter\BaselineOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\CodeclimateOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
-use Qossmic\Deptrac\Supportive\OutputFormatter\ConsoleOutputFormatter;
use Qossmic\Deptrac\Supportive\OutputFormatter\FormatterProvider;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GithubActionsOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GraphVizOutputDisplayFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GraphVizOutputDotFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GraphVizOutputHtmlFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GraphVizOutputImageFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\JsonOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\JUnitOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\MermaidJSOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\TableOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\XMLOutputFormatter;
use Qossmic\Deptrac\Supportive\OutputFormatter\YamlBaselineMapper;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\EventDispatcher\EventDispatcher;
@@ -269,7 +270,6 @@
])
;
$services->set(TokenResolver::class);
- $services->set(InheritanceFlattener::class);
$services
->set(ClassDependencyEmitter::class)
->tag('dependency_emitter', ['key' => EmitterType::CLASS_TOKEN->value])
@@ -409,6 +409,7 @@
* Analyser
*/
$services->set(AstMapExtractor::class);
+ $services->alias(AstMapExtractorInterface::class, AstMapExtractor::class);
$services
->set(UncoveredDependentHandler::class)
->args([
@@ -426,6 +427,7 @@
'$allowedLayers' => param('ruleset'),
])
;
+ $services->alias(LayerProviderInterface::class, LayerProvider::class);
$services
->set(AllowDependencyHandler::class)
->tag('kernel.event_subscriber')
diff --git a/deptrac.baseline.yaml b/deptrac.baseline.yaml
new file mode 100644
index 00000000..e7e628ea
--- /dev/null
+++ b/deptrac.baseline.yaml
@@ -0,0 +1,5 @@
+deptrac:
+ skip_violations:
+ Qossmic\Deptrac\Supportive\Console\Command\AnalyseCommand:
+ - Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter
+ - Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter
diff --git a/deptrac.config.php b/deptrac.config.php
index 88f852e0..25944c9e 100755
--- a/deptrac.config.php
+++ b/deptrac.config.php
@@ -21,9 +21,10 @@
$config
->paths('src')
->cacheFile('.cache/deptrac.cache')
+ ->baseline('deptrac.baseline.yaml')
->analyser(
AnalyserConfig::create()
- ->internalTag( '@internal' )
+ ->internalTag('@internal')
->types(
EmitterType::CLASS_TOKEN,
EmitterType::CLASS_SUPERGLOBAL_TOKEN,
@@ -34,6 +35,9 @@
)
)
->layers(
+ $defaultBehavior = Layer::withName('DefaultBehavior')->collectors(
+ DirectoryConfig::create('src/DefaultBehavior/.*')
+ ),
$analyser = Layer::withName('Analyser')->collectors(
DirectoryConfig::create('src/Core/Analyser/.*')
),
@@ -66,8 +70,6 @@
),
$outputFormatter = Layer::withName('OutputFormatter')->collectors(
DirectoryConfig::create('src/Supportive/OutputFormatter/.*'),
- ComposerConfig::create('composer.json', 'composer.lock')
- ->addPackage('phpdocumentor/graphviz')->private(),
),
$file = Layer::withName('File')->collectors(
DirectoryConfig::create('src/Supportive/File/.*')
@@ -90,6 +92,10 @@
->addPackage('symfony/finder')
->addPackage('symfony/yaml'),
),
+ $graphviz = Layer::withName('Graphviz')->collectors(
+ ComposerConfig::create('composer.json', 'composer.lock')
+ ->addPackage('phpdocumentor/graphviz'),
+ )
)
->rulesets(
Ruleset::forLayer($layer)->accesses($ast, $symfony),
@@ -103,6 +109,7 @@
Ruleset::forLayer($contract)->accesses($symfony),
Ruleset::forLayer($file)->accesses($symfony),
Ruleset::forLayer($dependencyInjection)->accesses($symfony),
+ Ruleset::forLayer($defaultBehavior)->accesses($symfony, $graphviz),
)
->formatters(
GraphvizConfig::create()
diff --git a/deptrac.yaml b/deptrac.yaml
index 38978cc4..62fdb8bd 100644
--- a/deptrac.yaml
+++ b/deptrac.yaml
@@ -3,6 +3,9 @@ services:
tags:
- { name: kernel.event_subscriber }
+imports:
+ - deptrac.baseline.yaml
+
deptrac:
paths:
- ./src
@@ -58,6 +61,17 @@ deptrac:
layers:
# Domains
+ - name: DefaultBehavior
+ collectors:
+ - type: directory
+ value: src/DefaultBehavior/.*
+ - name: Graphviz
+ collectors:
+ - type: composer
+ composerPath: composer.json
+ composerLockPath: composer.lock
+ packages:
+ - phpdocumentor/graphviz
- name: Analyser
collectors:
- type: directory
@@ -106,12 +120,6 @@ deptrac:
collectors:
- type: directory
value: src/Supportive/OutputFormatter/.*
- - type: composer
- private: true
- composerPath: composer.json
- composerLockPath: composer.lock
- packages:
- - phpdocumentor/graphviz
- name: File
collectors:
- type: directory
@@ -177,3 +185,6 @@ deptrac:
- Symfony
File:
- Symfony
+ DefaultBehavior:
+ - Symfony
+ - Graphiz
diff --git a/internal/deptrac/IgnoreDependenciesOnContract.php b/internal/deptrac/IgnoreDependenciesOnContract.php
index b0e9596e..fcf637de 100644
--- a/internal/deptrac/IgnoreDependenciesOnContract.php
+++ b/internal/deptrac/IgnoreDependenciesOnContract.php
@@ -9,6 +9,9 @@
class IgnoreDependenciesOnContract implements EventSubscriberInterface
{
+ /**
+ * @api
+ */
public function onProcessEvent(ProcessEvent $event): void
{
if (array_key_exists('Contract', $event->dependentLayers)) {
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
index 6d76d0d7..e7e4294a 100644
--- a/phpstan-baseline.neon
+++ b/phpstan-baseline.neon
@@ -37,10 +37,10 @@ parameters:
path: src/Core/Analyser/UnassignedTokenAnalyser.php
-
- message: '#^Property Qossmic\\Deptrac\\Core\\Ast\\AstMap\\ReferenceBuilder\:\:\$tokenTemplates \(list\\) does not accept array\, string\>\.$#'
+ message: '#^Property Qossmic\\Deptrac\\DefaultBehavior\\Ast\\Parser\\Helpers\\ReferenceBuilder\:\:\$tokenTemplates \(list\\) does not accept array\, string\>\.$#'
identifier: assign.propertyType
count: 1
- path: src/Core/Ast/AstMap/ReferenceBuilder.php
+ path: src/DefaultBehavior/Ast/Parser/Helpers/ReferenceBuilder.php
-
message: '#^Method Qossmic\\Deptrac\\Supportive\\Console\\Command\\DebugTokenCommand\:\:execute\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#'
diff --git a/src/Contract/Analyser/EventHelper.php b/src/Contract/Analyser/EventHelper.php
index f135776a..71125299 100644
--- a/src/Contract/Analyser/EventHelper.php
+++ b/src/Contract/Analyser/EventHelper.php
@@ -4,7 +4,7 @@
namespace Qossmic\Deptrac\Contract\Analyser;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
+use Qossmic\Deptrac\Contract\Layer\LayerProviderInterface;
use Qossmic\Deptrac\Contract\OutputFormatter\BaselineMapperInterface;
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Violation;
@@ -25,7 +25,7 @@ final class EventHelper
private readonly array $skippedViolations;
public function __construct(
- public readonly LayerProvider $layerProvider,
+ public readonly LayerProviderInterface $layerProvider,
private readonly BaselineMapperInterface $baselineMapper,
) {
$this->skippedViolations = $this->baselineMapper->loadViolations();
diff --git a/src/Core/Ast/AstException.php b/src/Contract/Ast/AstException.php
similarity index 60%
rename from src/Core/Ast/AstException.php
rename to src/Contract/Ast/AstException.php
index 01d4e5d9..908b6fa8 100644
--- a/src/Core/Ast/AstException.php
+++ b/src/Contract/Ast/AstException.php
@@ -2,15 +2,15 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast;
+namespace Qossmic\Deptrac\Contract\Ast;
use Qossmic\Deptrac\Contract\ExceptionInterface;
-use Qossmic\Deptrac\Core\InputCollector\InputException;
use RuntimeException;
+use Throwable;
class AstException extends RuntimeException implements ExceptionInterface
{
- public static function couldNotCollectFiles(InputException $exception): self
+ public static function couldNotCollectFiles(Throwable $exception): self
{
return new self('Could not create AstMap.', 0, $exception);
}
diff --git a/src/Contract/Ast/AstMap/AstMapInterface.php b/src/Contract/Ast/AstMap/AstMapInterface.php
new file mode 100644
index 00000000..d9dea1e8
--- /dev/null
+++ b/src/Contract/Ast/AstMap/AstMapInterface.php
@@ -0,0 +1,30 @@
+
+ */
+ public function getClassLikeReferences(): array;
+
+ /**
+ * @return array
+ */
+ public function getFileReferences(): array;
+
+ /**
+ * @return array
+ */
+ public function getFunctionReferences(): array;
+
+ public function getFunctionReferenceForToken(FunctionToken $tokenName): ?FunctionReference;
+
+ /**
+ * @return iterable
+ */
+ public function getClassInherits(ClassLikeToken $classLikeName): iterable;
+}
diff --git a/src/Contract/Ast/AstMapExtractorInterface.php b/src/Contract/Ast/AstMapExtractorInterface.php
new file mode 100644
index 00000000..f5b832e1
--- /dev/null
+++ b/src/Contract/Ast/AstMapExtractorInterface.php
@@ -0,0 +1,15 @@
+> $attributes
diff --git a/src/Core/Layer/Collector/CollectorResolverInterface.php b/src/Contract/Layer/CollectorResolverInterface.php
similarity index 81%
rename from src/Core/Layer/Collector/CollectorResolverInterface.php
rename to src/Contract/Layer/CollectorResolverInterface.php
index b014282a..fc823f43 100644
--- a/src/Core/Layer/Collector/CollectorResolverInterface.php
+++ b/src/Contract/Layer/CollectorResolverInterface.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\Contract\Layer;
interface CollectorResolverInterface
{
diff --git a/src/Contract/Layer/LayerProviderInterface.php b/src/Contract/Layer/LayerProviderInterface.php
new file mode 100644
index 00000000..b788bf42
--- /dev/null
+++ b/src/Contract/Layer/LayerProviderInterface.php
@@ -0,0 +1,15 @@
+
+ *
+ * @throws CircularReferenceException
+ */
+ public function getAllowedLayers(string $layerName): array;
+}
diff --git a/src/Core/Layer/LayerResolverInterface.php b/src/Contract/Layer/LayerResolverInterface.php
similarity index 83%
rename from src/Core/Layer/LayerResolverInterface.php
rename to src/Contract/Layer/LayerResolverInterface.php
index 9badfd39..1b1af3aa 100644
--- a/src/Core/Layer/LayerResolverInterface.php
+++ b/src/Contract/Layer/LayerResolverInterface.php
@@ -2,12 +2,10 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer;
+namespace Qossmic\Deptrac\Contract\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
-use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
interface LayerResolverInterface
{
diff --git a/src/Core/Analyser/AnalyserException.php b/src/Core/Analyser/AnalyserException.php
index 2c1a0c1c..88e77b9c 100755
--- a/src/Core/Analyser/AnalyserException.php
+++ b/src/Core/Analyser/AnalyserException.php
@@ -4,12 +4,12 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\ExceptionInterface;
use Qossmic\Deptrac\Contract\Layer\CircularReferenceException;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
use Qossmic\Deptrac\Core\Dependency\InvalidEmitterConfigurationException;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
use RuntimeException;
diff --git a/src/Core/Analyser/DependencyLayersAnalyser.php b/src/Core/Analyser/DependencyLayersAnalyser.php
index 5902675f..8eed8b4d 100644
--- a/src/Core/Analyser/DependencyLayersAnalyser.php
+++ b/src/Core/Analyser/DependencyLayersAnalyser.php
@@ -8,17 +8,17 @@
use Qossmic\Deptrac\Contract\Analyser\AnalysisResult;
use Qossmic\Deptrac\Contract\Analyser\PostProcessEvent;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Contract\Result\Warning;
-use Qossmic\Deptrac\Core\Ast\AstException;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\DependencyResolver;
use Qossmic\Deptrac\Core\Dependency\InvalidEmitterConfigurationException;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
use function count;
diff --git a/src/Core/Analyser/LayerDependenciesAnalyser.php b/src/Core/Analyser/LayerDependenciesAnalyser.php
index 6e992491..b2dcba94 100644
--- a/src/Core/Analyser/LayerDependenciesAnalyser.php
+++ b/src/Core/Analyser/LayerDependenciesAnalyser.php
@@ -4,17 +4,17 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Contract\Result\Uncovered;
-use Qossmic\Deptrac\Core\Ast\AstException;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\DependencyResolver;
use Qossmic\Deptrac\Core\Dependency\InvalidEmitterConfigurationException;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
class LayerDependenciesAnalyser
{
diff --git a/src/Core/Analyser/LayerForTokenAnalyser.php b/src/Core/Analyser/LayerForTokenAnalyser.php
index 737ec19f..ddde05fc 100644
--- a/src/Core/Analyser/LayerForTokenAnalyser.php
+++ b/src/Core/Analyser/LayerForTokenAnalyser.php
@@ -4,16 +4,16 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
use function array_values;
use function ksort;
diff --git a/src/Core/Analyser/RulesetUsageAnalyser.php b/src/Core/Analyser/RulesetUsageAnalyser.php
index 0c97fce6..56b21e07 100644
--- a/src/Core/Analyser/RulesetUsageAnalyser.php
+++ b/src/Core/Analyser/RulesetUsageAnalyser.php
@@ -4,18 +4,18 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CircularReferenceException;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
-use Qossmic\Deptrac\Core\Ast\AstException;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\DependencyResolver;
use Qossmic\Deptrac\Core\Dependency\InvalidEmitterConfigurationException;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\Core\Layer\LayerProvider;
class RulesetUsageAnalyser
{
diff --git a/src/Core/Analyser/TokenInLayerAnalyser.php b/src/Core/Analyser/TokenInLayerAnalyser.php
index 401a322e..2264165a 100644
--- a/src/Core/Analyser/TokenInLayerAnalyser.php
+++ b/src/Core/Analyser/TokenInLayerAnalyser.php
@@ -4,15 +4,15 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Config\EmitterType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
use function array_values;
use function in_array;
diff --git a/src/Core/Analyser/UnassignedTokenAnalyser.php b/src/Core/Analyser/UnassignedTokenAnalyser.php
index 5127554e..1b53fb8c 100644
--- a/src/Core/Analyser/UnassignedTokenAnalyser.php
+++ b/src/Core/Analyser/UnassignedTokenAnalyser.php
@@ -4,15 +4,15 @@
namespace Qossmic\Deptrac\Core\Analyser;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Config\EmitterType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
use Qossmic\Deptrac\Core\Dependency\UnrecognizedTokenException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
use function array_values;
use function natcasesort;
diff --git a/src/Core/Ast/AstLoader.php b/src/Core/Ast/AstLoader.php
index e790ac8a..abcd4aac 100644
--- a/src/Core/Ast/AstLoader.php
+++ b/src/Core/Ast/AstLoader.php
@@ -11,7 +11,6 @@
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Contract\Ast\PostCreateAstMapEvent;
use Qossmic\Deptrac\Contract\Ast\PreCreateAstMapEvent;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
class AstLoader
{
diff --git a/src/Core/Ast/AstMap/AstMap.php b/src/Core/Ast/AstMap.php
similarity index 94%
rename from src/Core/Ast/AstMap/AstMap.php
rename to src/Core/Ast/AstMap.php
index ec48d45c..78f2a05c 100644
--- a/src/Core/Ast/AstMap/AstMap.php
+++ b/src/Core/Ast/AstMap.php
@@ -2,10 +2,11 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\AstMap;
+namespace Qossmic\Deptrac\Core\Ast;
use ArrayObject;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInherit;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileReference;
@@ -15,7 +16,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenInterface;
use SplStack;
-class AstMap
+class AstMap implements AstMapInterface
{
/**
* @var array
@@ -42,25 +43,16 @@ public function __construct(array $astFileReferences)
}
}
- /**
- * @return ClassLikeReference[]
- */
public function getClassLikeReferences(): array
{
return $this->classReferences;
}
- /**
- * @return FileReference[]
- */
public function getFileReferences(): array
{
return $this->fileReferences;
}
- /**
- * @return FunctionReference[]
- */
public function getFunctionReferences(): array
{
return $this->functionReferences;
@@ -81,9 +73,6 @@ public function getFileReferenceForToken(FileToken $tokenName): ?FileReference
return $this->fileReferences[$tokenName->toString()] ?? null;
}
- /**
- * @return iterable
- */
public function getClassInherits(ClassLikeToken $classLikeName): iterable
{
$classReference = $this->getClassReferenceForToken($classLikeName);
diff --git a/src/Core/Ast/AstMapExtractor.php b/src/Core/Ast/AstMapExtractor.php
index 8486bc14..ab782412 100644
--- a/src/Core/Ast/AstMapExtractor.php
+++ b/src/Core/Ast/AstMapExtractor.php
@@ -4,11 +4,12 @@
namespace Qossmic\Deptrac\Core\Ast;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Contract\Ast\AstException;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
use Qossmic\Deptrac\Core\InputCollector\InputCollectorInterface;
use Qossmic\Deptrac\Core\InputCollector\InputException;
-class AstMapExtractor
+class AstMapExtractor implements AstMapExtractorInterface
{
private ?AstMap $astMapCache = null;
diff --git a/src/Core/Ast/Parser/NikicPhpParser/NikicTypeResolver.php b/src/Core/Ast/Parser/NikicTypeResolver.php
similarity index 99%
rename from src/Core/Ast/Parser/NikicPhpParser/NikicTypeResolver.php
rename to src/Core/Ast/Parser/NikicTypeResolver.php
index 28bf9e47..c68b84da 100644
--- a/src/Core/Ast/Parser/NikicPhpParser/NikicTypeResolver.php
+++ b/src/Core/Ast/Parser/NikicTypeResolver.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser;
+namespace Qossmic\Deptrac\Core\Ast\Parser;
use InvalidArgumentException;
use phpDocumentor\Reflection\FqsenResolver;
diff --git a/src/Core/Dependency/DependencyList.php b/src/Core/Dependency/DependencyList.php
index acc74041..8b5d0b44 100644
--- a/src/Core/Dependency/DependencyList.php
+++ b/src/Core/Dependency/DependencyList.php
@@ -6,16 +6,17 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenInterface;
use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
-class DependencyList
+class DependencyList implements DependencyListInterface
{
- /** @var array */
+ /** @var array */
private array $dependencies = [];
/** @var array */
private array $inheritDependencies = [];
- public function addDependency(Dependency $dependency): self
+ public function addDependency(DependencyInterface $dependency): void
{
$tokenName = $dependency->getDepender()->toString();
if (!isset($this->dependencies[$tokenName])) {
@@ -23,24 +24,22 @@ public function addDependency(Dependency $dependency): self
}
$this->dependencies[$tokenName][] = $dependency;
-
- return $this;
}
public function addInheritDependency(InheritDependency $dependency): self
{
- $classLikeName = $dependency->getDepender()->toString();
- if (!isset($this->inheritDependencies[$classLikeName])) {
- $this->inheritDependencies[$classLikeName] = [];
+ $tokenName = $dependency->getDepender()->toString();
+ if (!isset($this->inheritDependencies[$tokenName])) {
+ $this->inheritDependencies[$tokenName] = [];
}
- $this->inheritDependencies[$classLikeName][] = $dependency;
+ $this->inheritDependencies[$tokenName][] = $dependency;
return $this;
}
/**
- * @return Dependency[]
+ * @return DependencyInterface[]
*/
public function getDependenciesByClass(TokenInterface $classLikeName): array
{
diff --git a/src/Core/Dependency/DependencyResolver.php b/src/Core/Dependency/DependencyResolver.php
index 08f8a13d..86a48c35 100644
--- a/src/Core/Dependency/DependencyResolver.php
+++ b/src/Core/Dependency/DependencyResolver.php
@@ -7,12 +7,12 @@
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\EventDispatcher\EventDispatcherInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
use Qossmic\Deptrac\Contract\Dependency\PostEmitEvent;
use Qossmic\Deptrac\Contract\Dependency\PostFlattenEvent;
use Qossmic\Deptrac\Contract\Dependency\PreEmitEvent;
use Qossmic\Deptrac\Contract\Dependency\PreFlattenEvent;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Emitter\DependencyEmitterInterface;
+use Qossmic\Deptrac\Core\Ast\AstMap;
class DependencyResolver
{
@@ -21,7 +21,6 @@ class DependencyResolver
*/
public function __construct(
private readonly array $config,
- private readonly InheritanceFlattener $inheritanceFlattener,
private readonly ContainerInterface $emitterLocator,
private readonly EventDispatcherInterface $eventDispatcher,
) {}
@@ -49,9 +48,25 @@ public function resolve(AstMap $astMap): DependencyList
}
$this->eventDispatcher->dispatch(new PreFlattenEvent());
- $this->inheritanceFlattener->flattenDependencies($astMap, $result);
+ self::flattenDependencies($astMap, $result);
$this->eventDispatcher->dispatch(new PostFlattenEvent());
return $result;
}
+
+ public static function flattenDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ {
+ foreach ($astMap->getClassLikeReferences() as $classReference) {
+ $classLikeName = $classReference->getToken();
+ foreach ($astMap->getClassInherits($classLikeName) as $inherit) {
+ foreach ($dependencyList->getDependenciesByClass($inherit->classLikeName) as $dep) {
+ $dependencyList->addInheritDependency(
+ new InheritDependency(
+ $classLikeName, $dep->getDependent(), $dep, $inherit
+ )
+ );
+ }
+ }
+ }
+ }
}
diff --git a/src/Core/Dependency/Emitter/DependencyEmitterInterface.php b/src/Core/Dependency/Emitter/DependencyEmitterInterface.php
deleted file mode 100644
index 1940d81d..00000000
--- a/src/Core/Dependency/Emitter/DependencyEmitterInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-getClassLikeReferences() as $classReference) {
- $classLikeName = $classReference->getToken();
- foreach ($astMap->getClassInherits($classLikeName) as $inherit) {
- foreach ($dependencyList->getDependenciesByClass($inherit->classLikeName) as $dep) {
- $dependencyList->addInheritDependency(
- new InheritDependency(
- $classLikeName, $dep->getDependent(), $dep, $inherit
- )
- );
- }
- }
- }
- }
-}
diff --git a/src/Core/Dependency/InvalidEmitterConfigurationException.php b/src/Core/Dependency/InvalidEmitterConfigurationException.php
index ae8816de..ae7be817 100755
--- a/src/Core/Dependency/InvalidEmitterConfigurationException.php
+++ b/src/Core/Dependency/InvalidEmitterConfigurationException.php
@@ -4,8 +4,8 @@
namespace Qossmic\Deptrac\Core\Dependency;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
use Qossmic\Deptrac\Contract\ExceptionInterface;
-use Qossmic\Deptrac\Core\Dependency\Emitter\DependencyEmitterInterface;
use RuntimeException;
class InvalidEmitterConfigurationException extends RuntimeException implements ExceptionInterface
diff --git a/src/Core/Dependency/TokenResolver.php b/src/Core/Dependency/TokenResolver.php
index d324e2c1..584ff462 100644
--- a/src/Core/Dependency/TokenResolver.php
+++ b/src/Core/Dependency/TokenResolver.php
@@ -14,7 +14,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\VariableReference;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Core\Ast\AstMap;
class TokenResolver
{
diff --git a/src/Core/Layer/Collector/CollectorProvider.php b/src/Core/Layer/CollectorProvider.php
similarity index 96%
rename from src/Core/Layer/Collector/CollectorProvider.php
rename to src/Core/Layer/CollectorProvider.php
index d8accad3..3cd39881 100644
--- a/src/Core/Layer/Collector/CollectorProvider.php
+++ b/src/Core/Layer/CollectorProvider.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\Core\Layer;
use Psr\Container\ContainerInterface;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
diff --git a/src/Core/Layer/Collector/CollectorResolver.php b/src/Core/Layer/CollectorResolver.php
similarity index 88%
rename from src/Core/Layer/Collector/CollectorResolver.php
rename to src/Core/Layer/CollectorResolver.php
index 548511be..5073f6db 100644
--- a/src/Core/Layer/Collector/CollectorResolver.php
+++ b/src/Core/Layer/CollectorResolver.php
@@ -2,9 +2,11 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\Core\Layer;
use Psr\Container\ContainerExceptionInterface;
+use Qossmic\Deptrac\Contract\Layer\Collectable;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use function array_key_exists;
diff --git a/src/Contract/Layer/LayerProvider.php b/src/Core/Layer/LayerProvider.php
similarity index 86%
rename from src/Contract/Layer/LayerProvider.php
rename to src/Core/Layer/LayerProvider.php
index 90774f7c..19901de4 100644
--- a/src/Contract/Layer/LayerProvider.php
+++ b/src/Core/Layer/LayerProvider.php
@@ -2,12 +2,15 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Contract\Layer;
+namespace Qossmic\Deptrac\Core\Layer;
+
+use Qossmic\Deptrac\Contract\Layer\CircularReferenceException;
+use Qossmic\Deptrac\Contract\Layer\LayerProviderInterface;
/**
* Provides information about layer configuration.
*/
-final class LayerProvider
+final class LayerProvider implements LayerProviderInterface
{
/**
* @param array> $allowedLayers source layer -> target layers
diff --git a/src/Core/Layer/LayerResolver.php b/src/Core/Layer/LayerResolver.php
index 28598893..064cdc6d 100644
--- a/src/Core/Layer/LayerResolver.php
+++ b/src/Core/Layer/LayerResolver.php
@@ -5,9 +5,10 @@
namespace Qossmic\Deptrac\Core\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Layer\Collectable;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\Collectable;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorResolverInterface;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use function array_key_exists;
diff --git a/src/Core/Analyser/EventHandler/AllowDependencyHandler.php b/src/DefaultBehavior/Analyser/AllowDependencyHandler.php
similarity index 82%
rename from src/Core/Analyser/EventHandler/AllowDependencyHandler.php
rename to src/DefaultBehavior/Analyser/AllowDependencyHandler.php
index 6ca89d66..ae29023b 100644
--- a/src/Core/Analyser/EventHandler/AllowDependencyHandler.php
+++ b/src/DefaultBehavior/Analyser/AllowDependencyHandler.php
@@ -2,16 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
use Qossmic\Deptrac\Contract\Result\Allowed;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-/**
- * @internal
- */
-class AllowDependencyHandler implements EventSubscriberInterface
+final class AllowDependencyHandler implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
diff --git a/src/Core/Analyser/EventHandler/DependsOnDisallowedLayer.php b/src/DefaultBehavior/Analyser/DependsOnDisallowedLayer.php
similarity index 91%
rename from src/Core/Analyser/EventHandler/DependsOnDisallowedLayer.php
rename to src/DefaultBehavior/Analyser/DependsOnDisallowedLayer.php
index fe307a13..b26aceac 100644
--- a/src/Core/Analyser/EventHandler/DependsOnDisallowedLayer.php
+++ b/src/DefaultBehavior/Analyser/DependsOnDisallowedLayer.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
@@ -12,10 +12,7 @@
use function in_array;
-/**
- * @internal
- */
-class DependsOnDisallowedLayer implements ViolationCreatingInterface
+final class DependsOnDisallowedLayer implements ViolationCreatingInterface
{
public function __construct(private readonly EventHelper $eventHelper) {}
diff --git a/src/Core/Analyser/EventHandler/DependsOnInternalToken.php b/src/DefaultBehavior/Analyser/DependsOnInternalToken.php
similarity index 92%
rename from src/Core/Analyser/EventHandler/DependsOnInternalToken.php
rename to src/DefaultBehavior/Analyser/DependsOnInternalToken.php
index ab242feb..d7cf71fe 100644
--- a/src/Core/Analyser/EventHandler/DependsOnInternalToken.php
+++ b/src/DefaultBehavior/Analyser/DependsOnInternalToken.php
@@ -2,17 +2,14 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
use Qossmic\Deptrac\Contract\Analyser\ViolationCreatingInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
-/**
- * @internal
- */
-class DependsOnInternalToken implements ViolationCreatingInterface
+final class DependsOnInternalToken implements ViolationCreatingInterface
{
private ?string $internalTag;
diff --git a/src/Core/Analyser/EventHandler/DependsOnPrivateLayer.php b/src/DefaultBehavior/Analyser/DependsOnPrivateLayer.php
similarity index 89%
rename from src/Core/Analyser/EventHandler/DependsOnPrivateLayer.php
rename to src/DefaultBehavior/Analyser/DependsOnPrivateLayer.php
index 804aef91..c871b4e7 100644
--- a/src/Core/Analyser/EventHandler/DependsOnPrivateLayer.php
+++ b/src/DefaultBehavior/Analyser/DependsOnPrivateLayer.php
@@ -2,16 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
use Qossmic\Deptrac\Contract\Analyser\ViolationCreatingInterface;
-/**
- * @internal
- */
-class DependsOnPrivateLayer implements ViolationCreatingInterface
+final class DependsOnPrivateLayer implements ViolationCreatingInterface
{
public function __construct(private readonly EventHelper $eventHelper) {}
diff --git a/src/Core/Analyser/EventHandler/MatchingLayersHandler.php b/src/DefaultBehavior/Analyser/MatchingLayersHandler.php
similarity index 82%
rename from src/Core/Analyser/EventHandler/MatchingLayersHandler.php
rename to src/DefaultBehavior/Analyser/MatchingLayersHandler.php
index 068ec434..d914db6a 100644
--- a/src/Core/Analyser/EventHandler/MatchingLayersHandler.php
+++ b/src/DefaultBehavior/Analyser/MatchingLayersHandler.php
@@ -2,15 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-/**
- * @internal
- */
-class MatchingLayersHandler implements EventSubscriberInterface
+final class MatchingLayersHandler implements EventSubscriberInterface
{
public function invoke(ProcessEvent $event): void
{
diff --git a/src/Core/Analyser/EventHandler/UncoveredDependentHandler.php b/src/DefaultBehavior/Analyser/UncoveredDependentHandler.php
similarity index 90%
rename from src/Core/Analyser/EventHandler/UncoveredDependentHandler.php
rename to src/DefaultBehavior/Analyser/UncoveredDependentHandler.php
index f2af6b55..bb60a7ed 100644
--- a/src/Core/Analyser/EventHandler/UncoveredDependentHandler.php
+++ b/src/DefaultBehavior/Analyser/UncoveredDependentHandler.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use JetBrains\PHPStormStub\PhpStormStubsMap;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
@@ -10,10 +10,7 @@
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-/**
- * @internal
- */
-class UncoveredDependentHandler implements EventSubscriberInterface
+final class UncoveredDependentHandler implements EventSubscriberInterface
{
public function __construct(private readonly bool $ignoreUncoveredInternalClasses) {}
diff --git a/src/Core/Analyser/EventHandler/UnmatchedSkippedViolations.php b/src/DefaultBehavior/Analyser/UnmatchedSkippedViolations.php
similarity index 73%
rename from src/Core/Analyser/EventHandler/UnmatchedSkippedViolations.php
rename to src/DefaultBehavior/Analyser/UnmatchedSkippedViolations.php
index 46c01ea5..d5fa4a8d 100644
--- a/src/Core/Analyser/EventHandler/UnmatchedSkippedViolations.php
+++ b/src/DefaultBehavior/Analyser/UnmatchedSkippedViolations.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Analyser\EventHandler;
+namespace Qossmic\Deptrac\DefaultBehavior\Analyser;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Analyser\PostProcessEvent;
@@ -11,14 +11,11 @@
use function sprintf;
-/**
- * @internal
- */
-class UnmatchedSkippedViolations implements EventSubscriberInterface
+final class UnmatchedSkippedViolations implements EventSubscriberInterface
{
public function __construct(private readonly EventHelper $eventHelper) {}
- public function handleUnmatchedSkipped(PostProcessEvent $event): void
+ public function invoke(PostProcessEvent $event): void
{
$ruleset = $event->getResult();
@@ -32,7 +29,7 @@ public function handleUnmatchedSkipped(PostProcessEvent $event): void
public static function getSubscribedEvents()
{
return [
- PostProcessEvent::class => ['handleUnmatchedSkipped'],
+ PostProcessEvent::class => ['invoke'],
];
}
}
diff --git a/src/Core/Ast/Parser/Extractors/AnonymousClassExtractor.php b/src/DefaultBehavior/Ast/Extractors/AnonymousClassExtractor.php
similarity index 91%
rename from src/Core/Ast/Parser/Extractors/AnonymousClassExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/AnonymousClassExtractor.php
index 4ab32949..592cfda6 100644
--- a/src/Core/Ast/Parser/Extractors/AnonymousClassExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/AnonymousClassExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Name;
@@ -16,7 +16,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class AnonymousClassExtractor implements ReferenceExtractorInterface
+final class AnonymousClassExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/CatchExtractor.php b/src/DefaultBehavior/Ast/Extractors/CatchExtractor.php
similarity index 89%
rename from src/Core/Ast/Parser/Extractors/CatchExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/CatchExtractor.php
index 43f7d5b3..da6f759d 100644
--- a/src/Core/Ast/Parser/Extractors/CatchExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/CatchExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Stmt\Catch_;
@@ -16,7 +16,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class CatchExtractor implements ReferenceExtractorInterface
+final class CatchExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/ClassConstantExtractor.php b/src/DefaultBehavior/Ast/Extractors/ClassConstantExtractor.php
similarity index 87%
rename from src/Core/Ast/Parser/Extractors/ClassConstantExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/ClassConstantExtractor.php
index 6080dc44..c1a1ea07 100644
--- a/src/Core/Ast/Parser/Extractors/ClassConstantExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/ClassConstantExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Expr\ClassConstFetch;
@@ -16,7 +16,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class ClassConstantExtractor implements ReferenceExtractorInterface
+final class ClassConstantExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/ClassExtractor.php b/src/DefaultBehavior/Ast/Extractors/ClassExtractor.php
similarity index 90%
rename from src/Core/Ast/Parser/Extractors/ClassExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/ClassExtractor.php
index fdccc6dd..6c6faa79 100644
--- a/src/Core/Ast/Parser/Extractors/ClassExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/ClassExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Name;
@@ -16,7 +16,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class ClassExtractor implements ReferenceExtractorInterface
+final class ClassExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/ClassLikeExtractor.php b/src/DefaultBehavior/Ast/Extractors/ClassLikeExtractor.php
similarity index 96%
rename from src/Core/Ast/Parser/Extractors/ClassLikeExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/ClassLikeExtractor.php
index 192c66c6..7302d2be 100644
--- a/src/Core/Ast/Parser/Extractors/ClassLikeExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/ClassLikeExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Comment\Doc;
use PhpParser\Node;
@@ -24,7 +24,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class ClassLikeExtractor implements ReferenceExtractorInterface
+final class ClassLikeExtractor implements ReferenceExtractorInterface
{
private readonly Lexer $lexer;
private readonly PhpDocParser $docParser;
diff --git a/src/Core/Ast/Parser/Extractors/ClassMethodExtractor.php b/src/DefaultBehavior/Ast/Extractors/ClassMethodExtractor.php
similarity index 95%
rename from src/Core/Ast/Parser/Extractors/ClassMethodExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/ClassMethodExtractor.php
index 329eadc9..cc22c209 100644
--- a/src/Core/Ast/Parser/Extractors/ClassMethodExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/ClassMethodExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Comment\Doc;
use PhpParser\Node;
@@ -23,7 +23,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class ClassMethodExtractor implements ReferenceExtractorInterface
+final class ClassMethodExtractor implements ReferenceExtractorInterface
{
private readonly Lexer $lexer;
private readonly PhpDocParser $docParser;
diff --git a/src/Core/Ast/Parser/Extractors/FunctionCallExtractor.php b/src/DefaultBehavior/Ast/Extractors/FunctionCallExtractor.php
similarity index 91%
rename from src/Core/Ast/Parser/Extractors/FunctionCallExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/FunctionCallExtractor.php
index eb48f26d..7c557dcb 100644
--- a/src/Core/Ast/Parser/Extractors/FunctionCallExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/FunctionCallExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
@@ -21,7 +21,7 @@
*
* @implements ReferenceExtractorInterface<\PhpParser\Node\Expr\FuncCall>
*/
-class FunctionCallExtractor implements ReferenceExtractorInterface
+final class FunctionCallExtractor implements ReferenceExtractorInterface
{
public function __construct(
private readonly TypeResolverInterface $typeResolver,
diff --git a/src/Core/Ast/Parser/Extractors/FunctionLikeExtractor.php b/src/DefaultBehavior/Ast/Extractors/FunctionLikeExtractor.php
similarity index 93%
rename from src/Core/Ast/Parser/Extractors/FunctionLikeExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/FunctionLikeExtractor.php
index 8697f18f..d62a6f53 100644
--- a/src/Core/Ast/Parser/Extractors/FunctionLikeExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/FunctionLikeExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
@@ -15,7 +15,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class FunctionLikeExtractor implements ReferenceExtractorInterface
+final class FunctionLikeExtractor implements ReferenceExtractorInterface
{
public function __construct(
private readonly TypeResolverInterface $typeResolver,
diff --git a/src/Core/Ast/Parser/Extractors/GroupUseExtractor.php b/src/DefaultBehavior/Ast/Extractors/GroupUseExtractor.php
similarity index 88%
rename from src/Core/Ast/Parser/Extractors/GroupUseExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/GroupUseExtractor.php
index 6140f044..90a6a68d 100644
--- a/src/Core/Ast/Parser/Extractors/GroupUseExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/GroupUseExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Stmt\GroupUse;
@@ -16,7 +16,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class GroupUseExtractor implements ReferenceExtractorInterface
+final class GroupUseExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/InstanceofExtractor.php b/src/DefaultBehavior/Ast/Extractors/InstanceofExtractor.php
similarity index 89%
rename from src/Core/Ast/Parser/Extractors/InstanceofExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/InstanceofExtractor.php
index dfa5305a..47dcb6f6 100644
--- a/src/Core/Ast/Parser/Extractors/InstanceofExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/InstanceofExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Expr\Instanceof_;
@@ -17,7 +17,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class InstanceofExtractor implements ReferenceExtractorInterface
+final class InstanceofExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/InterfaceExtractor.php b/src/DefaultBehavior/Ast/Extractors/InterfaceExtractor.php
similarity index 87%
rename from src/Core/Ast/Parser/Extractors/InterfaceExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/InterfaceExtractor.php
index 2140ceae..cf5ffbb6 100644
--- a/src/Core/Ast/Parser/Extractors/InterfaceExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/InterfaceExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Stmt\Interface_;
@@ -15,7 +15,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class InterfaceExtractor implements ReferenceExtractorInterface
+final class InterfaceExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/NewExtractor.php b/src/DefaultBehavior/Ast/Extractors/NewExtractor.php
similarity index 90%
rename from src/Core/Ast/Parser/Extractors/NewExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/NewExtractor.php
index 386fdbba..c39690d3 100644
--- a/src/Core/Ast/Parser/Extractors/NewExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/NewExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Expr\New_;
@@ -17,7 +17,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class NewExtractor implements ReferenceExtractorInterface
+final class NewExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/PropertyExtractor.php b/src/DefaultBehavior/Ast/Extractors/PropertyExtractor.php
similarity index 95%
rename from src/Core/Ast/Parser/Extractors/PropertyExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/PropertyExtractor.php
index 40cffa14..e70bbfe1 100644
--- a/src/Core/Ast/Parser/Extractors/PropertyExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/PropertyExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Comment\Doc;
use PhpParser\Node;
@@ -23,7 +23,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class PropertyExtractor implements ReferenceExtractorInterface
+final class PropertyExtractor implements ReferenceExtractorInterface
{
private readonly Lexer $lexer;
private readonly PhpDocParser $docParser;
diff --git a/src/Core/Ast/Parser/Extractors/StaticCallExtractor.php b/src/DefaultBehavior/Ast/Extractors/StaticCallExtractor.php
similarity index 89%
rename from src/Core/Ast/Parser/Extractors/StaticCallExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/StaticCallExtractor.php
index 4f0afdeb..20329f62 100644
--- a/src/Core/Ast/Parser/Extractors/StaticCallExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/StaticCallExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Expr\StaticCall;
@@ -17,7 +17,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class StaticCallExtractor implements ReferenceExtractorInterface
+final class StaticCallExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/StaticPropertyFetchExtractor.php b/src/DefaultBehavior/Ast/Extractors/StaticPropertyFetchExtractor.php
similarity index 89%
rename from src/Core/Ast/Parser/Extractors/StaticPropertyFetchExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/StaticPropertyFetchExtractor.php
index e26e0073..49dfcfdd 100644
--- a/src/Core/Ast/Parser/Extractors/StaticPropertyFetchExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/StaticPropertyFetchExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Expr\StaticPropertyFetch;
@@ -17,7 +17,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class StaticPropertyFetchExtractor implements ReferenceExtractorInterface
+final class StaticPropertyFetchExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/TraitUseExtractor.php b/src/DefaultBehavior/Ast/Extractors/TraitUseExtractor.php
similarity index 89%
rename from src/Core/Ast/Parser/Extractors/TraitUseExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/TraitUseExtractor.php
index d15af3a6..a351b543 100644
--- a/src/Core/Ast/Parser/Extractors/TraitUseExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/TraitUseExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
@@ -15,7 +15,7 @@
/**
* @implements ReferenceExtractorInterface<\PhpParser\Node\Stmt\TraitUse>
*/
-class TraitUseExtractor implements ReferenceExtractorInterface
+final class TraitUseExtractor implements ReferenceExtractorInterface
{
public function __construct(private readonly TypeResolverInterface $typeResolver) {}
diff --git a/src/Core/Ast/Parser/Extractors/UseExtractor.php b/src/DefaultBehavior/Ast/Extractors/UseExtractor.php
similarity index 88%
rename from src/Core/Ast/Parser/Extractors/UseExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/UseExtractor.php
index 515efce4..5ec1b783 100644
--- a/src/Core/Ast/Parser/Extractors/UseExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/UseExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Node;
use PhpParser\Node\Stmt\Use_;
@@ -15,7 +15,7 @@
/**
* @implements ReferenceExtractorInterface
*/
-class UseExtractor implements ReferenceExtractorInterface
+final class UseExtractor implements ReferenceExtractorInterface
{
public function processNode(Node $node, ReferenceBuilderInterface $referenceBuilder, TypeScope $typeScope): void
{
diff --git a/src/Core/Ast/Parser/Extractors/VariableExtractor.php b/src/DefaultBehavior/Ast/Extractors/VariableExtractor.php
similarity index 95%
rename from src/Core/Ast/Parser/Extractors/VariableExtractor.php
rename to src/DefaultBehavior/Ast/Extractors/VariableExtractor.php
index ea9ed1bf..49921de8 100644
--- a/src/Core/Ast/Parser/Extractors/VariableExtractor.php
+++ b/src/DefaultBehavior/Ast/Extractors/VariableExtractor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\Extractors;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Extractors;
use PhpParser\Comment\Doc;
use PhpParser\Node;
@@ -23,7 +23,7 @@
/**
* @implements ReferenceExtractorInterface<\PhpParser\Node\Expr\Variable>
*/
-class VariableExtractor implements ReferenceExtractorInterface
+final class VariableExtractor implements ReferenceExtractorInterface
{
/**
* @var list
diff --git a/src/Core/Ast/AstMap/ClassLikeReferenceBuilder.php b/src/DefaultBehavior/Ast/Parser/Helpers/ClassLikeReferenceBuilder.php
similarity index 97%
rename from src/Core/Ast/AstMap/ClassLikeReferenceBuilder.php
rename to src/DefaultBehavior/Ast/Parser/Helpers/ClassLikeReferenceBuilder.php
index 08f5c80f..338ecd5a 100644
--- a/src/Core/Ast/AstMap/ClassLikeReferenceBuilder.php
+++ b/src/DefaultBehavior/Ast/Parser/Helpers/ClassLikeReferenceBuilder.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\AstMap;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
diff --git a/src/Core/Ast/AstMap/FileReferenceBuilder.php b/src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceBuilder.php
similarity index 98%
rename from src/Core/Ast/AstMap/FileReferenceBuilder.php
rename to src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceBuilder.php
index 18a2fc35..c812dfaf 100644
--- a/src/Core/Ast/AstMap/FileReferenceBuilder.php
+++ b/src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceBuilder.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\AstMap;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileReference;
diff --git a/src/Core/Ast/Parser/NikicPhpParser/FileReferenceVisitor.php b/src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceVisitor.php
similarity index 97%
rename from src/Core/Ast/Parser/NikicPhpParser/FileReferenceVisitor.php
rename to src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceVisitor.php
index 158dd97b..f066de30 100644
--- a/src/Core/Ast/Parser/NikicPhpParser/FileReferenceVisitor.php
+++ b/src/DefaultBehavior/Ast/Parser/Helpers/FileReferenceVisitor.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers;
use PhpParser\Node;
use PhpParser\Node\Identifier;
@@ -22,8 +22,6 @@
use PHPStan\PhpDocParser\Parser\TypeParser;
use Qossmic\Deptrac\Contract\Ast\ReferenceExtractorInterface;
use Qossmic\Deptrac\Contract\Ast\TypeScope;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
-use Qossmic\Deptrac\Core\Ast\AstMap\ReferenceBuilder;
class FileReferenceVisitor extends NodeVisitorAbstract
{
diff --git a/src/Core/Ast/AstMap/FunctionReferenceBuilder.php b/src/DefaultBehavior/Ast/Parser/Helpers/FunctionReferenceBuilder.php
similarity index 89%
rename from src/Core/Ast/AstMap/FunctionReferenceBuilder.php
rename to src/DefaultBehavior/Ast/Parser/Helpers/FunctionReferenceBuilder.php
index 8a552f48..6c65efa7 100644
--- a/src/Core/Ast/AstMap/FunctionReferenceBuilder.php
+++ b/src/DefaultBehavior/Ast/Parser/Helpers/FunctionReferenceBuilder.php
@@ -2,12 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\AstMap;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
-class FunctionReferenceBuilder extends ReferenceBuilder
+final class FunctionReferenceBuilder extends ReferenceBuilder
{
/**
* @param list $tokenTemplates
diff --git a/src/Core/Ast/AstMap/ReferenceBuilder.php b/src/DefaultBehavior/Ast/Parser/Helpers/ReferenceBuilder.php
similarity index 97%
rename from src/Core/Ast/AstMap/ReferenceBuilder.php
rename to src/DefaultBehavior/Ast/Parser/Helpers/ReferenceBuilder.php
index 0f2fa8ff..a6bb4a1b 100644
--- a/src/Core/Ast/AstMap/ReferenceBuilder.php
+++ b/src/DefaultBehavior/Ast/Parser/Helpers/ReferenceBuilder.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\AstMap;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInherit;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
diff --git a/src/Core/Ast/Parser/NikicPhpParser/NikicPhpParser.php b/src/DefaultBehavior/Ast/Parser/NikicPhpParser.php
similarity index 89%
rename from src/Core/Ast/Parser/NikicPhpParser/NikicPhpParser.php
rename to src/DefaultBehavior/Ast/Parser/NikicPhpParser.php
index 58e9d4f9..49f1a905 100644
--- a/src/Core/Ast/Parser/NikicPhpParser/NikicPhpParser.php
+++ b/src/DefaultBehavior/Ast/Parser/NikicPhpParser.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser;
+namespace Qossmic\Deptrac\DefaultBehavior\Ast\Parser;
use PhpParser\Error;
use PhpParser\ErrorHandler\Throwing;
@@ -19,9 +19,9 @@
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Contract\Ast\ReferenceExtractorInterface;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
-use Qossmic\Deptrac\Supportive\File\Exception\CouldNotReadFileException;
-use Qossmic\Deptrac\Supportive\File\FileReader;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceVisitor;
+use RuntimeException;
class NikicPhpParser implements ParserInterface
{
@@ -117,13 +117,18 @@ public function getMethodNamesForClassLikeReference(ClassLikeReference $classRef
protected function loadNodesFromFile(string $filepath): array
{
try {
- $fileContents = FileReader::read($filepath);
+ $fileContents = @file_get_contents($filepath);
+
+ if (false === $fileContents) {
+ throw new RuntimeException(sprintf('File "%s" cannot be read.', $filepath));
+ }
+
/** @throws Error */
$nodes = $this->parser->parse($fileContents, new Throwing());
/** @var array $nodes */
return $nodes;
- } catch (Error|CouldNotReadFileException $e) {
+ } catch (Error|RuntimeException $e) {
throw CouldNotParseFileException::because($e->getMessage(), $e);
}
}
diff --git a/src/Core/Dependency/Emitter/ClassDependencyEmitter.php b/src/DefaultBehavior/Dependency/ClassDependencyEmitter.php
similarity index 78%
rename from src/Core/Dependency/Emitter/ClassDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/ClassDependencyEmitter.php
index a607b802..a88c237f 100644
--- a/src/Core/Dependency/Emitter/ClassDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/ClassDependencyEmitter.php
@@ -2,13 +2,14 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class ClassDependencyEmitter implements DependencyEmitterInterface
{
@@ -17,7 +18,7 @@ public function getName(): string
return 'ClassDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($astMap->getClassLikeReferences() as $classReference) {
$classLikeName = $classReference->getToken();
diff --git a/src/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitter.php b/src/DefaultBehavior/Dependency/ClassSuperglobalDependencyEmitter.php
similarity index 67%
rename from src/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/ClassSuperglobalDependencyEmitter.php
index a85eee8b..ee687267 100644
--- a/src/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/ClassSuperglobalDependencyEmitter.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class ClassSuperglobalDependencyEmitter implements DependencyEmitterInterface
{
@@ -16,7 +17,7 @@ public function getName(): string
return 'ClassSuperglobalDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($astMap->getClassLikeReferences() as $classReference) {
foreach ($classReference->dependencies as $dependency) {
diff --git a/src/Core/Dependency/Emitter/FileDependencyEmitter.php b/src/DefaultBehavior/Dependency/FileDependencyEmitter.php
similarity index 70%
rename from src/Core/Dependency/Emitter/FileDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/FileDependencyEmitter.php
index 3393020e..1deec525 100644
--- a/src/Core/Dependency/Emitter/FileDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/FileDependencyEmitter.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class FileDependencyEmitter implements DependencyEmitterInterface
{
@@ -16,7 +17,7 @@ public function getName(): string
return 'FileDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($astMap->getFileReferences() as $fileReference) {
foreach ($fileReference->dependencies as $dependency) {
diff --git a/src/Core/Dependency/Emitter/FunctionCallDependencyEmitter.php b/src/DefaultBehavior/Dependency/FunctionCallDependencyEmitter.php
similarity index 77%
rename from src/Core/Dependency/Emitter/FunctionCallDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/FunctionCallDependencyEmitter.php
index b496a533..11b64c93 100644
--- a/src/Core/Dependency/Emitter/FunctionCallDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/FunctionCallDependencyEmitter.php
@@ -2,16 +2,17 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class FunctionCallDependencyEmitter implements DependencyEmitterInterface
{
@@ -20,7 +21,7 @@ public function getName(): string
return 'FunctionCallDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
$this->createDependenciesForReferences($astMap->getClassLikeReferences(), $astMap, $dependencyList);
$this->createDependenciesForReferences($astMap->getFunctionReferences(), $astMap, $dependencyList);
@@ -30,7 +31,7 @@ public function applyDependencies(AstMap $astMap, DependencyList $dependencyList
/**
* @param array $references
*/
- private function createDependenciesForReferences(array $references, AstMap $astMap, DependencyList $dependencyList): void
+ private function createDependenciesForReferences(array $references, AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($references as $reference) {
foreach ($reference->dependencies as $dependency) {
diff --git a/src/Core/Dependency/Emitter/FunctionDependencyEmitter.php b/src/DefaultBehavior/Dependency/FunctionDependencyEmitter.php
similarity index 73%
rename from src/Core/Dependency/Emitter/FunctionDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/FunctionDependencyEmitter.php
index f7b38006..f6d166c9 100644
--- a/src/Core/Dependency/Emitter/FunctionDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/FunctionDependencyEmitter.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class FunctionDependencyEmitter implements DependencyEmitterInterface
{
@@ -16,7 +17,7 @@ public function getName(): string
return 'FunctionDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($astMap->getFileReferences() as $astFileReference) {
foreach ($astFileReference->functionReferences as $astFunctionReference) {
diff --git a/src/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitter.php b/src/DefaultBehavior/Dependency/FunctionSuperglobalDependencyEmitter.php
similarity index 71%
rename from src/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/FunctionSuperglobalDependencyEmitter.php
index 93e4890a..bb6ad602 100644
--- a/src/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/FunctionSuperglobalDependencyEmitter.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class FunctionSuperglobalDependencyEmitter implements DependencyEmitterInterface
{
@@ -16,7 +17,7 @@ public function getName(): string
return 'FunctionSuperglobalDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
foreach ($astMap->getFileReferences() as $astFileReference) {
foreach ($astFileReference->functionReferences as $astFunctionReference) {
diff --git a/src/Core/Dependency/Dependency.php b/src/DefaultBehavior/Dependency/Helpers/Dependency.php
similarity index 88%
rename from src/Core/Dependency/Dependency.php
rename to src/DefaultBehavior/Dependency/Helpers/Dependency.php
index 6d60def5..59473de6 100644
--- a/src/Core/Dependency/Dependency.php
+++ b/src/DefaultBehavior/Dependency/Helpers/Dependency.php
@@ -2,13 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenInterface;
use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
-class Dependency implements DependencyInterface
+final class Dependency implements DependencyInterface
{
public function __construct(
private readonly TokenInterface $depender,
diff --git a/src/Core/Dependency/Emitter/FQDNIndexNode.php b/src/DefaultBehavior/Dependency/Helpers/FQDNIndexNode.php
similarity index 92%
rename from src/Core/Dependency/Emitter/FQDNIndexNode.php
rename to src/DefaultBehavior/Dependency/Helpers/FQDNIndexNode.php
index 0b390979..6be39e85 100644
--- a/src/Core/Dependency/Emitter/FQDNIndexNode.php
+++ b/src/DefaultBehavior/Dependency/Helpers/FQDNIndexNode.php
@@ -2,12 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers;
use function array_shift;
use function count;
-class FQDNIndexNode
+final class FQDNIndexNode
{
private bool $FQDN = false;
diff --git a/src/Core/Dependency/Emitter/UsesDependencyEmitter.php b/src/DefaultBehavior/Dependency/UsesDependencyEmitter.php
similarity index 80%
rename from src/Core/Dependency/Emitter/UsesDependencyEmitter.php
rename to src/DefaultBehavior/Dependency/UsesDependencyEmitter.php
index 555f08f6..f11da9b9 100644
--- a/src/Core/Dependency/Emitter/UsesDependencyEmitter.php
+++ b/src/DefaultBehavior/Dependency/UsesDependencyEmitter.php
@@ -2,13 +2,15 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Dependency\Emitter;
+namespace Qossmic\Deptrac\DefaultBehavior\Dependency;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
-use Qossmic\Deptrac\Core\Dependency\DependencyList;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
+use Qossmic\Deptrac\Contract\Dependency\DependencyListInterface;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\FQDNIndexNode;
use function array_map;
use function array_merge;
@@ -21,7 +23,7 @@ public function getName(): string
return 'UsesDependencyEmitter';
}
- public function applyDependencies(AstMap $astMap, DependencyList $dependencyList): void
+ public function applyDependencies(AstMapInterface $astMap, DependencyListInterface $dependencyList): void
{
$references = array_merge($astMap->getClassLikeReferences(), $astMap->getFunctionReferences());
$referencesFQDN = array_map(
diff --git a/src/Core/Layer/Collector/AttributeCollector.php b/src/DefaultBehavior/Layer/AttributeCollector.php
similarity index 93%
rename from src/Core/Layer/Collector/AttributeCollector.php
rename to src/DefaultBehavior/Layer/AttributeCollector.php
index 5cf3b92f..46c21e2f 100644
--- a/src/Core/Layer/Collector/AttributeCollector.php
+++ b/src/DefaultBehavior/Layer/AttributeCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
@@ -14,7 +14,7 @@
use function str_contains;
-class AttributeCollector implements CollectorInterface
+final class AttributeCollector implements CollectorInterface
{
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
diff --git a/src/Core/Layer/Collector/BoolCollector.php b/src/DefaultBehavior/Layer/BoolCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/BoolCollector.php
rename to src/DefaultBehavior/Layer/BoolCollector.php
index 5bf490e9..7bf1ea89 100644
--- a/src/Core/Layer/Collector/BoolCollector.php
+++ b/src/DefaultBehavior/Layer/BoolCollector.php
@@ -2,10 +2,11 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
final class BoolCollector implements CollectorInterface
diff --git a/src/Core/Layer/Collector/ClassCollector.php b/src/DefaultBehavior/Layer/ClassCollector.php
similarity index 52%
rename from src/Core/Layer/Collector/ClassCollector.php
rename to src/DefaultBehavior/Layer/ClassCollector.php
index e8b96ac1..2e7ab8e9 100644
--- a/src/Core/Layer/Collector/ClassCollector.php
+++ b/src/DefaultBehavior/Layer/ClassCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\AbstractTypeCollector;
-class ClassCollector extends AbstractTypeCollector
+final class ClassCollector extends AbstractTypeCollector
{
protected function getType(): ClassLikeType
{
diff --git a/src/Core/Layer/Collector/ClassLikeCollector.php b/src/DefaultBehavior/Layer/ClassLikeCollector.php
similarity index 52%
rename from src/Core/Layer/Collector/ClassLikeCollector.php
rename to src/DefaultBehavior/Layer/ClassLikeCollector.php
index 2d170f2f..3510008e 100644
--- a/src/Core/Layer/Collector/ClassLikeCollector.php
+++ b/src/DefaultBehavior/Layer/ClassLikeCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\AbstractTypeCollector;
-class ClassLikeCollector extends AbstractTypeCollector
+final class ClassLikeCollector extends AbstractTypeCollector
{
protected function getType(): ClassLikeType
{
diff --git a/src/Core/Layer/Collector/ClassNameRegexCollector.php b/src/DefaultBehavior/Layer/ClassNameRegexCollector.php
similarity index 88%
rename from src/Core/Layer/Collector/ClassNameRegexCollector.php
rename to src/DefaultBehavior/Layer/ClassNameRegexCollector.php
index 15d187f5..2f7ca9b9 100644
--- a/src/Core/Layer/Collector/ClassNameRegexCollector.php
+++ b/src/DefaultBehavior/Layer/ClassNameRegexCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\RegexCollector;
final class ClassNameRegexCollector extends RegexCollector
{
diff --git a/src/Core/Layer/Collector/ComposerCollector.php b/src/DefaultBehavior/Layer/ComposerCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/ComposerCollector.php
rename to src/DefaultBehavior/Layer/ComposerCollector.php
index d94d4eff..6f9d1329 100644
--- a/src/Core/Layer/Collector/ComposerCollector.php
+++ b/src/DefaultBehavior/Layer/ComposerCollector.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\ComposerFilesParser;
use RuntimeException;
final class ComposerCollector implements CollectorInterface
diff --git a/src/Core/Layer/Collector/DirectoryCollector.php b/src/DefaultBehavior/Layer/DirectoryCollector.php
similarity index 89%
rename from src/Core/Layer/Collector/DirectoryCollector.php
rename to src/DefaultBehavior/Layer/DirectoryCollector.php
index 6f553fc5..faafafb4 100644
--- a/src/Core/Layer/Collector/DirectoryCollector.php
+++ b/src/DefaultBehavior/Layer/DirectoryCollector.php
@@ -2,10 +2,11 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\RegexCollector;
use Symfony\Component\Filesystem\Path;
final class DirectoryCollector extends RegexCollector
diff --git a/src/Core/Layer/Collector/ExtendsCollector.php b/src/DefaultBehavior/Layer/ExtendsCollector.php
similarity index 70%
rename from src/Core/Layer/Collector/ExtendsCollector.php
rename to src/DefaultBehavior/Layer/ExtendsCollector.php
index 862cd0c0..95e35121 100644
--- a/src/Core/Layer/Collector/ExtendsCollector.php
+++ b/src/DefaultBehavior/Layer/ExtendsCollector.php
@@ -2,29 +2,24 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
+use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
final class ExtendsCollector implements CollectorInterface
{
- private readonly AstMap $astMap;
+ private AstMapInterface $astMap;
- /**
- * @throws AstException
- */
- public function __construct(AstMapExtractor $astMapExtractor)
- {
- $this->astMap = $astMapExtractor->extract();
- }
+ public function __construct(private readonly AstMapExtractorInterface $astMapExtractor) {}
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
@@ -34,6 +29,11 @@ public function satisfy(array $config, TokenReferenceInterface $reference): bool
$interfaceName = $this->getInterfaceName($config);
+ try {
+ $this->astMap ??= $this->astMapExtractor->extract();
+ } catch (AstException $exception) {
+ throw CouldNotParseFileException::because('Could not build Ast map', $exception);
+ }
foreach ($this->astMap->getClassInherits($reference->getToken()) as $inherit) {
if (AstInheritType::EXTENDS === $inherit->type && $inherit->classLikeName->equals($interfaceName)) {
return true;
diff --git a/src/Core/Layer/Collector/FunctionNameCollector.php b/src/DefaultBehavior/Layer/FunctionNameCollector.php
similarity index 96%
rename from src/Core/Layer/Collector/FunctionNameCollector.php
rename to src/DefaultBehavior/Layer/FunctionNameCollector.php
index 417b8234..7c2ca20d 100644
--- a/src/Core/Layer/Collector/FunctionNameCollector.php
+++ b/src/DefaultBehavior/Layer/FunctionNameCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
diff --git a/src/Core/Layer/Collector/GlobCollector.php b/src/DefaultBehavior/Layer/GlobCollector.php
similarity index 91%
rename from src/Core/Layer/Collector/GlobCollector.php
rename to src/DefaultBehavior/Layer/GlobCollector.php
index 92bf20ea..8cd84ff3 100644
--- a/src/Core/Layer/Collector/GlobCollector.php
+++ b/src/DefaultBehavior/Layer/GlobCollector.php
@@ -2,10 +2,11 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\RegexCollector;
use Symfony\Component\Filesystem\Path;
use Symfony\Component\Finder\Glob;
diff --git a/src/Core/Layer/Collector/AbstractTypeCollector.php b/src/DefaultBehavior/Layer/Helpers/AbstractTypeCollector.php
similarity index 95%
rename from src/Core/Layer/Collector/AbstractTypeCollector.php
rename to src/DefaultBehavior/Layer/Helpers/AbstractTypeCollector.php
index f96cbe49..43e78c60 100644
--- a/src/Core/Layer/Collector/AbstractTypeCollector.php
+++ b/src/DefaultBehavior/Layer/Helpers/AbstractTypeCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer\Helpers;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
diff --git a/src/Core/Layer/Collector/ComposerFilesParser.php b/src/DefaultBehavior/Layer/Helpers/ComposerFilesParser.php
similarity index 98%
rename from src/Core/Layer/Collector/ComposerFilesParser.php
rename to src/DefaultBehavior/Layer/Helpers/ComposerFilesParser.php
index e78a54b4..9657d0a7 100644
--- a/src/Core/Layer/Collector/ComposerFilesParser.php
+++ b/src/DefaultBehavior/Layer/Helpers/ComposerFilesParser.php
@@ -2,12 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer\Helpers;
use JsonException;
use RuntimeException;
-class ComposerFilesParser
+final class ComposerFilesParser
{
/**
* @var array{
diff --git a/src/Core/Layer/Collector/RegexCollector.php b/src/DefaultBehavior/Layer/Helpers/RegexCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/RegexCollector.php
rename to src/DefaultBehavior/Layer/Helpers/RegexCollector.php
index 2d1bd45c..cb197bac 100644
--- a/src/Core/Layer/Collector/RegexCollector.php
+++ b/src/DefaultBehavior/Layer/Helpers/RegexCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer\Helpers;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
diff --git a/src/Core/Layer/Collector/ImplementsCollector.php b/src/DefaultBehavior/Layer/ImplementsCollector.php
similarity index 70%
rename from src/Core/Layer/Collector/ImplementsCollector.php
rename to src/DefaultBehavior/Layer/ImplementsCollector.php
index bf3b0240..92b7b76b 100644
--- a/src/Core/Layer/Collector/ImplementsCollector.php
+++ b/src/DefaultBehavior/Layer/ImplementsCollector.php
@@ -2,29 +2,24 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
+use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
final class ImplementsCollector implements CollectorInterface
{
- private readonly AstMap $astMap;
+ private AstMapInterface $astMap;
- /**
- * @throws AstException
- */
- public function __construct(private AstMapExtractor $astMapExtractor)
- {
- $this->astMap = $this->astMapExtractor->extract();
- }
+ public function __construct(private readonly AstMapExtractorInterface $astMapExtractor) {}
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
@@ -34,6 +29,11 @@ public function satisfy(array $config, TokenReferenceInterface $reference): bool
$interfaceName = $this->getInterfaceName($config);
+ try {
+ $this->astMap ??= $this->astMapExtractor->extract();
+ } catch (AstException $exception) {
+ throw CouldNotParseFileException::because('Could not build Ast map', $exception);
+ }
foreach ($this->astMap->getClassInherits($reference->getToken()) as $inherit) {
if (AstInheritType::IMPLEMENTS === $inherit->type && $inherit->classLikeName->equals($interfaceName)) {
return true;
diff --git a/src/Core/Layer/Collector/InheritanceLevelCollector.php b/src/DefaultBehavior/Layer/InheritanceLevelCollector.php
similarity index 63%
rename from src/Core/Layer/Collector/InheritanceLevelCollector.php
rename to src/DefaultBehavior/Layer/InheritanceLevelCollector.php
index 152dbaed..48ca0bbc 100644
--- a/src/Core/Layer/Collector/InheritanceLevelCollector.php
+++ b/src/DefaultBehavior/Layer/InheritanceLevelCollector.php
@@ -2,27 +2,22 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
+use Qossmic\Deptrac\Contract\Ast\AstException;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
+use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
final class InheritanceLevelCollector implements CollectorInterface
{
- private readonly AstMap $astMap;
+ private AstMapInterface $astMap;
- /**
- * @throws AstException
- */
- public function __construct(private AstMapExtractor $astMapExtractor)
- {
- $this->astMap = $this->astMapExtractor->extract();
- }
+ public function __construct(private readonly AstMapExtractorInterface $astMapExtractor) {}
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
@@ -30,6 +25,11 @@ public function satisfy(array $config, TokenReferenceInterface $reference): bool
return false;
}
+ try {
+ $this->astMap ??= $this->astMapExtractor->extract();
+ } catch (AstException $exception) {
+ throw CouldNotParseFileException::because('Could not build Ast map', $exception);
+ }
$classInherits = $this->astMap->getClassInherits($reference->getToken());
if (!isset($config['value']) || !is_numeric($config['value'])) {
throw InvalidCollectorDefinitionException::invalidCollectorConfiguration('InheritanceLevelCollector needs inheritance depth as int.');
diff --git a/src/Core/Layer/Collector/InheritsCollector.php b/src/DefaultBehavior/Layer/InheritsCollector.php
similarity index 69%
rename from src/Core/Layer/Collector/InheritsCollector.php
rename to src/DefaultBehavior/Layer/InheritsCollector.php
index 7164f16e..73f6db0b 100644
--- a/src/Core/Layer/Collector/InheritsCollector.php
+++ b/src/DefaultBehavior/Layer/InheritsCollector.php
@@ -2,28 +2,23 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
+use Qossmic\Deptrac\Contract\Ast\AstException;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
+use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
final class InheritsCollector implements CollectorInterface
{
- private readonly AstMap $astMap;
+ private AstMapInterface $astMap;
- /**
- * @throws AstException
- */
- public function __construct(private AstMapExtractor $astMapExtractor)
- {
- $this->astMap = $this->astMapExtractor->extract();
- }
+ public function __construct(private readonly AstMapExtractorInterface $astMapExtractor) {}
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
@@ -33,6 +28,11 @@ public function satisfy(array $config, TokenReferenceInterface $reference): bool
$classLikeName = $this->getClassLikeName($config);
+ try {
+ $this->astMap ??= $this->astMapExtractor->extract();
+ } catch (AstException $exception) {
+ throw CouldNotParseFileException::because('Could not build Ast map', $exception);
+ }
foreach ($this->astMap->getClassInherits($reference->getToken()) as $inherit) {
if ($inherit->classLikeName->equals($classLikeName)) {
return true;
diff --git a/src/Core/Layer/Collector/InterfaceCollector.php b/src/DefaultBehavior/Layer/InterfaceCollector.php
similarity index 52%
rename from src/Core/Layer/Collector/InterfaceCollector.php
rename to src/DefaultBehavior/Layer/InterfaceCollector.php
index 70f7f800..3b9fd6ec 100644
--- a/src/Core/Layer/Collector/InterfaceCollector.php
+++ b/src/DefaultBehavior/Layer/InterfaceCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\AbstractTypeCollector;
-class InterfaceCollector extends AbstractTypeCollector
+final class InterfaceCollector extends AbstractTypeCollector
{
protected function getType(): ClassLikeType
{
diff --git a/src/Core/Layer/Collector/LayerCollector.php b/src/DefaultBehavior/Layer/LayerCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/LayerCollector.php
rename to src/DefaultBehavior/Layer/LayerCollector.php
index 1b56729e..490e2ba5 100644
--- a/src/Core/Layer/Collector/LayerCollector.php
+++ b/src/DefaultBehavior/Layer/LayerCollector.php
@@ -2,13 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
use function array_key_exists;
use function is_string;
diff --git a/src/Core/Layer/Collector/MethodCollector.php b/src/DefaultBehavior/Layer/MethodCollector.php
similarity index 91%
rename from src/Core/Layer/Collector/MethodCollector.php
rename to src/DefaultBehavior/Layer/MethodCollector.php
index 95e8b151..a8538740 100644
--- a/src/Core/Layer/Collector/MethodCollector.php
+++ b/src/DefaultBehavior/Layer/MethodCollector.php
@@ -2,12 +2,13 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\RegexCollector;
final class MethodCollector extends RegexCollector
{
diff --git a/src/Core/Layer/Collector/PhpInternalCollector.php b/src/DefaultBehavior/Layer/PhpInternalCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/PhpInternalCollector.php
rename to src/DefaultBehavior/Layer/PhpInternalCollector.php
index 39ccb8e7..95f10b95 100644
--- a/src/Core/Layer/Collector/PhpInternalCollector.php
+++ b/src/DefaultBehavior/Layer/PhpInternalCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use JetBrains\PHPStormStub\PhpStormStubsMap;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
@@ -14,7 +14,7 @@
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-class PhpInternalCollector implements CollectorInterface
+final class PhpInternalCollector implements CollectorInterface
{
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
diff --git a/src/Core/Layer/Collector/SuperglobalCollector.php b/src/DefaultBehavior/Layer/SuperglobalCollector.php
similarity index 96%
rename from src/Core/Layer/Collector/SuperglobalCollector.php
rename to src/DefaultBehavior/Layer/SuperglobalCollector.php
index f32a42b5..e4a26f44 100644
--- a/src/Core/Layer/Collector/SuperglobalCollector.php
+++ b/src/DefaultBehavior/Layer/SuperglobalCollector.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\VariableReference;
diff --git a/src/Core/Layer/Collector/TagValueRegexCollector.php b/src/DefaultBehavior/Layer/TagValueRegexCollector.php
similarity index 94%
rename from src/Core/Layer/Collector/TagValueRegexCollector.php
rename to src/DefaultBehavior/Layer/TagValueRegexCollector.php
index 0c155fea..a52c4adc 100644
--- a/src/Core/Layer/Collector/TagValueRegexCollector.php
+++ b/src/DefaultBehavior/Layer/TagValueRegexCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\TaggedTokenReferenceInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\RegexCollector;
final class TagValueRegexCollector extends RegexCollector
{
diff --git a/src/Core/Layer/Collector/TraitCollector.php b/src/DefaultBehavior/Layer/TraitCollector.php
similarity index 52%
rename from src/Core/Layer/Collector/TraitCollector.php
rename to src/DefaultBehavior/Layer/TraitCollector.php
index 14ff7fd6..9d8d7a9b 100644
--- a/src/Core/Layer/Collector/TraitCollector.php
+++ b/src/DefaultBehavior/Layer/TraitCollector.php
@@ -2,11 +2,12 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
+use Qossmic\Deptrac\DefaultBehavior\Layer\Helpers\AbstractTypeCollector;
-class TraitCollector extends AbstractTypeCollector
+final class TraitCollector extends AbstractTypeCollector
{
protected function getType(): ClassLikeType
{
diff --git a/src/Core/Layer/Collector/UsesCollector.php b/src/DefaultBehavior/Layer/UsesCollector.php
similarity index 70%
rename from src/Core/Layer/Collector/UsesCollector.php
rename to src/DefaultBehavior/Layer/UsesCollector.php
index 7a87d7b3..3bde300a 100644
--- a/src/Core/Layer/Collector/UsesCollector.php
+++ b/src/DefaultBehavior/Layer/UsesCollector.php
@@ -2,29 +2,24 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Core\Layer\Collector;
+namespace Qossmic\Deptrac\DefaultBehavior\Layer;
+use Qossmic\Deptrac\Contract\Ast\AstException;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstMapInterface;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMapExtractorInterface;
+use Qossmic\Deptrac\Contract\Ast\CouldNotParseFileException;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstException;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
final class UsesCollector implements CollectorInterface
{
- private readonly AstMap $astMap;
+ private AstMapInterface $astMap;
- /**
- * @throws AstException
- */
- public function __construct(private AstMapExtractor $astMapExtractor)
- {
- $this->astMap = $this->astMapExtractor->extract();
- }
+ public function __construct(private readonly AstMapExtractorInterface $astMapExtractor) {}
public function satisfy(array $config, TokenReferenceInterface $reference): bool
{
@@ -34,6 +29,11 @@ public function satisfy(array $config, TokenReferenceInterface $reference): bool
$traitName = $this->getTraitName($config);
+ try {
+ $this->astMap ??= $this->astMapExtractor->extract();
+ } catch (AstException $exception) {
+ throw CouldNotParseFileException::because('Could not build Ast map', $exception);
+ }
foreach ($this->astMap->getClassInherits($reference->getToken()) as $inherit) {
if (AstInheritType::USES === $inherit->type && $inherit->classLikeName->equals($traitName)) {
return true;
diff --git a/src/Supportive/OutputFormatter/BaselineOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/BaselineOutputFormatter.php
similarity index 97%
rename from src/Supportive/OutputFormatter/BaselineOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/BaselineOutputFormatter.php
index cdcab85b..b44cb183 100644
--- a/src/Supportive/OutputFormatter/BaselineOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/BaselineOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Qossmic\Deptrac\Contract\OutputFormatter\BaselineMapperInterface;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInput;
@@ -16,9 +16,6 @@
use function ksort;
use function sort;
-/**
- * @internal
- */
final class BaselineOutputFormatter implements OutputFormatterInterface
{
private const DEFAULT_PATH = './deptrac.baseline.yaml';
diff --git a/src/Supportive/OutputFormatter/CodeclimateOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/CodeclimateOutputFormatter.php
similarity index 96%
rename from src/Supportive/OutputFormatter/CodeclimateOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/CodeclimateOutputFormatter.php
index f352a9b4..467c2c2c 100644
--- a/src/Supportive/OutputFormatter/CodeclimateOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/CodeclimateOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Exception;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInput;
@@ -13,8 +13,8 @@
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationCodeclimate;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\ConfigurationCodeclimate;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
use function json_encode;
use function json_last_error;
@@ -22,9 +22,6 @@
use const JSON_PRETTY_PRINT;
-/**
- * @internal
- */
final class CodeclimateOutputFormatter implements OutputFormatterInterface
{
/**
diff --git a/src/Supportive/OutputFormatter/ConsoleOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/ConsoleOutputFormatter.php
similarity index 98%
rename from src/Supportive/OutputFormatter/ConsoleOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/ConsoleOutputFormatter.php
index d81af631..6c2c2170 100644
--- a/src/Supportive/OutputFormatter/ConsoleOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/ConsoleOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
@@ -15,9 +15,6 @@
use function count;
-/**
- * @internal
- */
final class ConsoleOutputFormatter implements OutputFormatterInterface
{
public static function getName(): string
diff --git a/src/Supportive/OutputFormatter/GithubActionsOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/GithubActionsOutputFormatter.php
similarity index 98%
rename from src/Supportive/OutputFormatter/GithubActionsOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/GithubActionsOutputFormatter.php
index d11593ef..1825156b 100644
--- a/src/Supportive/OutputFormatter/GithubActionsOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/GithubActionsOutputFormatter.php
@@ -1,6 +1,6 @@
> $config
diff --git a/src/Supportive/OutputFormatter/GraphVizOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/Helpers/GraphVizOutputFormatter.php
similarity index 97%
rename from src/Supportive/OutputFormatter/GraphVizOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/Helpers/GraphVizOutputFormatter.php
index 513bfaa1..254191bc 100644
--- a/src/Supportive/OutputFormatter/GraphVizOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/Helpers/GraphVizOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers;
use phpDocumentor\GraphViz\Edge;
use phpDocumentor\GraphViz\Exception;
@@ -17,8 +17,6 @@
use Qossmic\Deptrac\Contract\Result\RuleInterface;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationGraphViz;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
use function sys_get_temp_dir;
use function tempnam;
diff --git a/src/Supportive/OutputFormatter/JUnitOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/JUnitOutputFormatter.php
similarity index 99%
rename from src/Supportive/OutputFormatter/JUnitOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/JUnitOutputFormatter.php
index 608137f4..385225b7 100644
--- a/src/Supportive/OutputFormatter/JUnitOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/JUnitOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use DOMAttr;
use DOMDocument;
@@ -18,9 +18,6 @@
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-/**
- * @internal
- */
final class JUnitOutputFormatter implements OutputFormatterInterface
{
private const DEFAULT_PATH = './junit-report.xml';
diff --git a/src/Supportive/OutputFormatter/JsonOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/JsonOutputFormatter.php
similarity index 98%
rename from src/Supportive/OutputFormatter/JsonOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/JsonOutputFormatter.php
index 46faa736..1f0a228f 100644
--- a/src/Supportive/OutputFormatter/JsonOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/JsonOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Exception;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInput;
@@ -19,9 +19,6 @@
use const JSON_PRETTY_PRINT;
-/**
- * @internal
- */
final class JsonOutputFormatter implements OutputFormatterInterface
{
public static function getName(): string
diff --git a/src/Supportive/OutputFormatter/MermaidJSOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/MermaidJSOutputFormatter.php
similarity index 96%
rename from src/Supportive/OutputFormatter/MermaidJSOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/MermaidJSOutputFormatter.php
index 442fe4b7..7cc33b59 100644
--- a/src/Supportive/OutputFormatter/MermaidJSOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/MermaidJSOutputFormatter.php
@@ -2,17 +2,14 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInput;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInterface;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputInterface;
use Qossmic\Deptrac\Contract\Result\OutputResult;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
-/**
- * @internal
- */
final class MermaidJSOutputFormatter implements OutputFormatterInterface
{
/** @var array{direction: string, groups: array} */
diff --git a/src/Supportive/OutputFormatter/TableOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/TableOutputFormatter.php
similarity index 99%
rename from src/Supportive/OutputFormatter/TableOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/TableOutputFormatter.php
index ce408129..904ebcca 100644
--- a/src/Supportive/OutputFormatter/TableOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/TableOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
use Qossmic\Deptrac\Contract\OutputFormatter\OutputFormatterInput;
diff --git a/src/Supportive/OutputFormatter/XMLOutputFormatter.php b/src/DefaultBehavior/OutputFormatter/XMLOutputFormatter.php
similarity index 97%
rename from src/Supportive/OutputFormatter/XMLOutputFormatter.php
rename to src/DefaultBehavior/OutputFormatter/XMLOutputFormatter.php
index 64cf6864..10f8c30b 100644
--- a/src/Supportive/OutputFormatter/XMLOutputFormatter.php
+++ b/src/DefaultBehavior/OutputFormatter/XMLOutputFormatter.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-namespace Qossmic\Deptrac\Supportive\OutputFormatter;
+namespace Qossmic\Deptrac\DefaultBehavior\OutputFormatter;
use DOMAttr;
use DOMDocument;
@@ -15,9 +15,6 @@
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Violation;
-/**
- * @internal
- */
final class XMLOutputFormatter implements OutputFormatterInterface
{
private const DEFAULT_PATH = './deptrac-report.xml';
diff --git a/src/Supportive/Console/Command/AnalyseCommand.php b/src/Supportive/Console/Command/AnalyseCommand.php
index 7378191f..1d4ede7c 100644
--- a/src/Supportive/Console/Command/AnalyseCommand.php
+++ b/src/Supportive/Console/Command/AnalyseCommand.php
@@ -4,14 +4,14 @@
namespace Qossmic\Deptrac\Supportive\Console\Command;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Env;
use Qossmic\Deptrac\Supportive\Console\Subscriber\ConsoleSubscriber;
use Qossmic\Deptrac\Supportive\Console\Subscriber\ProgressSubscriber;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
use Qossmic\Deptrac\Supportive\OutputFormatter\FormatterProvider;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GithubActionsOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\TableOutputFormatter;
use Qossmic\Deptrac\Supportive\Time\Stopwatch;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
diff --git a/tests/Contract/Analyser/EventHelperTest.php b/tests/Contract/Analyser/EventHelperTest.php
index 9d42c2b6..e830ce72 100644
--- a/tests/Contract/Analyser/EventHelperTest.php
+++ b/tests/Contract/Analyser/EventHelperTest.php
@@ -7,8 +7,8 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Analyser\EventHelper;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
use Qossmic\Deptrac\Contract\OutputFormatter\BaselineMapperInterface;
+use Qossmic\Deptrac\Core\Layer\LayerProvider;
final class EventHelperTest extends TestCase
{
diff --git a/tests/Core/Analyser/EventHandler/AllowDependencyHandlerTest.php b/tests/Core/Analyser/EventHandler/AllowDependencyHandlerTest.php
index c491f580..ddfbfd66 100644
--- a/tests/Core/Analyser/EventHandler/AllowDependencyHandlerTest.php
+++ b/tests/Core/Analyser/EventHandler/AllowDependencyHandlerTest.php
@@ -6,7 +6,7 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\AllowDependencyHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\AllowDependencyHandler;
class AllowDependencyHandlerTest extends TestCase
{
diff --git a/tests/Core/Analyser/EventHandler/DependsOnInternalTokenTest.php b/tests/Core/Analyser/EventHandler/DependsOnInternalTokenTest.php
index aee15025..03c41e25 100644
--- a/tests/Core/Analyser/EventHandler/DependsOnInternalTokenTest.php
+++ b/tests/Core/Analyser/EventHandler/DependsOnInternalTokenTest.php
@@ -14,9 +14,9 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\DependsOnInternalToken;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
+use Qossmic\Deptrac\Core\Layer\LayerProvider;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\DependsOnInternalToken;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
use Qossmic\Deptrac\Supportive\OutputFormatter\YamlBaselineMapper;
final class DependsOnInternalTokenTest extends TestCase
diff --git a/tests/Core/Analyser/EventHandler/DependsOnPrivateLayerTest.php b/tests/Core/Analyser/EventHandler/DependsOnPrivateLayerTest.php
index 1a09dca7..c0e613ac 100644
--- a/tests/Core/Analyser/EventHandler/DependsOnPrivateLayerTest.php
+++ b/tests/Core/Analyser/EventHandler/DependsOnPrivateLayerTest.php
@@ -14,10 +14,10 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
-use Qossmic\Deptrac\Contract\Layer\LayerProvider;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\DependsOnPrivateLayer;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
+use Qossmic\Deptrac\Core\Layer\LayerProvider;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\DependsOnPrivateLayer;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
use Qossmic\Deptrac\Supportive\OutputFormatter\YamlBaselineMapper;
final class DependsOnPrivateLayerTest extends TestCase
diff --git a/tests/Core/Analyser/EventHandler/MatchingLayersHandlerTest.php b/tests/Core/Analyser/EventHandler/MatchingLayersHandlerTest.php
index d22323ea..285fda8e 100644
--- a/tests/Core/Analyser/EventHandler/MatchingLayersHandlerTest.php
+++ b/tests/Core/Analyser/EventHandler/MatchingLayersHandlerTest.php
@@ -6,7 +6,7 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\MatchingLayersHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\MatchingLayersHandler;
class MatchingLayersHandlerTest extends TestCase
{
diff --git a/tests/Core/Analyser/EventHandler/UncoveredDependentHandlerTest.php b/tests/Core/Analyser/EventHandler/UncoveredDependentHandlerTest.php
index 8bc72cf5..5a91d01b 100644
--- a/tests/Core/Analyser/EventHandler/UncoveredDependentHandlerTest.php
+++ b/tests/Core/Analyser/EventHandler/UncoveredDependentHandlerTest.php
@@ -6,7 +6,7 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Analyser\ProcessEvent;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\UncoveredDependentHandler;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\UncoveredDependentHandler;
class UncoveredDependentHandlerTest extends TestCase
{
diff --git a/tests/Core/Analyser/EventHandler/UnmatchedSkippedViolationsTest.php b/tests/Core/Analyser/EventHandler/UnmatchedSkippedViolationsTest.php
index e3fda03d..70fb92e9 100644
--- a/tests/Core/Analyser/EventHandler/UnmatchedSkippedViolationsTest.php
+++ b/tests/Core/Analyser/EventHandler/UnmatchedSkippedViolationsTest.php
@@ -6,7 +6,7 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Analyser\PostProcessEvent;
-use Qossmic\Deptrac\Core\Analyser\EventHandler\UnmatchedSkippedViolations;
+use Qossmic\Deptrac\DefaultBehavior\Analyser\UnmatchedSkippedViolations;
class UnmatchedSkippedViolationsTest extends TestCase
{
@@ -16,6 +16,6 @@ public function testGetSubscribedEvents(): void
self::assertCount(1, $subscribedEvents);
self::assertArrayHasKey(PostProcessEvent::class, $subscribedEvents);
- self::assertSame(['handleUnmatchedSkipped'], $subscribedEvents[PostProcessEvent::class]);
+ self::assertSame(['invoke'], $subscribedEvents[PostProcessEvent::class]);
}
}
diff --git a/tests/Core/Ast/AstMapFlattenGeneratorTest.php b/tests/Core/Ast/AstMapFlattenGeneratorTest.php
index 1814859b..86eccd33 100644
--- a/tests/Core/Ast/AstMapFlattenGeneratorTest.php
+++ b/tests/Core/Ast/AstMapFlattenGeneratorTest.php
@@ -17,11 +17,11 @@
use Qossmic\Deptrac\Contract\Ast\PostCreateAstMapEvent;
use Qossmic\Deptrac\Contract\Ast\PreCreateAstMapEvent;
use Qossmic\Deptrac\Core\Ast\AstLoader;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\InterfaceExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\InterfaceExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Stopwatch\Stopwatch;
diff --git a/tests/Core/Ast/AstMapGeneratorTest.php b/tests/Core/Ast/AstMapGeneratorTest.php
index 726c6edb..f906ff54 100644
--- a/tests/Core/Ast/AstMapGeneratorTest.php
+++ b/tests/Core/Ast/AstMapGeneratorTest.php
@@ -14,14 +14,14 @@
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\AstLoader;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\AnonymousClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassConstantExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\GroupUseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\TraitUseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\UseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\AnonymousClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassConstantExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\GroupUseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\TraitUseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\UseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyClassB;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyClassC;
diff --git a/tests/Core/Ast/Parser/AnnotationReferenceExtractorTest.php b/tests/Core/Ast/Parser/AnnotationReferenceExtractorTest.php
index 426af052..0bc8f697 100644
--- a/tests/Core/Ast/Parser/AnnotationReferenceExtractorTest.php
+++ b/tests/Core/Ast/Parser/AnnotationReferenceExtractorTest.php
@@ -9,12 +9,12 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassMethodExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\NewExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\PropertyExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\VariableExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassMethodExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\NewExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\PropertyExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\VariableExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
final class AnnotationReferenceExtractorTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/AnonymousClassExtractorTest.php b/tests/Core/Ast/Parser/AnonymousClassExtractorTest.php
index 86d14b8a..ab30f6fd 100644
--- a/tests/Core/Ast/Parser/AnonymousClassExtractorTest.php
+++ b/tests/Core/Ast/Parser/AnonymousClassExtractorTest.php
@@ -10,8 +10,8 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\AnonymousClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\AnonymousClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
final class AnonymousClassExtractorTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/ClassConstantExtractorTest.php b/tests/Core/Ast/Parser/ClassConstantExtractorTest.php
index e91af8c4..20863bf1 100644
--- a/tests/Core/Ast/Parser/ClassConstantExtractorTest.php
+++ b/tests/Core/Ast/Parser/ClassConstantExtractorTest.php
@@ -10,8 +10,8 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassConstantExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassConstantExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
final class ClassConstantExtractorTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/ClassDocBlockExtractorTest.php b/tests/Core/Ast/Parser/ClassDocBlockExtractorTest.php
index ce8e07f0..4b25be49 100644
--- a/tests/Core/Ast/Parser/ClassDocBlockExtractorTest.php
+++ b/tests/Core/Ast/Parser/ClassDocBlockExtractorTest.php
@@ -10,9 +10,9 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
final class ClassDocBlockExtractorTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/FunctionLikeExtractorTest.php b/tests/Core/Ast/Parser/FunctionLikeExtractorTest.php
index 32b21afa..a9d2e232 100644
--- a/tests/Core/Ast/Parser/FunctionLikeExtractorTest.php
+++ b/tests/Core/Ast/Parser/FunctionLikeExtractorTest.php
@@ -12,9 +12,9 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyToken;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\FunctionLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\FunctionLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
final class FunctionLikeExtractorTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/NikicTypeResolverTest.php b/tests/Core/Ast/Parser/NikicTypeResolverTest.php
index 5ab04ed2..0c0549fb 100644
--- a/tests/Core/Ast/Parser/NikicTypeResolverTest.php
+++ b/tests/Core/Ast/Parser/NikicTypeResolverTest.php
@@ -10,7 +10,7 @@
use PHPStan\PhpDocParser\Parser\TypeParser;
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\TypeScope;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
final class NikicTypeResolverTest extends TestCase
{
diff --git a/tests/Core/Ast/Parser/ParserTest.php b/tests/Core/Ast/Parser/ParserTest.php
index 550ff04d..fcf1ea8c 100644
--- a/tests/Core/Ast/Parser/ParserTest.php
+++ b/tests/Core/Ast/Parser/ParserTest.php
@@ -10,10 +10,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\ParserInterface;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\UseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\UseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
use stdClass;
use TypeError;
diff --git a/tests/Core/Dependency/DependencyListTest.php b/tests/Core/Dependency/DependencyListTest.php
index c90083d3..29156a9a 100644
--- a/tests/Core/Dependency/DependencyListTest.php
+++ b/tests/Core/Dependency/DependencyListTest.php
@@ -11,9 +11,9 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\DependencyList;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class DependencyListTest extends TestCase
{
diff --git a/tests/Core/Dependency/DependencyResolverTest.php b/tests/Core/Dependency/DependencyResolverTest.php
index 673f3a91..0c55b6a7 100644
--- a/tests/Core/Dependency/DependencyResolverTest.php
+++ b/tests/Core/Dependency/DependencyResolverTest.php
@@ -6,28 +6,34 @@
use PHPUnit\Framework\TestCase;
use Psr\Container\ContainerInterface;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstInherit;
+use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
+use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
+use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
+use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
use Qossmic\Deptrac\Contract\Config\EmitterType;
+use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
use Qossmic\Deptrac\Contract\Dependency\PostEmitEvent;
use Qossmic\Deptrac\Contract\Dependency\PostFlattenEvent;
use Qossmic\Deptrac\Contract\Dependency\PreEmitEvent;
use Qossmic\Deptrac\Contract\Dependency\PreFlattenEvent;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Core\Ast\AstMap;
+use Qossmic\Deptrac\Core\Dependency\DependencyList;
use Qossmic\Deptrac\Core\Dependency\DependencyResolver;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassSuperglobalDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FileDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionSuperglobalDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\Emitter\UsesDependencyEmitter;
-use Qossmic\Deptrac\Core\Dependency\InheritanceFlattener;
+use Qossmic\Deptrac\Core\Dependency\InheritDependency;
use Qossmic\Deptrac\Core\Dependency\InvalidEmitterConfigurationException;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FileDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\UsesDependencyEmitter;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
final class DependencyResolverTest extends TestCase
{
private EventDispatcherInterface $dispatcher;
- private InheritanceFlattener $flattener;
private ContainerInterface $container;
protected function setUp(): void
@@ -36,8 +42,6 @@ protected function setUp(): void
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
- $this->flattener = $this->createMock(InheritanceFlattener::class);
-
$this->container = new ContainerBuilder();
$this->container->set(EmitterType::CLASS_TOKEN->value, new ClassDependencyEmitter());
$this->container->set(EmitterType::CLASS_SUPERGLOBAL_TOKEN->value, new ClassSuperglobalDependencyEmitter());
@@ -59,14 +63,12 @@ public function testResolveWithDefaultEmitters(): void
new PreFlattenEvent(),
new PostFlattenEvent()
);
- $this->flattener->expects(self::once())->method('flattenDependencies');
$resolver = new DependencyResolver(
['types' => [
EmitterType::CLASS_TOKEN->value,
EmitterType::USE_TOKEN->value,
]],
- $this->flattener,
$this->container,
$this->dispatcher
);
@@ -84,11 +86,9 @@ public function testResolveWithCustomEmitters(): void
new PreFlattenEvent(),
new PostFlattenEvent()
);
- $this->flattener->expects(self::once())->method('flattenDependencies');
$resolver = new DependencyResolver(
['types' => [EmitterType::FUNCTION_TOKEN->value]],
- $this->flattener,
$this->container,
$this->dispatcher
);
@@ -101,11 +101,9 @@ public function testResolveWithInvalidEmitterType(): void
$astMap = new AstMap([]);
$this->dispatcher->expects(self::never())->method('dispatch');
- $this->flattener->expects(self::never())->method('flattenDependencies');
$resolver = new DependencyResolver(
['types' => ['invalid']],
- $this->flattener,
$this->container,
$this->dispatcher
);
@@ -114,4 +112,82 @@ public function testResolveWithInvalidEmitterType(): void
$resolver->resolve($astMap);
}
+
+ public function testFlattenDependencies(): void
+ {
+ $astMap = $this->createMock(AstMap::class);
+
+ $astMap->method('getClassLikeReferences')->willReturn([
+ $this->getAstClassReference('classA'),
+ $this->getAstClassReference('classB'),
+ $this->getAstClassReference('classBaum'),
+ $this->getAstClassReference('classWeihnachtsbaum'),
+ $this->getAstClassReference('classGeschmückterWeihnachtsbaum'),
+ ]);
+
+ $dependencyResult = new DependencyList();
+ $dependencyResult->addDependency($this->getDependency('classA'));
+ $dependencyResult->addDependency($this->getDependency('classB'));
+ $dependencyResult->addDependency($this->getDependency('classBaum'));
+ $dependencyResult->addDependency($this->getDependency('classWeihnachtsbaumsA'));
+
+ $astMap->method('getClassInherits')->willReturnOnConsecutiveCalls(
+ // classA
+ [],
+ // classB
+ [],
+ // classBaum,
+ [],
+ // classWeihnachtsbaum
+ [
+ new AstInherit(
+ ClassLikeToken::fromFQCN('classBaum'), new FileOccurrence('classWeihnachtsbaum.php', 3),
+ AstInheritType::USES
+ ),
+ ],
+ // classGeschmückterWeihnachtsbaum
+ [
+ (new AstInherit(
+ ClassLikeToken::fromFQCN('classBaum'), new FileOccurrence('classGeschmückterWeihnachtsbaum.php', 3),
+ AstInheritType::EXTENDS
+ ))
+ ->replacePath([
+ new AstInherit(
+ ClassLikeToken::fromFQCN('classWeihnachtsbaum'),
+ new FileOccurrence('classBaum.php', 3),
+ AstInheritType::USES
+ ),
+ ]),
+ ]
+ );
+
+ DependencyResolver::flattenDependencies($astMap, $dependencyResult);
+
+ $inheritDeps = array_filter(
+ $dependencyResult->getDependenciesAndInheritDependencies(),
+ static function ($v) {
+ return $v instanceof InheritDependency;
+ }
+ );
+
+ self::assertCount(2, $inheritDeps);
+ }
+
+ private function getAstClassReference($className)
+ {
+ $classLikeToken = ClassLikeToken::fromFQCN($className);
+ $astClass = new ClassLikeReference($classLikeToken);
+ self::assertSame($classLikeToken, $astClass->getToken());
+
+ return $astClass;
+ }
+
+ private function getDependency($className)
+ {
+ $dep = $this->createMock(DependencyInterface::class);
+ $dep->method('getDepender')->willReturn(ClassLikeToken::fromFQCN($className));
+ $dep->method('getDependent')->willReturn(ClassLikeToken::fromFQCN($className.'_b'));
+
+ return $dep;
+ }
}
diff --git a/tests/Core/Dependency/DependencyTest.php b/tests/Core/Dependency/DependencyTest.php
index daa4a3e8..c6d84f65 100644
--- a/tests/Core/Dependency/DependencyTest.php
+++ b/tests/Core/Dependency/DependencyTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class DependencyTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/ClassDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/ClassDependencyEmitterTest.php
index 565e18ab..98f71353 100644
--- a/tests/Core/Dependency/Emitter/ClassDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/ClassDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassDependencyEmitter;
final class ClassDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitterTest.php
index 7b01e409..1013b333 100644
--- a/tests/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/ClassSuperglobalDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\ClassSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\ClassSuperglobalDependencyEmitter;
final class ClassSuperglobalDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/EmitterTrait.php b/tests/Core/Dependency/Emitter/EmitterTrait.php
index 1ccd1198..ce181df7 100644
--- a/tests/Core/Dependency/Emitter/EmitterTrait.php
+++ b/tests/Core/Dependency/Emitter/EmitterTrait.php
@@ -6,25 +6,25 @@
use PhpParser\Lexer;
use PhpParser\ParserFactory;
+use Qossmic\Deptrac\Contract\Dependency\DependencyEmitterInterface;
use Qossmic\Deptrac\Contract\Dependency\DependencyInterface;
use Qossmic\Deptrac\Core\Ast\AstLoader;
use Qossmic\Deptrac\Core\Ast\Parser\Cache\AstFileReferenceInMemoryCache;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\AnonymousClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\ClassExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\FunctionCallExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\FunctionLikeExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\InstanceofExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\NewExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\PropertyExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\StaticCallExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\StaticPropertyFetchExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\TraitUseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\UseExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\Extractors\VariableExtractor;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicTypeResolver;
+use Qossmic\Deptrac\Core\Ast\Parser\NikicTypeResolver;
use Qossmic\Deptrac\Core\Dependency\DependencyList;
-use Qossmic\Deptrac\Core\Dependency\Emitter\DependencyEmitterInterface;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\AnonymousClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\ClassExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\FunctionCallExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\FunctionLikeExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\InstanceofExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\NewExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\PropertyExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\StaticCallExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\StaticPropertyFetchExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\TraitUseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\UseExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Extractors\VariableExtractor;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
use Symfony\Component\EventDispatcher\EventDispatcher;
trait EmitterTrait
diff --git a/tests/Core/Dependency/Emitter/FQDNIndexNodeTest.php b/tests/Core/Dependency/Emitter/FQDNIndexNodeTest.php
index 1c2894dc..af05bfcc 100644
--- a/tests/Core/Dependency/Emitter/FQDNIndexNodeTest.php
+++ b/tests/Core/Dependency/Emitter/FQDNIndexNodeTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FQDNIndexNode;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\FQDNIndexNode;
use function array_slice;
use function explode;
diff --git a/tests/Core/Dependency/Emitter/FileDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/FileDependencyEmitterTest.php
index 6e9db655..6ec744de 100644
--- a/tests/Core/Dependency/Emitter/FileDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/FileDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FileDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FileDependencyEmitter;
final class FileDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/FunctionCallDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/FunctionCallDependencyEmitterTest.php
index b6c6d548..e0025d34 100644
--- a/tests/Core/Dependency/Emitter/FunctionCallDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/FunctionCallDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionCallDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionCallDependencyEmitter;
final class FunctionCallDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/FunctionDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/FunctionDependencyEmitterTest.php
index 34ad7a84..d4d3c54f 100644
--- a/tests/Core/Dependency/Emitter/FunctionDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/FunctionDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionDependencyEmitter;
final class FunctionDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitterTest.php
index 3863fd23..1f3f6b4b 100644
--- a/tests/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/FunctionSuperglobalDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\FunctionSuperglobalDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\FunctionSuperglobalDependencyEmitter;
final class FunctionSuperglobalDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/Emitter/UsesDependencyEmitterTest.php b/tests/Core/Dependency/Emitter/UsesDependencyEmitterTest.php
index 888bf39e..a3220b26 100644
--- a/tests/Core/Dependency/Emitter/UsesDependencyEmitterTest.php
+++ b/tests/Core/Dependency/Emitter/UsesDependencyEmitterTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Core\Dependency\Emitter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Dependency\Emitter\UsesDependencyEmitter;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\UsesDependencyEmitter;
final class UsesDependencyEmitterTest extends TestCase
{
diff --git a/tests/Core/Dependency/InheritDependencyTest.php b/tests/Core/Dependency/InheritDependencyTest.php
index b6932bb9..e70b0ddd 100644
--- a/tests/Core/Dependency/InheritDependencyTest.php
+++ b/tests/Core/Dependency/InheritDependencyTest.php
@@ -11,8 +11,8 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyContext;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
use Qossmic\Deptrac\Contract\Ast\AstMap\FileOccurrence;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
final class InheritDependencyTest extends TestCase
{
diff --git a/tests/Core/Dependency/InheritanceFlattenerTest.php b/tests/Core/Dependency/InheritanceFlattenerTest.php
deleted file mode 100644
index 32376368..00000000
--- a/tests/Core/Dependency/InheritanceFlattenerTest.php
+++ /dev/null
@@ -1,98 +0,0 @@
-getToken());
-
- return $astClass;
- }
-
- private function getDependency($className)
- {
- $dep = $this->createMock(Dependency::class);
- $dep->method('getDepender')->willReturn(ClassLikeToken::fromFQCN($className));
- $dep->method('getDependent')->willReturn(ClassLikeToken::fromFQCN($className.'_b'));
-
- return $dep;
- }
-
- public function testFlattenDependencies(): void
- {
- $astMap = $this->createMock(AstMap::class);
-
- $astMap->method('getClassLikeReferences')->willReturn([
- $this->getAstClassReference('classA'),
- $this->getAstClassReference('classB'),
- $this->getAstClassReference('classBaum'),
- $this->getAstClassReference('classWeihnachtsbaum'),
- $this->getAstClassReference('classGeschmückterWeihnachtsbaum'),
- ]);
-
- $dependencyResult = new DependencyList();
- $dependencyResult->addDependency($this->getDependency('classA'));
- $dependencyResult->addDependency($this->getDependency('classB'));
- $dependencyResult->addDependency($this->getDependency('classBaum'));
- $dependencyResult->addDependency($this->getDependency('classWeihnachtsbaumsA'));
-
- $astMap->method('getClassInherits')->willReturnOnConsecutiveCalls(
- // classA
- [],
- // classB
- [],
- // classBaum,
- [],
- // classWeihnachtsbaum
- [
- new AstInherit(
- ClassLikeToken::fromFQCN('classBaum'), new FileOccurrence('classWeihnachtsbaum.php', 3),
- AstInheritType::USES
- ),
- ],
- // classGeschmückterWeihnachtsbaum
- [
- (new AstInherit(
- ClassLikeToken::fromFQCN('classBaum'), new FileOccurrence('classGeschmückterWeihnachtsbaum.php', 3),
- AstInheritType::EXTENDS
- ))
- ->replacePath([
- new AstInherit(
- ClassLikeToken::fromFQCN('classWeihnachtsbaum'),
- new FileOccurrence('classBaum.php', 3),
- AstInheritType::USES
- ),
- ]),
- ]
- );
-
- (new InheritanceFlattener())->flattenDependencies($astMap, $dependencyResult);
-
- $inheritDeps = array_filter(
- $dependencyResult->getDependenciesAndInheritDependencies(),
- static function ($v) {
- return $v instanceof InheritDependency;
- }
- );
-
- self::assertCount(2, $inheritDeps);
- }
-}
diff --git a/tests/Core/Dependency/TokenResolverTest.php b/tests/Core/Dependency/TokenResolverTest.php
index 95a76c70..45bdf107 100644
--- a/tests/Core/Dependency/TokenResolverTest.php
+++ b/tests/Core/Dependency/TokenResolverTest.php
@@ -13,7 +13,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\SuperGlobalToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\VariableReference;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Dependency\TokenResolver;
final class TokenResolverTest extends TestCase
diff --git a/tests/Core/Layer/Collector/AttributeCollectorTest.php b/tests/Core/Layer/Collector/AttributeCollectorTest.php
index 56c43472..0b3b8f56 100644
--- a/tests/Core/Layer/Collector/AttributeCollectorTest.php
+++ b/tests/Core/Layer/Collector/AttributeCollectorTest.php
@@ -7,8 +7,8 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\DependencyType;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
-use Qossmic\Deptrac\Core\Layer\Collector\AttributeCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\AttributeCollector;
final class AttributeCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/BoolCollectorTest.php b/tests/Core/Layer/Collector/BoolCollectorTest.php
index 9ddaea7b..3d5766b6 100644
--- a/tests/Core/Layer/Collector/BoolCollectorTest.php
+++ b/tests/Core/Layer/Collector/BoolCollectorTest.php
@@ -7,11 +7,11 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
+use Qossmic\Deptrac\Contract\Layer\Collectable;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\BoolCollector;
-use Qossmic\Deptrac\Core\Layer\Collector\Collectable;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorResolverInterface;
+use Qossmic\Deptrac\DefaultBehavior\Layer\BoolCollector;
final class BoolCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ClassCollectorTest.php b/tests/Core/Layer/Collector/ClassCollectorTest.php
index 419aa658..6de13c78 100644
--- a/tests/Core/Layer/Collector/ClassCollectorTest.php
+++ b/tests/Core/Layer/Collector/ClassCollectorTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassCollector;
final class ClassCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ClassLikeCollectorTest.php b/tests/Core/Layer/Collector/ClassLikeCollectorTest.php
index f3260801..d180cc73 100644
--- a/tests/Core/Layer/Collector/ClassLikeCollectorTest.php
+++ b/tests/Core/Layer/Collector/ClassLikeCollectorTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassLikeCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassLikeCollector;
final class ClassLikeCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ClassNameRegexCollectorTest.php b/tests/Core/Layer/Collector/ClassNameRegexCollectorTest.php
index 5adf25a8..d26212d1 100644
--- a/tests/Core/Layer/Collector/ClassNameRegexCollectorTest.php
+++ b/tests/Core/Layer/Collector/ClassNameRegexCollectorTest.php
@@ -8,7 +8,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\ClassNameRegexCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ClassNameRegexCollector;
final class ClassNameRegexCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ComposerCollectorTest.php b/tests/Core/Layer/Collector/ComposerCollectorTest.php
index 0cd2e36d..42070ddc 100644
--- a/tests/Core/Layer/Collector/ComposerCollectorTest.php
+++ b/tests/Core/Layer/Collector/ComposerCollectorTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\ComposerCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ComposerCollector;
final class ComposerCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/DirectoryCollectorTest.php b/tests/Core/Layer/Collector/DirectoryCollectorTest.php
index 8298ef23..b11e23ab 100644
--- a/tests/Core/Layer/Collector/DirectoryCollectorTest.php
+++ b/tests/Core/Layer/Collector/DirectoryCollectorTest.php
@@ -6,8 +6,8 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
-use Qossmic\Deptrac\Core\Layer\Collector\DirectoryCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\DirectoryCollector;
final class DirectoryCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ExtendsCollectorTest.php b/tests/Core/Layer/Collector/ExtendsCollectorTest.php
index fcc87830..ee8e47ad 100644
--- a/tests/Core/Layer/Collector/ExtendsCollectorTest.php
+++ b/tests/Core/Layer/Collector/ExtendsCollectorTest.php
@@ -7,10 +7,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
-use Qossmic\Deptrac\Core\Layer\Collector\ExtendsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ExtendsCollector;
final class ExtendsCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/FunctionNameCollectorTest.php b/tests/Core/Layer/Collector/FunctionNameCollectorTest.php
index e91e2f9d..230b70ef 100644
--- a/tests/Core/Layer/Collector/FunctionNameCollectorTest.php
+++ b/tests/Core/Layer/Collector/FunctionNameCollectorTest.php
@@ -8,7 +8,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\FunctionNameCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\FunctionNameCollector;
final class FunctionNameCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/GlobCollectorTest.php b/tests/Core/Layer/Collector/GlobCollectorTest.php
index a8b93a5f..02e64cc4 100644
--- a/tests/Core/Layer/Collector/GlobCollectorTest.php
+++ b/tests/Core/Layer/Collector/GlobCollectorTest.php
@@ -5,8 +5,8 @@
namespace Tests\Qossmic\Deptrac\Core\Layer\Collector;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
-use Qossmic\Deptrac\Core\Layer\Collector\GlobCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\GlobCollector;
final class GlobCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/ImplementsCollectorTest.php b/tests/Core/Layer/Collector/ImplementsCollectorTest.php
index 2b90962a..498a3063 100644
--- a/tests/Core/Layer/Collector/ImplementsCollectorTest.php
+++ b/tests/Core/Layer/Collector/ImplementsCollectorTest.php
@@ -7,10 +7,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
-use Qossmic\Deptrac\Core\Layer\Collector\ImplementsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\ImplementsCollector;
final class ImplementsCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/InheritanceLevelCollectorTest.php b/tests/Core/Layer/Collector/InheritanceLevelCollectorTest.php
index 359c088b..79157855 100644
--- a/tests/Core/Layer/Collector/InheritanceLevelCollectorTest.php
+++ b/tests/Core/Layer/Collector/InheritanceLevelCollectorTest.php
@@ -8,9 +8,9 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInherit;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
-use Qossmic\Deptrac\Core\Layer\Collector\InheritanceLevelCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InheritanceLevelCollector;
final class InheritanceLevelCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/InheritsCollectorTest.php b/tests/Core/Layer/Collector/InheritsCollectorTest.php
index d47c6b99..5d33c0ed 100644
--- a/tests/Core/Layer/Collector/InheritsCollectorTest.php
+++ b/tests/Core/Layer/Collector/InheritsCollectorTest.php
@@ -7,10 +7,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
-use Qossmic\Deptrac\Core\Layer\Collector\InheritsCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InheritsCollector;
final class InheritsCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/InterfaceCollectorTest.php b/tests/Core/Layer/Collector/InterfaceCollectorTest.php
index 3a3342de..ff940130 100644
--- a/tests/Core/Layer/Collector/InterfaceCollectorTest.php
+++ b/tests/Core/Layer/Collector/InterfaceCollectorTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\InterfaceCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\InterfaceCollector;
final class InterfaceCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/LayerCollectorTest.php b/tests/Core/Layer/Collector/LayerCollectorTest.php
index 2672174a..4f0f6037 100644
--- a/tests/Core/Layer/Collector/LayerCollectorTest.php
+++ b/tests/Core/Layer/Collector/LayerCollectorTest.php
@@ -9,8 +9,8 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\LayerCollector;
-use Qossmic\Deptrac\Core\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\Contract\Layer\LayerResolverInterface;
+use Qossmic\Deptrac\DefaultBehavior\Layer\LayerCollector;
final class LayerCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/MethodCollectorTest.php b/tests/Core/Layer/Collector/MethodCollectorTest.php
index 5d034c31..08f37a3f 100644
--- a/tests/Core/Layer/Collector/MethodCollectorTest.php
+++ b/tests/Core/Layer/Collector/MethodCollectorTest.php
@@ -8,8 +8,8 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
-use Qossmic\Deptrac\Core\Layer\Collector\MethodCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Layer\MethodCollector;
final class MethodCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/PHPInternalCollectorTest.php b/tests/Core/Layer/Collector/PHPInternalCollectorTest.php
index 9cfadb22..ea1518fa 100644
--- a/tests/Core/Layer/Collector/PHPInternalCollectorTest.php
+++ b/tests/Core/Layer/Collector/PHPInternalCollectorTest.php
@@ -10,7 +10,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\FunctionToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\TokenReferenceInterface;
-use Qossmic\Deptrac\Core\Layer\Collector\PhpInternalCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\PhpInternalCollector;
final class PHPInternalCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/SuperglobalCollectorTest.php b/tests/Core/Layer/Collector/SuperglobalCollectorTest.php
index 75c4da22..2076c5ac 100644
--- a/tests/Core/Layer/Collector/SuperglobalCollectorTest.php
+++ b/tests/Core/Layer/Collector/SuperglobalCollectorTest.php
@@ -8,7 +8,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\SuperGlobalToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\VariableReference;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\SuperglobalCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\SuperglobalCollector;
final class SuperglobalCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/TagValueRegexCollectorTest.php b/tests/Core/Layer/Collector/TagValueRegexCollectorTest.php
index 7ba37dc7..8f9226d9 100644
--- a/tests/Core/Layer/Collector/TagValueRegexCollectorTest.php
+++ b/tests/Core/Layer/Collector/TagValueRegexCollectorTest.php
@@ -10,7 +10,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Config\Collector\TagValueRegexConfig;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\TagValueRegexCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\TagValueRegexCollector;
final class TagValueRegexCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/TraitCollectorTest.php b/tests/Core/Layer/Collector/TraitCollectorTest.php
index be758612..22145503 100644
--- a/tests/Core/Layer/Collector/TraitCollectorTest.php
+++ b/tests/Core/Layer/Collector/TraitCollectorTest.php
@@ -9,7 +9,7 @@
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeType;
use Qossmic\Deptrac\Contract\Layer\InvalidCollectorDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\TraitCollector;
+use Qossmic\Deptrac\DefaultBehavior\Layer\TraitCollector;
final class TraitCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/Collector/UsesCollectorTest.php b/tests/Core/Layer/Collector/UsesCollectorTest.php
index 096b1b5a..1ed25c74 100644
--- a/tests/Core/Layer/Collector/UsesCollectorTest.php
+++ b/tests/Core/Layer/Collector/UsesCollectorTest.php
@@ -7,10 +7,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\AstInheritType;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
-use Qossmic\Deptrac\Core\Ast\AstMap\AstMap;
-use Qossmic\Deptrac\Core\Ast\AstMap\FileReferenceBuilder;
+use Qossmic\Deptrac\Core\Ast\AstMap;
use Qossmic\Deptrac\Core\Ast\AstMapExtractor;
-use Qossmic\Deptrac\Core\Layer\Collector\UsesCollector;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\Helpers\FileReferenceBuilder;
+use Qossmic\Deptrac\DefaultBehavior\Layer\UsesCollector;
final class UsesCollectorTest extends TestCase
{
diff --git a/tests/Core/Layer/LayerResolverTest.php b/tests/Core/Layer/LayerResolverTest.php
index e067e8c1..2d02f981 100644
--- a/tests/Core/Layer/LayerResolverTest.php
+++ b/tests/Core/Layer/LayerResolverTest.php
@@ -7,10 +7,10 @@
use PHPUnit\Framework\TestCase;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeReference;
use Qossmic\Deptrac\Contract\Ast\AstMap\ClassLikeToken;
+use Qossmic\Deptrac\Contract\Layer\Collectable;
use Qossmic\Deptrac\Contract\Layer\CollectorInterface;
+use Qossmic\Deptrac\Contract\Layer\CollectorResolverInterface;
use Qossmic\Deptrac\Contract\Layer\InvalidLayerDefinitionException;
-use Qossmic\Deptrac\Core\Layer\Collector\Collectable;
-use Qossmic\Deptrac\Core\Layer\Collector\CollectorResolverInterface;
use Qossmic\Deptrac\Core\Layer\LayerResolver;
final class LayerResolverTest extends TestCase
diff --git a/tests/Supportive/Console/Command/AnalyseCommandTest.php b/tests/Supportive/Console/Command/AnalyseCommandTest.php
index c9f24971..80ec66cd 100644
--- a/tests/Supportive/Console/Command/AnalyseCommandTest.php
+++ b/tests/Supportive/Console/Command/AnalyseCommandTest.php
@@ -5,8 +5,8 @@
namespace Tests\Qossmic\Deptrac\Supportive\Console\Command;
use PHPUnit\Framework\TestCase;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Command\AnalyseCommand;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GithubActionsOutputFormatter;
class AnalyseCommandTest extends TestCase
{
diff --git a/tests/Supportive/DependencyInjection/CustomPhpParser.php b/tests/Supportive/DependencyInjection/CustomPhpParser.php
index 9b0f20d5..da7a56aa 100644
--- a/tests/Supportive/DependencyInjection/CustomPhpParser.php
+++ b/tests/Supportive/DependencyInjection/CustomPhpParser.php
@@ -2,6 +2,6 @@
namespace Tests\Qossmic\Deptrac\Supportive\DependencyInjection;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
class CustomPhpParser extends NikicPhpParser {}
diff --git a/tests/Supportive/DependencyInjection/ServiceContainerBuilderTest.php b/tests/Supportive/DependencyInjection/ServiceContainerBuilderTest.php
index ac29bcab..098412a0 100644
--- a/tests/Supportive/DependencyInjection/ServiceContainerBuilderTest.php
+++ b/tests/Supportive/DependencyInjection/ServiceContainerBuilderTest.php
@@ -5,7 +5,7 @@
namespace Tests\Qossmic\Deptrac\Supportive\DependencyInjection;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser;
+use Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser;
use Qossmic\Deptrac\Supportive\DependencyInjection\ServiceContainerBuilder;
final class ServiceContainerBuilderTest extends TestCase
diff --git a/tests/Supportive/DependencyInjection/config/custom.yaml b/tests/Supportive/DependencyInjection/config/custom.yaml
index 94540b54..1769e54a 100644
--- a/tests/Supportive/DependencyInjection/config/custom.yaml
+++ b/tests/Supportive/DependencyInjection/config/custom.yaml
@@ -1,3 +1,3 @@
services:
- Qossmic\Deptrac\Core\Ast\Parser\NikicPhpParser\NikicPhpParser:
+ Qossmic\Deptrac\DefaultBehavior\Ast\Parser\NikicPhpParser:
class: Tests\Qossmic\Deptrac\Supportive\DependencyInjection\CustomPhpParser
diff --git a/tests/Supportive/OutputFormatter/BaselineOutputFormatterTest.php b/tests/Supportive/OutputFormatter/BaselineOutputFormatterTest.php
index 958b4693..d014da94 100644
--- a/tests/Supportive/OutputFormatter/BaselineOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/BaselineOutputFormatterTest.php
@@ -17,11 +17,11 @@
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\BaselineOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\BaselineOutputFormatter;
use Qossmic\Deptrac\Supportive\OutputFormatter\YamlBaselineMapper;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
diff --git a/tests/Supportive/OutputFormatter/CodeclimateOutputFormatterTest.php b/tests/Supportive/OutputFormatter/CodeclimateOutputFormatterTest.php
index 8d61562d..4f375c53 100644
--- a/tests/Supportive/OutputFormatter/CodeclimateOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/CodeclimateOutputFormatterTest.php
@@ -18,12 +18,12 @@
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\CodeclimateOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\CodeclimateOutputFormatter;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/ConfigurationCodeclimateTest.php b/tests/Supportive/OutputFormatter/ConfigurationCodeclimateTest.php
index 778baa4a..70ca6fa8 100644
--- a/tests/Supportive/OutputFormatter/ConfigurationCodeclimateTest.php
+++ b/tests/Supportive/OutputFormatter/ConfigurationCodeclimateTest.php
@@ -5,10 +5,10 @@
namespace Tests\Qossmic\Deptrac\Supportive\OutputFormatter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationCodeclimate;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\ConfigurationCodeclimate;
/**
- * @covers \Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationCodeclimate
+ * @covers \Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\ConfigurationCodeclimate
*/
final class ConfigurationCodeclimateTest extends TestCase
{
diff --git a/tests/Supportive/OutputFormatter/ConfigurationGraphVizTest.php b/tests/Supportive/OutputFormatter/ConfigurationGraphVizTest.php
index b4072fac..5b8057d7 100644
--- a/tests/Supportive/OutputFormatter/ConfigurationGraphVizTest.php
+++ b/tests/Supportive/OutputFormatter/ConfigurationGraphVizTest.php
@@ -5,10 +5,10 @@
namespace Tests\Qossmic\Deptrac\Supportive\OutputFormatter;
use PHPUnit\Framework\TestCase;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationGraphViz;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\ConfigurationGraphViz;
/**
- * @covers \Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\ConfigurationGraphViz
+ * @covers \Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\ConfigurationGraphViz
*/
final class ConfigurationGraphVizTest extends TestCase
{
diff --git a/tests/Supportive/OutputFormatter/ConsoleOutputFormatterTest.php b/tests/Supportive/OutputFormatter/ConsoleOutputFormatterTest.php
index c287e594..c456ba29 100644
--- a/tests/Supportive/OutputFormatter/ConsoleOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/ConsoleOutputFormatterTest.php
@@ -19,11 +19,11 @@
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
use Qossmic\Deptrac\Contract\Result\Warning;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\ConsoleOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\ConsoleOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/FormatterProviderTest.php b/tests/Supportive/OutputFormatter/FormatterProviderTest.php
index ad75c966..33a234d0 100644
--- a/tests/Supportive/OutputFormatter/FormatterProviderTest.php
+++ b/tests/Supportive/OutputFormatter/FormatterProviderTest.php
@@ -5,10 +5,10 @@
namespace Tests\Qossmic\Deptrac\Supportive\OutputFormatter;
use PHPUnit\Framework\TestCase;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\ConsoleOutputFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter;
use Qossmic\Deptrac\Supportive\DependencyInjection\Exception\InvalidServiceInLocatorException;
-use Qossmic\Deptrac\Supportive\OutputFormatter\ConsoleOutputFormatter;
use Qossmic\Deptrac\Supportive\OutputFormatter\FormatterProvider;
-use Qossmic\Deptrac\Supportive\OutputFormatter\TableOutputFormatter;
use stdClass;
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
use Symfony\Component\DependencyInjection\ServiceLocator;
diff --git a/tests/Supportive/OutputFormatter/GithubActionsOutputFormatterTest.php b/tests/Supportive/OutputFormatter/GithubActionsOutputFormatterTest.php
index 2db71948..e8e2584c 100644
--- a/tests/Supportive/OutputFormatter/GithubActionsOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/GithubActionsOutputFormatterTest.php
@@ -19,11 +19,11 @@
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
use Qossmic\Deptrac\Contract\Result\Warning;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GithubActionsOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/GraphVizDotOutputFormatterTest.php b/tests/Supportive/OutputFormatter/GraphVizDotOutputFormatterTest.php
index 83d854f7..c80d46ef 100644
--- a/tests/Supportive/OutputFormatter/GraphVizDotOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/GraphVizDotOutputFormatterTest.php
@@ -15,11 +15,11 @@
use Qossmic\Deptrac\Contract\Result\OutputResult;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GraphVizOutputDotFormatter;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
-use Qossmic\Deptrac\Supportive\OutputFormatter\GraphVizOutputDotFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/JUnitOutputFormatterTest.php b/tests/Supportive/OutputFormatter/JUnitOutputFormatterTest.php
index 9d86d31a..753c48aa 100644
--- a/tests/Supportive/OutputFormatter/JUnitOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/JUnitOutputFormatterTest.php
@@ -17,11 +17,11 @@
use Qossmic\Deptrac\Contract\Result\OutputResult;
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\JUnitOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\JUnitOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/JsonOutputFormatterTest.php b/tests/Supportive/OutputFormatter/JsonOutputFormatterTest.php
index 26881c37..a60d1c36 100644
--- a/tests/Supportive/OutputFormatter/JsonOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/JsonOutputFormatterTest.php
@@ -18,11 +18,11 @@
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\JsonOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\JsonOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/MermaidJSOutputFormatterTest.php b/tests/Supportive/OutputFormatter/MermaidJSOutputFormatterTest.php
index c43b5336..3c61b60c 100644
--- a/tests/Supportive/OutputFormatter/MermaidJSOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/MermaidJSOutputFormatterTest.php
@@ -14,11 +14,11 @@
use Qossmic\Deptrac\Contract\Result\Allowed;
use Qossmic\Deptrac\Contract\Result\OutputResult;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\Helpers\FormatterConfiguration;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\MermaidJSOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\Configuration\FormatterConfiguration;
-use Qossmic\Deptrac\Supportive\OutputFormatter\MermaidJSOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/TableOutputFormatterTest.php b/tests/Supportive/OutputFormatter/TableOutputFormatterTest.php
index 8117f6e2..2fc600e7 100644
--- a/tests/Supportive/OutputFormatter/TableOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/TableOutputFormatterTest.php
@@ -19,11 +19,11 @@
use Qossmic\Deptrac\Contract\Result\Uncovered;
use Qossmic\Deptrac\Contract\Result\Violation;
use Qossmic\Deptrac\Contract\Result\Warning;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\TableOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;
diff --git a/tests/Supportive/OutputFormatter/XMLOutputFormatterTest.php b/tests/Supportive/OutputFormatter/XMLOutputFormatterTest.php
index aee2ff09..56fa1778 100644
--- a/tests/Supportive/OutputFormatter/XMLOutputFormatterTest.php
+++ b/tests/Supportive/OutputFormatter/XMLOutputFormatterTest.php
@@ -16,11 +16,11 @@
use Qossmic\Deptrac\Contract\Result\OutputResult;
use Qossmic\Deptrac\Contract\Result\SkippedViolation;
use Qossmic\Deptrac\Contract\Result\Violation;
-use Qossmic\Deptrac\Core\Dependency\Dependency;
use Qossmic\Deptrac\Core\Dependency\InheritDependency;
+use Qossmic\Deptrac\DefaultBehavior\Dependency\Helpers\Dependency;
+use Qossmic\Deptrac\DefaultBehavior\OutputFormatter\XMLOutputFormatter;
use Qossmic\Deptrac\Supportive\Console\Symfony\Style;
use Qossmic\Deptrac\Supportive\Console\Symfony\SymfonyOutput;
-use Qossmic\Deptrac\Supportive\OutputFormatter\XMLOutputFormatter;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Style\SymfonyStyle;