/** * 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); } }
/** * 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(); }