Exemple #1
0
 /**
  * Invokes the <b>createRuleSets()</b> of the {@link RuleSetFactory}
  * class.
  *
  * @param string $file At least one rule configuration file name. You can
  *        also pass multiple parameters with ruleset configuration files.
  * @return \PHPMD\RuleSet[]
  */
 private function createRuleSetsFromFiles($file)
 {
     $args = func_get_args();
     $factory = new RuleSetFactory();
     return $factory->createRuleSets(join(',', $args));
 }
 /**
  * This method parses a single rule that was included from a different
  * rule-set.
  *
  * @param \PHPMD\RuleSet $ruleSet
  * @param \SimpleXMLElement $ruleNode
  * @return void
  */
 private function parseRuleReferenceNode(RuleSet $ruleSet, \SimpleXMLElement $ruleNode)
 {
     $ref = (string) $ruleNode['ref'];
     $fileName = substr($ref, 0, strpos($ref, '.xml/') + 4);
     $fileName = $this->createRuleSetFileName($fileName);
     $ruleName = substr($ref, strpos($ref, '.xml/') + 5);
     $ruleSetFactory = new RuleSetFactory();
     $ruleSetRef = $ruleSetFactory->createSingleRuleSet($fileName);
     $rule = $ruleSetRef->getRuleByName($ruleName);
     if (trim($ruleNode['name']) !== '') {
         $rule->setName((string) $ruleNode['name']);
     }
     if (trim($ruleNode['message']) !== '') {
         $rule->setMessage((string) $ruleNode['message']);
     }
     if (trim($ruleNode['externalInfoUrl']) !== '') {
         $rule->setExternalInfoUrl((string) $ruleNode['externalInfoUrl']);
     }
     foreach ($ruleNode->children() as $node) {
         if ($node->getName() === 'description') {
             $rule->setDescription((string) $node);
         } elseif ($node->getName() === 'example') {
             $rule->addExample((string) $node);
         } elseif ($node->getName() === 'priority') {
             $rule->setPriority((int) $node);
         } elseif ($node->getName() === 'properties') {
             $this->parsePropertiesNode($rule, $node);
         }
     }
     if ($rule->getPriority() <= $this->minimumPriority) {
         $ruleSet->addRule($rule);
     }
 }
Exemple #3
0
 /**
  * This method will process all files that can be found in the given input
  * path. It will apply rules defined in the comma-separated <b>$ruleSets</b>
  * argument. The result will be passed to all given renderer instances.
  *
  * @param string $inputPath
  * @param string $ruleSets
  * @param \PHPMD\AbstractRenderer[] $renderers
  * @param \PHPMD\RuleSetFactory $ruleSetFactory
  * @return void
  */
 public function processFiles($inputPath, $ruleSets, array $renderers, RuleSetFactory $ruleSetFactory)
 {
     // Merge parsed excludes
     $this->ignorePatterns = array_merge($this->ignorePatterns, $ruleSetFactory->getIgnorePattern($ruleSets));
     $this->input = $inputPath;
     $report = new Report();
     $factory = new ParserFactory();
     $parser = $factory->create($this);
     foreach ($ruleSetFactory->createRuleSets($ruleSets) as $ruleSet) {
         $parser->addRuleSet($ruleSet);
     }
     $report->start();
     $parser->parse($report);
     $report->end();
     foreach ($renderers as $renderer) {
         $renderer->start();
     }
     foreach ($renderers as $renderer) {
         $renderer->renderReport($report);
     }
     foreach ($renderers as $renderer) {
         $renderer->end();
     }
     $this->violations = !$report->isEmpty();
 }