/** * testLogFileIsCreatedForUnstructuredCode * * @param string $className Class name of a logger implementation. * @param string $extension Log file extension. * * @return void * @dataProvider getLoggerClassNames */ public function testLogFileIsCreatedForUnstructuredCode($className, $extension) { $file = self::createRunResourceURI() . '.' . $extension; $logger = new $className(); $logger->setLogFile($file); $factory = new PHP_Depend_Util_Configuration_Factory(); $pdepend = new PHP_Depend($factory->createDefault()); $pdepend->addFile(self::createCodeResourceUriForTest()); $pdepend->addLogger($logger); $pdepend->analyze(); self::assertFileExists($file); }
public function doSetUp() { $config = new \stdClass(); $config->cache = new \stdClass(); $config->parser = new \stdClass(); $config->parser->nesting = 100; $config->cache->driver = new \stdClass(); $config->cache->driver = 'memory'; $pdepend = new \PHP_Depend(new \PHP_Depend_Util_Configuration($config)); $logger = new MyLogger(); $pdepend->addLogger($logger); $this->logger = $logger; $this->pdepend = $pdepend; }
/** * Parses the projects source and reports all detected errors and violations. * * @param PHP_PMD_Report $report The phpmd error and violation report. * * @return void */ public function parse(PHP_PMD_Report $report) { $this->setReport($report); $this->_pdepend->addLogger($this); $this->_pdepend->analyze(); }
/** * Initializes the accepted php source file extensions. * * @param PHP_Depend $pdepend The context php depend instance. * @param PHP_PMD $phpmd The calling/parent php mess detector. * * @return void */ private function _initExtensions(PHP_Depend $pdepend, PHP_PMD $phpmd) { if (count($phpmd->getFileExtensions()) > 0) { $pdepend->addFileFilter(new PHP_Depend_Input_ExtensionFilter($phpmd->getFileExtensions())); } }
/** * Tests that pdepend does not die with a fatal error. * * @return void */ public function testPHPDependDoesNotDieWithErrorInterfaceDeclaredBeforeClassWithoutPackage() { $logFile = self::createRunResourceURI('summary.xml'); $fileName = self::createCodeResourceURI('bugs/073-004-inconsistent-object-graph.php'); $log = new PHP_Depend_Log_Summary_Xml(); $log->setLogFile($logFile); $pdepend = new PHP_Depend(); $pdepend->addFile($fileName); $pdepend->addLogger($log); $pdepend->setSupportBadDocumentation(); $pdepend->analyze(); }
/** * Starts the main PDepend process and returns <b>true</b> after a successful * execution. * * @return boolean * @throws RuntimeException An exception with a readable error message and * an exit code. */ public function run() { $pdepend = new PHP_Depend(); $pdepend->setOptions($this->_options); foreach ($this->_optimizations[$this->_optimization] as $type => $class) { // Import storage engine class definition if (class_exists($class) === false) { include_once strtr($class, '_', '/') . '.php'; } $pdepend->setStorage($type, new $class()); } if (count($this->_extensions) > 0) { $filter = new PHP_Depend_Input_ExtensionFilter($this->_extensions); $pdepend->addFileFilter($filter); } if (count($this->_excludeDirectories) > 0) { $exclude = $this->_excludeDirectories; $filter = new PHP_Depend_Input_ExcludePathFilter($exclude); $pdepend->addFileFilter($filter); } if (count($this->_excludePackages) > 0) { $exclude = $this->_excludePackages; $filter = new PHP_Depend_Code_Filter_Package($exclude); $pdepend->setCodeFilter($filter); } if ($this->_withoutAnnotations === true) { $pdepend->setWithoutAnnotations(); } // Try to set all source directories. try { foreach ($this->_sourceArguments as $sourceArgument) { if (is_file($sourceArgument)) { $pdepend->addFile($sourceArgument); } else { $pdepend->addDirectory($sourceArgument); } } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } if (count($this->_loggerMap) === 0) { throw new RuntimeException('No output specified.', self::EXCEPTION_EXIT); } $loggerFactory = new PHP_Depend_Log_LoggerFactory(); // To append all registered loggers. try { foreach ($this->_loggerMap as $loggerID => $logFileName) { // Create a new logger $logger = $loggerFactory->createLogger($loggerID, $logFileName); $pdepend->addLogger($logger); } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } foreach ($this->_processListeners as $processListener) { $pdepend->addProcessListener($processListener); } try { $pdepend->analyze(); foreach ($pdepend->getExceptions() as $exception) { $this->_parseErrors[] = $exception->getMessage(); } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } return self::SUCCESS_EXIT; }
/** * Tests that the setStorage() method throws an exception when an invalid * storage type was given. * * @return void */ public function testSetStorageThrowsTheExpectedExceptionForAnUnknownStorageType() { $pdepend = new PHP_Depend(); $this->setExpectedException('InvalidArgumentException', 'Unknown storage identifier'); $pdepend->setStorage(PHP_INT_MAX, $this->getMock('PHP_Depend_Storage_EngineI')); }
/** * Starts the main PDepend process and returns <b>true</b> after a successful * execution. * * @return boolean * @throws RuntimeException An exception with a readable error message and * an exit code. */ public function run() { $pdepend = new PHP_Depend($this->configuration); $pdepend->setOptions($this->options); if (count($this->extensions) > 0) { $filter = new PHP_Depend_Input_ExtensionFilter($this->extensions); $pdepend->addFileFilter($filter); } if (count($this->excludeDirectories) > 0) { $exclude = $this->excludeDirectories; $filter = new PHP_Depend_Input_ExcludePathFilter($exclude); $pdepend->addFileFilter($filter); } if (count($this->excludePackages) > 0) { $exclude = $this->excludePackages; $filter = new PHP_Depend_Code_Filter_Package($exclude); $pdepend->setCodeFilter($filter); } if ($this->withoutAnnotations === true) { $pdepend->setWithoutAnnotations(); } // Try to set all source directories. try { foreach ($this->sourceArguments as $sourceArgument) { if (is_file($sourceArgument)) { $pdepend->addFile($sourceArgument); } else { $pdepend->addDirectory($sourceArgument); } } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } if (count($this->loggerMap) === 0) { throw new RuntimeException('No output specified.', self::EXCEPTION_EXIT); } $loggerFactory = new PHP_Depend_Log_LoggerFactory(); // To append all registered loggers. try { foreach ($this->loggerMap as $loggerID => $logFileName) { // Create a new logger $logger = $loggerFactory->createLogger($loggerID, $logFileName); $pdepend->addLogger($logger); } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } foreach ($this->processListeners as $processListener) { $pdepend->addProcessListener($processListener); } try { $pdepend->analyze(); foreach ($pdepend->getExceptions() as $exception) { $this->parseErrors[] = $exception->getMessage(); } } catch (Exception $e) { throw new RuntimeException($e->getMessage(), self::EXCEPTION_EXIT); } return self::SUCCESS_EXIT; }
/** * Runs PHP_Depend with the summary logger, against a source file associated * with the given test case. * * @param string $testCase Name of the calling test case. * * @return void */ private function _runForTestCase($testCase) { $uri = $this->createRunResourceURI(__FUNCTION__); $logger = new PHP_Depend_Log_Summary_Xml(); $logger->setLogFile($uri); $pdepend = new PHP_Depend(); $pdepend->addFile(self::getSourceFileForTestCase($testCase)); $pdepend->addLogger($logger); $pdepend->analyze(); $dom = new DOMDocument('1.0', 'UTF-8'); $dom->load($uri); $xpath = new DOMXPath($dom); $result = $xpath->query('//class[@name="RuntimeException"]'); $this->assertEquals(0, $result->length); }
/** * Tests that the result does not contain an interface with a broken body. * * @return void * @group bugs */ public function testDefaultPackageDoesNotContainsInterfaceWithBrokenBody() { $pdepend = new PHP_Depend(); $pdepend->addFile(self::getSourceFileForTestCase(__METHOD__)); $pdepend->analyze(); $interfaces = $pdepend->getPackages()->current()->getInterfaces(); $this->assertSame(1, $interfaces->count()); }
/** * Tests that the {@link PHP_Depend::getExceptions()} Returns a list with * the expected exceptions. * * @return void * @covers PHP_Depend * @group pdepend * @group pdepend::issues * @group unittest */ public function testPHPDependReturnsExpectedExceptionInstances() { $logger = $this->getMock('PHP_Depend_Log_LoggerI'); $logger->expects($this->atLeastOnce())->method('getAcceptedAnalyzers')->will($this->returnValue(array())); $pdepend = new PHP_Depend(); $pdepend->addDirectory(self::createCodeResourceURI('issues/061')); $pdepend->addFileFilter(new PHP_Depend_Input_ExtensionFilter(array('php'))); $pdepend->addLogger($logger); $pdepend->analyze(); $exceptions = $pdepend->getExceptions(); $this->assertEquals(count($this->expectedExceptions), count($exceptions)); foreach ($exceptions as $exception) { $this->assertTrue(in_array($exception->getMessage(), $this->expectedExceptions), "Unexpected exception with message: " . $exception->getMessage()); } }
/** * Parses the projects source and reports all detected errors and violations. * * @param PHP_PMD_Report $report The phpmd error and violation report. * * @return void */ public function parse(PHP_PMD_Report $report) { $this->setReport($report); $this->_pdepend->addLogger($this); $this->_pdepend->analyze(); foreach ($this->_pdepend->getExceptions() as $exception) { $report->addError(new PHP_PMD_ProcessingError($exception->getMessage())); } }
/** * testSummaryReportDoesNotContainEmptyPackages * * @return void * @covers stdClass * @group pdepend * @group pdepend::bugs * @group regressiontest */ public function testSummaryReportDoesNotContainEmptyPackages() { $resultFile = self::createRunResourceURI(__METHOD__); $logger = new PHP_Depend_Log_Summary_Xml(); $logger->setLogFile($resultFile); $pdepend = new PHP_Depend(); $pdepend->addLogger($logger); $pdepend->addFile(self::getSourceFileForTestCase(__METHOD__)); $pdepend->analyze(); $sxml = simplexml_load_file($resultFile); $this->assertSame(array(), $sxml->xpath('//package[@name="+global"]')); }