/** * @param MarkdownBuilder $markdown * @param Metric $metric */ protected function renderMetric(MarkdownBuilder $markdown, Metric $metric) { $markdown->h2($metric->getTitle()); if ($metric->getDescription()) { $markdown->p($metric->getDescription()); } $markdown->bulletedList(['code: ' . $metric->getCode(), 'value: ' . $metric->getValue()]); }
/** * @param string $path * @param array $options * @param AbstractLogger $logger * @return Result */ public function run($path, array $options, AbstractLogger $logger) { $file = tempnam('/tmp', 'pdepend_'); $processBuilder = new ProcessBuilder([$this->bin]); $processBuilder->add('--summary-xml=' . $file); $processBuilder->add(implode(',', $options['files'])); $processBuilder->setWorkingDirectory($path); $processBuilder->run($logger); $data = $this->convertFromXmlToArray(file_get_contents($file)); (new Filesystem())->remove($file); $result = new Result(); $add = function ($code, $title, $description = null) use($result, $data) { $metric = new Metric($title, strtolower('pdepend.' . $code), $data['@' . $code]); $metric->setDescription($description); $result->addMetric($metric); }; $add('ahh', 'Average Hierarchy Height', 'The average of the maximum lenght from a root class to ist deepest subclass subclass'); $add('andc', 'Average Number of Derived Classes', 'The average of direct subclasses of a class'); $add('calls', 'Number of Method or Function Calls'); $add('ccn', 'Cyclomatic Complexity Number'); $add('ccn2', 'Extended Cyclomatic Complexity Number'); $add('cloc', 'Comment Lines fo Code'); $add('clsa', 'Number of Abstract Classes'); $add('clsc', 'Number of Concrete Classes'); $add('fanout', 'Number of Fanouts', 'Referenced Classes'); $add('leafs', 'Number of Leaf Classes', '(final) classes'); $add('lloc', 'Logical Lines Of Code'); $add('loc', 'Lines Of Code'); $add('maxDIT', 'Max Depth of Inheritance Tree', 'Maximum depth of inheritance'); $add('ncloc', 'Non Comment Lines Of Code'); $add('noc', 'Number Of Classes'); $add('nof', 'Number Of Functions'); $add('noi', 'Number Of Interfaces'); $add('nom', 'Number Of Methods'); $add('nop', 'Number of Packages'); $add('roots', 'Number of Root Classes'); return $result; }
/** * @param Metric $metric * @return int */ private static function codeDepth(Metric $metric) { return substr_count($metric->getCode(), '.'); }