Example #1
0
 /**
  * Aggregates the required metrics from the registered analyzers.
  *
  * @return array(string => mixed)
  * @throws RuntimeException If one of the required analyzers isn't set.
  */
 private function collectMetrics()
 {
     if ($this->coupling === null) {
         throw new RuntimeException('Missing Coupling analyzer.');
     }
     if ($this->cyclomaticComplexity === null) {
         throw new RuntimeException('Missing Cyclomatic Complexity analyzer.');
     }
     if ($this->inheritance === null) {
         throw new RuntimeException('Missing Inheritance analyzer.');
     }
     if ($this->nodeCount === null) {
         throw new RuntimeException('Missing Node Count analyzer.');
     }
     if ($this->nodeLoc === null) {
         throw new RuntimeException('Missing Node LOC analyzer.');
     }
     $coupling = $this->coupling->getProjectMetrics();
     $cyclomatic = $this->cyclomaticComplexity->getProjectMetrics();
     $inheritance = $this->inheritance->getProjectMetrics();
     $nodeCount = $this->nodeCount->getProjectMetrics();
     $nodeLoc = $this->nodeLoc->getProjectMetrics();
     return array('cyclo' => $cyclomatic['ccn2'], 'loc' => $nodeLoc['eloc'], 'nom' => $nodeCount['nom'] + $nodeCount['nof'], 'noc' => $nodeCount['noc'], 'nop' => $nodeCount['nop'], 'ahh' => round($inheritance['ahh'], 3), 'andc' => round($inheritance['andc'], 3), 'fanout' => $coupling['fanout'], 'calls' => $coupling['calls']);
 }
Example #2
0
 /**
  * Tests that the analyzer calculates the correct number of functions values.
  *
  * @return void
  */
 public function testAnalyzerCalculatesCorrectNumberOfFunctions()
 {
     $packageA = new PHP_Depend_Code_Package('A');
     $packageA->addFunction(new PHP_Depend_Code_Function('a1'));
     $packageA->addFunction(new PHP_Depend_Code_Function('a2'));
     $packageA->addFunction(new PHP_Depend_Code_Function('a3'));
     $packageB = new PHP_Depend_Code_Package('B');
     $packageB->addFunction(new PHP_Depend_Code_Function('b1'));
     $packageB->addFunction(new PHP_Depend_Code_Function('b2'));
     $packageC = new PHP_Depend_Code_Package('C');
     $packageC->addFunction(new PHP_Depend_Code_Function('c1'));
     $packages = array($packageA, $packageB, $packageC);
     $analyzer = new PHP_Depend_Metrics_NodeCount_Analyzer();
     $analyzer->analyze(new PHP_Depend_Code_NodeIterator($packages));
     $project = $analyzer->getProjectMetrics();
     $this->assertArrayHasKey('nof', $project);
     $this->assertEquals(6, $project['nof']);
     $metrics = $analyzer->getNodeMetrics($packageA);
     $this->assertArrayHasKey('nof', $metrics);
     $this->assertEquals(3, $metrics['nof']);
     $metrics = $analyzer->getNodeMetrics($packageB);
     $this->assertArrayHasKey('nof', $metrics);
     $this->assertEquals(2, $metrics['nof']);
     $metrics = $analyzer->getNodeMetrics($packageC);
     $this->assertArrayHasKey('nof', $metrics);
     $this->assertEquals(1, $metrics['nof']);
 }
Example #3
0
 /**
  * testCalculatesExpectedNumberOfFunctionsInPackages
  *
  * @return void
  * @covers PHP_Depend_Metrics_NodeCount_Analyzer
  * @group pdepend
  * @group pdepend::metrics
  * @group pdepend::metrics::nodecount
  * @group unittest
  */
 public function testCalculatesExpectedNumberOfFunctionsInPackages()
 {
     $packages = self::parseTestCaseSource(__METHOD__);
     $analyzer = new PHP_Depend_Metrics_NodeCount_Analyzer();
     $analyzer->analyze($packages);
     $metrics = array();
     foreach ($packages as $package) {
         $metrics[$package->getName()] = $analyzer->getNodeMetrics($package);
     }
     $this->assertEquals(array('A' => array('noc' => 0, 'noi' => 0, 'nom' => 0, 'nof' => 3), 'B' => array('noc' => 0, 'noi' => 0, 'nom' => 0, 'nof' => 2), 'C' => array('noc' => 0, 'noi' => 0, 'nom' => 0, 'nof' => 1)), $metrics);
 }
Example #4
0
 /**
  * Tests the result of the phpunit logger with some real analyzers.
  *
  * @return void
  * @covers PHP_Depend_Log_Phpunit_Xml
  * @group pdepend
  * @group pdepend::logs
  * @group pdepend::logs::summary
  * @group unittest
  */
 public function testPHPUnitLoggerResult()
 {
     $packages = self::parseTestCaseSource(__METHOD__);
     $logger = new PHP_Depend_Log_Phpunit_Xml();
     $logger->setLogFile($this->_tempFile);
     $logger->setCode($packages);
     $analyzer0 = new PHP_Depend_Metrics_CyclomaticComplexity_Analyzer();
     $analyzer0->analyze($packages);
     $analyzer1 = new PHP_Depend_Metrics_ClassLevel_Analyzer();
     $analyzer1->addAnalyzer($analyzer0);
     $analyzer1->analyze($packages);
     $analyzer2 = new PHP_Depend_Metrics_CodeRank_Analyzer();
     $analyzer2->analyze($packages);
     $analyzer3 = new PHP_Depend_Metrics_Coupling_Analyzer();
     $analyzer3->analyze($packages);
     $analyzer4 = new PHP_Depend_Metrics_Hierarchy_Analyzer();
     $analyzer4->analyze($packages);
     $analyzer5 = new PHP_Depend_Metrics_Inheritance_Analyzer();
     $analyzer5->analyze($packages);
     $analyzer6 = new PHP_Depend_Metrics_NodeCount_Analyzer();
     $analyzer6->analyze($packages);
     $analyzer7 = new PHP_Depend_Metrics_NodeLoc_Analyzer();
     $analyzer7->analyze($packages);
     $logger->log($analyzer0);
     $logger->log($analyzer1);
     $logger->log($analyzer2);
     $logger->log($analyzer3);
     $logger->log($analyzer4);
     $logger->log($analyzer5);
     $logger->log($analyzer6);
     $logger->log($analyzer7);
     $logger->close();
     $actual = file_get_contents($this->_tempFile);
     $expected = $this->_loadExpected('phpunit-log.xml');
     $this->assertXmlStringEqualsXmlString($expected, $actual);
 }