protected function report($flag, $extra = null, $line = null)
{
$report = $this->config->getRule($flag);
if (isset($report['used']) && $report['used'] === false) {
return;
}
if (!empty($report) && $this->config->report_on($report['flag'])) {
$where = isset($this->node->parent) ? $this->node->parent : 'COMMENT';
if (isset($this->node->name)) {
$where = $this->node->name;
}
if (isset($report['message_extras'])) {
$cmp = $report['compare'];
if (isset($report['type']) && $report['type'] === 'assoc' && array_key_exists($extra, $cmp)) {
$cmp = $cmp[$extra];
}
$report['message'] = sprintf($report['message_extras'], $extra, $cmp);
} elseif (isset($report['message_extra'])) {
$report['message'] = sprintf($report['message_extra'], $extra);
}
$report['where'] = $where;
$report['line'] = empty($line) ? $this->node->start_line : $line;
$this->reports[] = $report;
$flag = $report['flag'][0];
if (isset($report['penalty'])) {
$this->penalty -= $report['penalty'];
} else {
eval('$this->penalty -= ' . $flag . '_PENALTY;');
}
}
}