Page MenuHomePhabricator

D14436.diff
No OneTemporary

D14436.diff

diff --git a/src/lint/linter/ArcanistJscsLinter.php b/src/lint/linter/ArcanistJscsLinter.php
--- a/src/lint/linter/ArcanistJscsLinter.php
+++ b/src/lint/linter/ArcanistJscsLinter.php
@@ -104,28 +104,29 @@
$messages = array();
foreach ($report_dom->getElementsByTagName('file') as $file) {
foreach ($file->getElementsByTagName('error') as $error) {
- $message = new ArcanistLintMessage();
- $message->setPath($path);
- $message->setLine($error->getAttribute('line'));
- $message->setChar($error->getAttribute('column'));
- $message->setCode('JSCS');
- $message->setName('JSCS');
- $message->setDescription($error->getAttribute('message'));
-
switch ($error->getAttribute('severity')) {
case 'error':
- $message->setSeverity(ArcanistLintSeverity::SEVERITY_ERROR);
+ $code = 'JSCS.E';
break;
case 'warning':
- $message->setSeverity(ArcanistLintSeverity::SEVERITY_WARNING);
+ $code = 'JSCS.W';
break;
default:
- $message->setSeverity(ArcanistLintSeverity::SEVERITY_ADVICE);
+ $code = 'JSCS.A';
break;
}
+ $message = new ArcanistLintMessage();
+ $message->setPath($path);
+ $message->setLine($error->getAttribute('line'));
+ $message->setChar($error->getAttribute('column'));
+ $message->setName('JSCS');
+ $message->setDescription($error->getAttribute('message'));
+ $message->setCode($code);
+ $message->setSeverity($this->getLintMessageSeverity($code));
+
$messages[] = $message;
}
}
@@ -133,17 +134,31 @@
return $messages;
}
+ protected function getDefaultMessageSeverity($code) {
+ if (preg_match('/^JSCS\\.E/', $code)) {
+ return ArcanistLintSeverity::SEVERITY_ERROR;
+ }
+
+ if (preg_match('/^JSCS\\.W/', $code)) {
+ return ArcanistLintSeverity::SEVERITY_WARNING;
+ }
+
+ return ArcanistLintSeverity::SEVERITY_ADVICE;
+ }
+
protected function getLintCodeFromLinterConfigurationKey($code) {
+ if (!preg_match('/^JSCS\\.(E|W|A)/', $code)) {
+ throw new Exception(
+ pht(
+ "Invalid severity code '%s', should begin with 'JSCS.'.",
+ $code));
+ }
// NOTE: We can't figure out which rule generated each message, so we
- // can not customize severities.
+ // can not customize severities past error/warning/advice.
//
// See https://github.com/mdevils/node-jscs/issues/224
-
- throw new Exception(
- pht(
- "JSCS does not currently support custom severity levels, because ".
- "rules can't be identified from messages in output."));
+ return $code;
}
}
diff --git a/src/lint/linter/__tests__/jscs/curly-brace.lint-test b/src/lint/linter/__tests__/jscs/curly-brace.lint-test
--- a/src/lint/linter/__tests__/jscs/curly-brace.lint-test
+++ b/src/lint/linter/__tests__/jscs/curly-brace.lint-test
@@ -1,9 +1,14 @@
function foo() {
- if (true) return "foo"; else return "bar";
+ if ( true ) return "foo"; else return "bar";
+ var a = [
+ 1,
+ 2,
+ ];
}
~~~~~~~~~~
error:2:3
-error:2:27
+error:2:29
+error:5:7
~~~~~~~~~~
~~~~~~~~~~
{

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 15, 3:50 AM (5 h, 6 s)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7130559
Default Alt Text
D14436.diff (3 KB)

Event Timeline