コード例 #1
0
 public static function fromArray(array $arr)
 {
     $options = (new OptionsResolver())->setRequired(['layers', 'paths', 'exclude_files', 'ruleset'])->addAllowedTypes('layers', 'array')->addAllowedTypes('paths', 'array')->addAllowedTypes('exclude_files', ['array', 'null'])->addAllowedTypes('ruleset', 'array')->resolve($arr);
     return new static(array_map(function ($v) {
         return ConfigurationLayer::fromArray($v);
     }, $options['layers']), ConfigurationRuleset::fromArray($options['ruleset']), $options['paths'], (array) $options['exclude_files']);
 }
コード例 #2
0
 public function testFromArray()
 {
     $configurationRuleSet = ConfigurationRuleset::fromArray(['foo' => ['bar'], 'lala' => ['xx', 'yy']]);
     $this->assertEquals(['bar'], $configurationRuleSet->getAllowedDependendencies('foo'));
     $this->assertEquals(['xx', 'yy'], $configurationRuleSet->getAllowedDependendencies('lala'));
     $this->assertEquals([], $configurationRuleSet->getAllowedDependendencies('lalax'));
 }
コード例 #3
0
 /**
  * @param DependencyResult                $dependencyResult
  * @param ClassNameLayerResolverInterface $classNameLayerResolver
  * @param ConfigurationRuleset            $configurationRuleset
  *
  * @return RulesetViolation[]
  */
 public function getViolations(DependencyResult $dependencyResult, ClassNameLayerResolverInterface $classNameLayerResolver, ConfigurationRuleset $configurationRuleset)
 {
     $violations = [];
     foreach ($dependencyResult->getDependenciesAndInheritDependencies() as $dependency) {
         $layerNames = $classNameLayerResolver->getLayersByClassName($dependency->getClassA());
         foreach ($layerNames as $layerName) {
             foreach ($classNameLayerResolver->getLayersByClassName($dependency->getClassB()) as $layerNameOfDependency) {
                 if ($layerName == $layerNameOfDependency) {
                     continue;
                 }
                 if (in_array($layerNameOfDependency, $configurationRuleset->getAllowedDependendencies($layerName))) {
                     continue;
                 }
                 $violations[] = new RulesetViolation($dependency, $layerName, $layerNameOfDependency, '');
             }
         }
     }
     return $violations;
 }
コード例 #4
0
 /**
  * @param array $dependenciesAsArray
  * @param array $classesInLayers
  * @param array $rulesetConfiguration
  * @param $expectedCount
  * @dataProvider dependencyProvider
  */
 public function testGetViolationsButNoViolations(array $dependenciesAsArray, array $classesInLayers, array $rulesetConfiguration, $expectedCount)
 {
     $dependencyResult = new DependencyResult();
     foreach ($this->createDependencies($dependenciesAsArray) as $dep) {
         $dependencyResult->addDependency($dep);
     }
     $classNameLayerResolver = $this->prophesize(ClassNameLayerResolverInterface::class);
     foreach ($classesInLayers as $classInLayer => $layers) {
         $classNameLayerResolver->getLayersByClassName($classInLayer)->willReturn($layers);
     }
     $this->assertCount($expectedCount, (new RulesetEngine())->getViolations($dependencyResult, $classNameLayerResolver->reveal(), ConfigurationRuleset::fromArray($rulesetConfiguration)));
 }