public function visitCompilationUnit(ASTCompilationUnit $compilationUnit)
{
// Skip for dummy files
if ($compilationUnit->getFileName() === null) {
return;
}
// Check for initial file
$id = $compilationUnit->getId();
if (isset($this->metrics[$id])) {
return;
}
$this->fireStartFile($compilationUnit);
if ($this->restoreFromCache($compilationUnit)) {
$this->updateProjectMetrics($id);
return $this->fireEndFile($compilationUnit);
}
list($cloc, $eloc, $lloc) = $this->linesOfCode($compilationUnit->getTokens());
$loc = $compilationUnit->getEndLine();
$ncloc = $loc - $cloc;
$this->metrics[$id] = array(self::M_LINES_OF_CODE => $loc, self::M_COMMENT_LINES_OF_CODE => $cloc, self::M_EXECUTABLE_LINES_OF_CODE => $eloc, self::M_LOGICAL_LINES_OF_CODE => $lloc, self::M_NON_COMMENT_LINES_OF_CODE => $ncloc);
$this->updateProjectMetrics($id);
$this->fireEndFile($compilationUnit);
}