Author: Manuel Pichler (mapi@phpmd.org)
Exemplo n.º 1
0
 /**
  * This method creates a PHPMD instance and configures this object based
  * on the user's input, then it starts the source analysis.
  *
  * The return value of this method can be used as an exit code. A value
  * equal to <b>EXIT_SUCCESS</b> means that no violations or errors were
  * found in the analyzed code. Otherwise this method will return a value
  * equal to <b>EXIT_VIOLATION</b>.
  *
  * @param \PHPMD\TextUI\CommandLineOptions $opts
  * @param \PHPMD\RuleSetFactory $ruleSetFactory
  * @return integer
  */
 public function run(CommandLineOptions $opts, RuleSetFactory $ruleSetFactory)
 {
     if ($opts->hasVersion()) {
         fwrite(STDOUT, sprintf('PHPMD %s', $this->getVersion()) . PHP_EOL);
         return self::EXIT_SUCCESS;
     }
     // Create a report stream
     if ($opts->getReportFile() === null) {
         $stream = STDOUT;
     } else {
         $stream = fopen($opts->getReportFile(), 'wb');
     }
     // Create renderer and configure output
     $renderer = $opts->createRenderer();
     $renderer->setWriter(new StreamWriter($stream));
     $renderers = array($renderer);
     foreach ($opts->getReportFiles() as $reportFormat => $reportFile) {
         $reportRenderer = $opts->createRenderer($reportFormat);
         $reportRenderer->setWriter(new StreamWriter(fopen($reportFile, 'wb')));
         $renderers[] = $reportRenderer;
     }
     // Configure a rule set factory
     $ruleSetFactory->setMinimumPriority($opts->getMinimumPriority());
     if ($opts->hasStrict()) {
         $ruleSetFactory->setStrict();
     }
     $phpmd = new PHPMD();
     $phpmd->setOptions(array_filter(array('coverage' => $opts->getCoverageReport())));
     $extensions = $opts->getExtensions();
     if ($extensions !== null) {
         $phpmd->setFileExtensions(explode(',', $extensions));
     }
     $ignore = $opts->getIgnore();
     if ($ignore !== null) {
         $phpmd->setIgnorePattern(explode(',', $ignore));
     }
     $phpmd->processFiles($opts->getInputPath(), $opts->getRuleSets(), $renderers, $ruleSetFactory);
     if ($phpmd->hasViolations()) {
         return self::EXIT_VIOLATION;
     }
     return self::EXIT_SUCCESS;
 }
 public function __construct(array $args, array $availableRuleSets = array(), $defaults = null)
 {
     $this->parseDefaults($args, $defaults);
     try {
         parent::__construct($args, $availableRuleSets);
     } catch (\InvalidArgumentException $err) {
         if ($err->getCode() !== self::INPUT_ERROR) {
             throw $err;
         }
     }
     $this->assertValidState();
 }
Exemplo n.º 3
0
 /**
  * testCliOptionsAcceptsStrictArgument
  *
  * @return void
  * @since 1.2.0
  */
 public function testCliOptionsAcceptsStrictArgument()
 {
     $args = array(__FILE__, '--strict', __FILE__, 'text', 'codesize');
     $opts = new CommandLineOptions($args);
     self::assertTrue($opts->hasStrict());
 }