Skip to content

Commit

Permalink
To aid extension developers, I have extracted all the default Deptrac…
Browse files Browse the repository at this point in the history
… behaviour, that could be replaced/augmented by extension developers into standalone "module" called `DefaultBehavior`.

I have set as a goal that all the `DefaultBehavior` should be "implementable" by extension developers. That means is MUST NOT depend on any of the Deptrac internals. It can only depend on the exposed `Contract` and third party libraries.

This as a consequence forced me to refactor a lot of the code inside the "Core" module.

This is a good thing, because now we can confidently say that we do not expose contract that are "useless" in a sense that even though they are exposed, nobody could possibly implement extensions based on this contract, because they were missing access to some other features, that were still hidden as internal to the tool.

The result of all of this is that the Deptrac `DefaultBehavior` is just a set of extensions that we ship and autoload with the tool. Anybody could have implemented them themselves and also anybody can easily replace them.

Lastly, those `DefaultBehavior`s can serve as a reference implementations for extension developers. They can use them as a starting point for their own extensions by mimicking the code and behavior.
  • Loading branch information
patrickkusebauch committed Jan 17, 2025
1 parent 6e62f86 commit e59fb6b
Show file tree
Hide file tree
Showing 191 changed files with 811 additions and 742 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
73 changes: 59 additions & 14 deletions baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,32 @@
<code><![CDATA[list<T>]]></code>
</InvalidReturnType>
</file>
<file src="src/Core/Layer/Collector/BoolCollector.php">
<file src="src/DefaultBehavior/Layer/BoolCollector.php">
<RiskyTruthyFalsyComparison>
<code><![CDATA[!$configuration['must']]]></code>
<code><![CDATA[!$configuration['must_not']]]></code>
</RiskyTruthyFalsyComparison>
</file>
<file src="src/Core/Layer/Collector/ComposerFilesParser.php">
<file src="src/DefaultBehavior/Layer/DirectoryCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$validatedPattern]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/DefaultBehavior/Layer/ExtendsCollector.php">
<PropertyNotSetInConstructor>
<code><![CDATA[$astMap]]></code>
</PropertyNotSetInConstructor>
<RedundantPropertyInitializationCheck>
<code><![CDATA[$this->astMap]]></code>
<code><![CDATA[$this->astMapExtractor->extract()]]></code>
</RedundantPropertyInitializationCheck>
</file>
<file src="src/DefaultBehavior/Layer/GlobCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$validatedPattern]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/DefaultBehavior/Layer/Helpers/ComposerFilesParser.php">
<InvalidReturnStatement>
<code><![CDATA[$lockedPackages]]></code>
</InvalidReturnStatement>
Expand All @@ -45,31 +64,57 @@
* }>]]></code>
</InvalidReturnType>
</file>
<file src="src/Core/Layer/Collector/DirectoryCollector.php">
<file src="src/DefaultBehavior/Layer/Helpers/RegexCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$validatedPattern]]></code>
<code><![CDATA[$pattern]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/Core/Layer/Collector/GlobCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$validatedPattern]]></code>
</ArgumentTypeCoercion>
<file src="src/DefaultBehavior/Layer/ImplementsCollector.php">
<PropertyNotSetInConstructor>
<code><![CDATA[$astMap]]></code>
</PropertyNotSetInConstructor>
<RedundantPropertyInitializationCheck>
<code><![CDATA[$this->astMap]]></code>
<code><![CDATA[$this->astMapExtractor->extract()]]></code>
</RedundantPropertyInitializationCheck>
</file>
<file src="src/Core/Layer/Collector/MethodCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$pattern]]></code>
</ArgumentTypeCoercion>
<file src="src/DefaultBehavior/Layer/InheritanceLevelCollector.php">
<PropertyNotSetInConstructor>
<code><![CDATA[$astMap]]></code>
</PropertyNotSetInConstructor>
<RedundantPropertyInitializationCheck>
<code><![CDATA[$this->astMap]]></code>
<code><![CDATA[$this->astMapExtractor->extract()]]></code>
</RedundantPropertyInitializationCheck>
</file>
<file src="src/Core/Layer/Collector/RegexCollector.php">
<file src="src/DefaultBehavior/Layer/InheritsCollector.php">
<PropertyNotSetInConstructor>
<code><![CDATA[$astMap]]></code>
</PropertyNotSetInConstructor>
<RedundantPropertyInitializationCheck>
<code><![CDATA[$this->astMap]]></code>
<code><![CDATA[$this->astMapExtractor->extract()]]></code>
</RedundantPropertyInitializationCheck>
</file>
<file src="src/DefaultBehavior/Layer/MethodCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$pattern]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/Core/Layer/Collector/TagValueRegexCollector.php">
<file src="src/DefaultBehavior/Layer/TagValueRegexCollector.php">
<ArgumentTypeCoercion>
<code><![CDATA[$pattern]]></code>
</ArgumentTypeCoercion>
</file>
<file src="src/DefaultBehavior/Layer/UsesCollector.php">
<PropertyNotSetInConstructor>
<code><![CDATA[$astMap]]></code>
</PropertyNotSetInConstructor>
<RedundantPropertyInitializationCheck>
<code><![CDATA[$this->astMap]]></code>
<code><![CDATA[$this->astMapExtractor->extract()]]></code>
</RedundantPropertyInitializationCheck>
</file>
<file src="src/Supportive/Console/Command/DebugLayerRunner.php">
<RiskyTruthyFalsyComparison>
<code><![CDATA[$layer]]></code>
Expand Down
154 changes: 78 additions & 76 deletions config/services.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -269,7 +270,6 @@
])
;
$services->set(TokenResolver::class);
$services->set(InheritanceFlattener::class);
$services
->set(ClassDependencyEmitter::class)
->tag('dependency_emitter', ['key' => EmitterType::CLASS_TOKEN->value])
Expand Down Expand Up @@ -409,6 +409,7 @@
* Analyser
*/
$services->set(AstMapExtractor::class);
$services->alias(AstMapExtractorInterface::class, AstMapExtractor::class);
$services
->set(UncoveredDependentHandler::class)
->args([
Expand All @@ -426,6 +427,7 @@
'$allowedLayers' => param('ruleset'),
])
;
$services->alias(LayerProviderInterface::class, LayerProvider::class);
$services
->set(AllowDependencyHandler::class)
->tag('kernel.event_subscriber')
Expand Down
5 changes: 5 additions & 0 deletions deptrac.baseline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
deptrac:
skip_violations:
Qossmic\Deptrac\Supportive\Console\Command\AnalyseCommand:
- Qossmic\Deptrac\DefaultBehavior\OutputFormatter\GithubActionsOutputFormatter
- Qossmic\Deptrac\DefaultBehavior\OutputFormatter\TableOutputFormatter
13 changes: 10 additions & 3 deletions deptrac.config.php
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -34,6 +35,9 @@
)
)
->layers(
$defaultBehavior = Layer::withName('DefaultBehavior')->collectors(
DirectoryConfig::create('src/DefaultBehavior/.*')
),
$analyser = Layer::withName('Analyser')->collectors(
DirectoryConfig::create('src/Core/Analyser/.*')
),
Expand Down Expand Up @@ -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/.*')
Expand All @@ -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),
Expand All @@ -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()
Expand Down
Loading

0 comments on commit e59fb6b

Please sign in to comment.