public function renderLintResult(ArcanistLintResult $result) { $messages = $result->getMessages(); $path = $result->getPath(); $lines = explode("\n", $result->getData()); $text = array(); foreach ($messages as $message) { if (!$this->showAutofixPatches && $message->isAutofix()) { continue; } if ($message->isError()) { $color = 'red'; } else { $color = 'yellow'; } $severity = ArcanistLintSeverity::getStringForSeverity($message->getSeverity()); $code = $message->getCode(); $name = $message->getName(); $description = phutil_console_wrap($message->getDescription(), 4); $text[] = phutil_console_format(" **<bg:{$color}> %s </bg>** (%s) __%s__\n%s\n", $severity, $code, $name, $description); if ($message->hasFileContext()) { $text[] = $this->renderContext($message, $lines); } } if ($text) { $prefix = phutil_console_format("**>>>** Lint for __%s__:\n\n\n", $path); return $prefix . implode("\n", $text); } else { return null; } }
public function renderLintResult(ArcanistLintResult $result) { $messages = $result->getMessages(); $path = $result->getPath(); $data = explode("\n", $result->getData()); array_unshift($data, ''); // make the line numbers work as array indices $output = array($path => array()); foreach ($messages as $message) { $output[$path][] = array('code' => $message->getCode(), 'name' => $message->getName(), 'severity' => $message->getSeverity(), 'line' => $message->getLine(), 'char' => $message->getChar(), 'context' => implode("\n", array_slice($data, $message->getLine() - self::LINES_OF_CONTEXT, self::LINES_OF_CONTEXT * 2 + 1)), 'description' => $message->getDescription()); } return json_encode($output) . "\n"; }
public function renderLintResult(ArcanistLintResult $result) { $messages = $result->getMessages(); $path = $result->getPath(); $text = array(); foreach ($messages as $message) { $name = $message->getName(); $severity = ArcanistLintSeverity::getStringForSeverity($message->getSeverity()); $line = $message->getLine(); $text[] = "{$path}:{$line}:{$severity}: {$name}\n"; } return implode('', $text); }
public function renderLintResult(ArcanistLintResult $result) { $lines = array(); $messages = $result->getMessages(); $path = $result->getPath(); foreach ($messages as $message) { $severity = ArcanistLintSeverity::getStringForSeverity($message->getSeverity()); $line = $message->getLine(); $code = $message->getCode(); $description = $message->getDescription(); $lines[] = sprintf("%s:%d:%s (%s) %s\n", $path, $line, $severity, $code, $description); } return implode('', $lines); }
public function renderLintResult(ArcanistLintResult $result) { $messages = $result->getMessages(); $path = $result->getPath(); $data = explode("\n", $result->getData()); array_unshift($data, ''); // make the line numbers work as array indices $output = array($path => array()); foreach ($messages as $message) { $dictionary = $message->toDictionary(); $dictionary['context'] = implode("\n", array_slice($data, max(1, $message->getLine() - self::LINES_OF_CONTEXT), self::LINES_OF_CONTEXT * 2 + 1)); unset($dictionary['path']); $output[$path][] = $dictionary; } return json_encode($output) . "\n"; }
public function renderLintResult(ArcanistLintResult $result) { $this->writer->startElement('file'); $this->writer->writeAttribute('name', $result->getPath()); foreach ($result->getMessages() as $message) { $this->writer->startElement('error'); $this->writer->writeAttribute('line', $message->getLine()); $this->writer->writeAttribute('column', $message->getChar()); $this->writer->writeAttribute('severity', $this->getStringForSeverity($message->getSeverity())); $this->writer->writeAttribute('message', $message->getDescription()); $this->writer->writeAttribute('source', $message->getCode()); $this->writer->endElement(); } $this->writer->endElement(); return $this->writer->flush(); }
public function renderLintResult(ArcanistLintResult $result) { $messages = $result->getMessages(); $path = $result->getPath(); $lines = explode("\n", $result->getData()); $text = array(); foreach ($messages as $message) { if (!$this->showAutofixPatches && $message->isAutofix()) { continue; } if ($message->isError()) { $color = 'red'; } else { $color = 'yellow'; } $severity = ArcanistLintSeverity::getStringForSeverity($message->getSeverity()); $code = $message->getCode(); $name = $message->getName(); $description = $message->getDescription(); if ($message->getOtherLocations()) { $locations = array(); foreach ($message->getOtherLocations() as $location) { $locations[] = idx($location, 'path', $path) . (!empty($location['line']) ? ":{$location['line']}" : ''); } $description .= "\n" . pht('Other locations: %s', implode(', ', $locations)); } $text[] = phutil_console_format(" **<bg:{$color}> %s </bg>** (%s) __%s__\n%s\n", $severity, $code, $name, phutil_console_wrap($description, 4)); if ($message->hasFileContext()) { $text[] = $this->renderContext($message, $lines); } } if ($text) { $prefix = phutil_console_format("**>>>** %s\n\n\n", pht('Lint for %s:', phutil_console_format('__%s__', $path))); return $prefix . implode("\n", $text); } else { return null; } }
private function compareLint($file, $expect, ArcanistLintResult $result) { $seen = array(); $raised = array(); $message_map = array(); foreach ($result->getMessages() as $message) { $sev = $message->getSeverity(); $line = $message->getLine(); $char = $message->getChar(); $code = $message->getCode(); $name = $message->getName(); $message_key = $sev . ':' . $line . ':' . $char; $message_map[$message_key] = $message; $seen[] = $message_key; $raised[] = sprintf(' %s: %s %s', pht('%s at line %d, char %d', $sev, $line, $char), $code, $name); } $expect = trim($expect); if ($expect) { $expect = explode("\n", $expect); } else { $expect = array(); } foreach ($expect as $key => $expected) { $expect[$key] = head(explode(' ', $expected)); } $expect = array_fill_keys($expect, true); $seen = array_fill_keys($seen, true); if (!$raised) { $raised = array(pht('No messages.')); } $raised = sprintf("%s:\n%s", pht('Actually raised'), implode("\n", $raised)); foreach (array_diff_key($expect, $seen) as $missing => $ignored) { $missing = explode(':', $missing); $sev = array_shift($missing); $pos = $missing; $this->assertFailure(pht("In '%s', expected lint to raise %s on line %d at char %d, " . "but no %s was raised. %s", $file, $sev, idx($pos, 0), idx($pos, 1), $sev, $raised)); } foreach (array_diff_key($seen, $expect) as $surprising => $ignored) { $message = $message_map[$surprising]; $message_info = $message->getDescription(); list($sev, $line, $char) = explode(':', $surprising); $this->assertFailure(sprintf("%s:\n\n%s\n\n%s", pht("In '%s', lint raised %s on line %d at char %d, " . "but nothing was expected", $file, $sev, $line, $char), $message_info, $raised)); } }
private function compareLint($file, $expect, ArcanistLintResult $result) { $seen = array(); $raised = array(); $message_map = array(); foreach ($result->getMessages() as $message) { $sev = $message->getSeverity(); $line = $message->getLine(); $char = $message->getChar(); $code = $message->getCode(); $name = $message->getName(); $message_key = $sev . ':' . $line . ':' . $char; $message_map[$message_key] = $message; $seen[] = $message_key; $raised[] = " {$sev} at line {$line}, char {$char}: {$code} {$name}"; } $expect = trim($expect); if ($expect) { $expect = explode("\n", $expect); } else { $expect = array(); } foreach ($expect as $key => $expected) { $expect[$key] = head(explode(' ', $expected)); } $expect = array_fill_keys($expect, true); $seen = array_fill_keys($seen, true); if (!$raised) { $raised = array('No messages.'); } $raised = "Actually raised:\n" . implode("\n", $raised); foreach (array_diff_key($expect, $seen) as $missing => $ignored) { list($sev, $line, $char) = explode(':', $missing); $this->assertFailure("In '{$file}', " . "expected lint to raise {$sev} on line {$line} at char {$char}, " . "but no {$sev} was raised. {$raised}"); } foreach (array_diff_key($seen, $expect) as $surprising => $ignored) { $message = $message_map[$surprising]; $message_info = $message->getDescription(); list($sev, $line, $char) = explode(':', $surprising); $this->assertFailure("In '{$file}', " . "lint raised {$sev} on line {$line} at char {$char}, " . "but nothing was expected:\n\n{$message_info}\n\n{$raised}"); } }