/**
  * 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);
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 /**
  * 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();
 }
Exemple #4
0
 /**
  * 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();
 }
Exemple #6
0
 /**
  * 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;
 }
Exemple #7
0
 /**
  * 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'));
 }
Exemple #8
0
 /**
  * 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());
     }
 }
Exemple #12
0
 /**
  * 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"]'));
 }