/** * Run the task. * * @param array &$options Additional options. * * @return integer Number of errors. */ public function run(&$options) { $lib = realpath($this->_config->getPath() . '/lib'); $renderer = new PHP_PMD_Renderer_TextRenderer(); $renderer->setWriter(new PHP_PMD_Writer_Stream(STDOUT)); $ruleSetFactory = new PHP_PMD_RuleSetFactory(); $ruleSetFactory->setMinimumPriority(PHP_PMD_AbstractRule::LOWEST_PRIORITY); $phpmd = new PHP_PMD(); $phpmd->processFiles($lib, Components_Constants::getDataDirectory() . '/qc_standards/phpmd.xml', array($renderer), $ruleSetFactory); return $phpmd->hasViolations(); }
/** * testLocalVariableUsedInDoubleQuoteStringGetsNotReported * * @return void * @outputBuffering enabled */ public function testLocalVariableUsedInDoubleQuoteStringGetsNotReported() { $renderer = new PHP_PMD_Renderer_TextRenderer(); $renderer->setWriter(new PHP_PMD_Writer_Stream(self::createTempFileUri())); $inputs = self::createCodeResourceUriForTest(); $rules = 'unusedcode'; $renderes = array($renderer); $factory = new PHP_PMD_RuleSetFactory(); $phpmd = new PHP_PMD(); $phpmd->processFiles($inputs, $rules, $renderes, $factory); }
/** * Creates a report renderer instance based on the formatter type. * * @return PHP_PMD_AbstractRenderer * @throws BuildException When the specified renderer does not exist. */ public function getRenderer() { switch ($this->type) { case 'xml': $renderer = new PHP_PMD_Renderer_XMLRenderer(); break; case 'html': $renderer = new PHP_PMD_Renderer_HTMLRenderer(); break; case 'text': $renderer = new PHP_PMD_Renderer_TextRenderer(); break; default: throw new BuildException('PHP_MD renderer "' . $this->type . '" not implemented'); } // Create a report stream if ($this->getUseFile() === false || $this->getOutfile() === null) { $stream = STDOUT; } else { $stream = fopen($this->getOutfile()->getAbsoluteFile(), 'wb'); } require_once 'PHP/PMD/Writer/Stream.php'; $renderer->setWriter(new PHP_PMD_Writer_Stream($stream)); return $renderer; }
/** * testRendererCreatesExpectedNumberOfTextEntries * * @return void * @covers PHP_PMD_Renderer_TextRenderer * @group phpmd * @group phpmd::renderer * @group unittest */ public function testRendererCreatesExpectedNumberOfTextEntries() { // Create a writer instance. $writer = new PHP_PMD_Stubs_WriterStub(); $violations = array($this->getRuleViolationMock('/bar.php', 1), $this->getRuleViolationMock('/foo.php', 2), $this->getRuleViolationMock('/foo.php', 3)); $report = $this->getReportMock(0); $report->expects($this->once())->method('getRuleViolations')->will($this->returnValue(new ArrayIterator($violations))); $renderer = new PHP_PMD_Renderer_TextRenderer(); $renderer->setWriter($writer); $renderer->start(); $renderer->renderReport($report); $renderer->end(); $this->assertEquals(PHP_EOL . "/bar.php:1\tTest description" . PHP_EOL . "/foo.php:2\tTest description" . PHP_EOL . "/foo.php:3\tTest description" . PHP_EOL, $writer->getData()); }
/** * testRendererAddsProcessingErrorsToTextReport * * @return void */ public function testRendererAddsProcessingErrorsToTextReport() { // Create a writer instance. $writer = new PHP_PMD_Stubs_WriterStub(); $errors = array(new PHP_PMD_ProcessingError('Failed for file "/tmp/foo.php".'), new PHP_PMD_ProcessingError('Failed for file "/tmp/bar.php".'), new PHP_PMD_ProcessingError('Failed for file "/tmp/baz.php".')); $report = $this->getReportMock(0); $report->expects($this->once())->method('getRuleViolations')->will($this->returnValue(new ArrayIterator(array()))); $report->expects($this->once())->method('getErrors')->will($this->returnValue(new ArrayIterator($errors))); $renderer = new PHP_PMD_Renderer_TextRenderer(); $renderer->setWriter($writer); $renderer->start(); $renderer->renderReport($report); $renderer->end(); $this->assertEquals(PHP_EOL . "/tmp/foo.php\t-\tFailed for file \"/tmp/foo.php\"." . PHP_EOL . "/tmp/bar.php\t-\tFailed for file \"/tmp/bar.php\"." . PHP_EOL . "/tmp/baz.php\t-\tFailed for file \"/tmp/baz.php\"." . PHP_EOL, $writer->getData()); }