public function visitFunction(ASTFunction $function)
{
$this->fireStartFunction($function);
$function->getCompilationUnit()->accept($this);
if ($this->restoreFromCache($function)) {
return $this->fireEndFunction($function);
}
list($cloc, $eloc, $lloc) = $this->linesOfCode($function->getTokens(), true);
$loc = $function->getEndLine() - $function->getStartLine() + 1;
$ncloc = $loc - $cloc;
$this->metrics[$function->getId()] = 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->fireEndFunction($function);
}