1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 14:52:40 +01:00

Use the raw formatter for coffeelint

Summary: Using `--reporter=raw` exposes raw JSON output rather than a limited XML output. This allows us to pull more context from the `coffeelint` output.

Test Plan: `arc unit`

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Differential Revision: https://secure.phabricator.com/D11320
This commit is contained in:
Joshua Spence 2015-01-12 07:22:42 +11:00
parent 23bc9f294c
commit b780ef0868

View file

@ -57,7 +57,7 @@ final class ArcanistCoffeeLintLinter extends ArcanistExternalLinter {
protected function getMandatoryFlags() {
$options = array(
'--reporter=checkstyle',
'--reporter=raw',
);
if ($this->config) {
@ -89,32 +89,29 @@ final class ArcanistCoffeeLintLinter extends ArcanistExternalLinter {
}
protected function parseLinterOutput($path, $err, $stdout, $stderr) {
$report_dom = new DOMDocument();
$ok = @$report_dom->loadXML($stdout);
$messages = array();
$output = phutil_json_decode($stdout);
if (!$ok) {
// We are only linting a single file.
if (count($output) != 1) {
return false;
}
$files = $report_dom->getElementsByTagName('file');
$messages = array();
foreach ($files as $file) {
foreach ($file->getElementsByTagName('error') as $error) {
foreach ($output as $reports) {
foreach ($reports as $report) {
// Column number is not provided in the output.
// See https://github.com/clutchski/coffeelint/issues/87
$message = id(new ArcanistLintMessage())
->setPath($path)
->setLine($error->getAttribute('line'))
->setLine($report['lineNumber'])
->setCode($this->getLinterName())
->setDescription(preg_replace(
'/; context: .*$/',
'.',
$error->getAttribute('message')));
->setName(ucwords(str_replace('_', ' ', $report['name'])))
->setDescription($report['message'])
->setOriginalText(idx($report, 'line'));
switch ($error->getAttribute('severity')) {
case 'warning':
switch ($report['level']) {
case 'warn':
$message->setSeverity(ArcanistLintSeverity::SEVERITY_WARNING);
break;
@ -131,6 +128,10 @@ final class ArcanistCoffeeLintLinter extends ArcanistExternalLinter {
}
}
if ($err && !$messages) {
return false;
}
return $messages;
}