It collects the total Lines Of Code(loc), the None Comment Lines Of Code(ncloc), the Comment Lines Of Code(cloc) and a approximated Executable Lines Of Code(eloc) for files, classes, interfaces, methods, properties and function. The current implementation has a limitation, that affects inline comments. The following code will suppress one line of code. function foo() { foobar(); // Bad behaviour... } The same rule applies to class methods. mapi, PLEASE, FIX THIS ISSUE.
Inheritance: extends PDepend\Metrics\AbstractCachingAnalyzer, implements PDepend\Metrics\AnalyzerNodeAware, implements PDepend\Metrics\AnalyzerFilterAware, implements PDepend\Metrics\AnalyzerProjectAware
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']);
 }
 /**
  * Creates a ready to use node loc analyzer.
  *
  * @return \PDepend\Metrics\Analyzer\NodeLocAnalyzer
  * @since 1.0.0
  */
 private function _createAnalyzer()
 {
     $analyzer = new NodeLocAnalyzer();
     $analyzer->setCache($this->cache);
     return $analyzer;
 }