mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Ship lint warnings to Differential.
Summary: Send skipped lint warnings to Differential. This also fixes a nasty bug with lint excluding too many warnings based on line changes. Test Plan: meta Reviewers: CC: Differential Revision: 200387
This commit is contained in:
parent
964630facc
commit
bb7e649fa5
4 changed files with 40 additions and 4 deletions
|
@ -135,7 +135,7 @@ abstract class ArcanistLintEngine {
|
||||||
// When a user runs "arc diff", we default to raising only warnings on
|
// When a user runs "arc diff", we default to raising only warnings on
|
||||||
// lines they have changed (errors are still raised anywhere in the
|
// lines they have changed (errors are still raised anywhere in the
|
||||||
// file).
|
// file).
|
||||||
$changed = $this->getPathChangedLines($path);
|
$changed = $this->getPathChangedLines($message->getPath());
|
||||||
if ($changed !== null && !$message->isError()) {
|
if ($changed !== null && !$message->isError()) {
|
||||||
if (empty($changed[$message->getLine()])) {
|
if (empty($changed[$message->getLine()])) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -449,7 +449,6 @@ class ArcanistBaseWorkflow {
|
||||||
|
|
||||||
$change = $this->getChange($path);
|
$change = $this->getChange($path);
|
||||||
$lines = $change->getChangedLines($mode);
|
$lines = $change->getChangedLines($mode);
|
||||||
|
|
||||||
return array_keys($lines);
|
return array_keys($lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
class ArcanistDiffWorkflow extends ArcanistBaseWorkflow {
|
class ArcanistDiffWorkflow extends ArcanistBaseWorkflow {
|
||||||
|
|
||||||
private $hasWarnedExternals = false;
|
private $hasWarnedExternals = false;
|
||||||
|
private $unresolvedLint;
|
||||||
|
private $unresolvedUnit;
|
||||||
|
|
||||||
public function getCommandHelp() {
|
public function getCommandHelp() {
|
||||||
return phutil_console_format(<<<EOTEXT
|
return phutil_console_format(<<<EOTEXT
|
||||||
|
@ -247,6 +249,28 @@ EOTEXT
|
||||||
'differential.creatediff',
|
'differential.creatediff',
|
||||||
$diff);
|
$diff);
|
||||||
|
|
||||||
|
if ($this->unresolvedLint) {
|
||||||
|
$data = array();
|
||||||
|
foreach ($this->unresolvedLint as $message) {
|
||||||
|
$data[] = array(
|
||||||
|
'path' => $message->getPath(),
|
||||||
|
'line' => $message->getLine(),
|
||||||
|
'char' => $message->getChar(),
|
||||||
|
'code' => $message->getCode(),
|
||||||
|
'severity' => $message->getSeverity(),
|
||||||
|
'name' => $message->getName(),
|
||||||
|
'description' => $message->getDescription(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$conduit->callMethodSynchronous(
|
||||||
|
'differential.setdiffproperty',
|
||||||
|
array(
|
||||||
|
'diff_id' => $diff_info['diffid'],
|
||||||
|
'name' => 'arc:lint',
|
||||||
|
'data' => json_encode($data),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->shouldOnlyCreateDiff()) {
|
if ($this->shouldOnlyCreateDiff()) {
|
||||||
echo phutil_console_format(
|
echo phutil_console_format(
|
||||||
"Created a new Differential diff:\n".
|
"Created a new Differential diff:\n".
|
||||||
|
@ -535,7 +559,7 @@ EOTEXT
|
||||||
// TODO: This is kind of silly, but 'file -ib' goes crazy on executables.
|
// TODO: This is kind of silly, but 'file -ib' goes crazy on executables.
|
||||||
$mime_type = reset(explode(',', $mime_type));
|
$mime_type = reset(explode(',', $mime_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$result['mime'] = $mime_type;
|
$result['mime'] = $mime_type;
|
||||||
|
|
||||||
|
@ -816,6 +840,7 @@ EOTEXT
|
||||||
if (!$continue) {
|
if (!$continue) {
|
||||||
throw new ArcanistUserAbortException();
|
throw new ArcanistUserAbortException();
|
||||||
}
|
}
|
||||||
|
$this->unresolvedLint = $lint_workflow->getUnresolvedMessages();
|
||||||
break;
|
break;
|
||||||
case ArcanistLintWorkflow::RESULT_ERRORS:
|
case ArcanistLintWorkflow::RESULT_ERRORS:
|
||||||
echo phutil_console_format(
|
echo phutil_console_format(
|
||||||
|
|
|
@ -23,6 +23,8 @@ class ArcanistLintWorkflow extends ArcanistBaseWorkflow {
|
||||||
const RESULT_ERRORS = 2;
|
const RESULT_ERRORS = 2;
|
||||||
const RESULT_SKIP = 3;
|
const RESULT_SKIP = 3;
|
||||||
|
|
||||||
|
private $unresolvedMessages;
|
||||||
|
|
||||||
public function getCommandHelp() {
|
public function getCommandHelp() {
|
||||||
return phutil_console_format(<<<EOTEXT
|
return phutil_console_format(<<<EOTEXT
|
||||||
**lint** [__options__] [__paths__] (svn)
|
**lint** [__options__] [__paths__] (svn)
|
||||||
|
@ -230,6 +232,7 @@ EOTEXT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$unresolved = array();
|
||||||
$result_code = self::RESULT_OKAY;
|
$result_code = self::RESULT_OKAY;
|
||||||
foreach ($results as $result) {
|
foreach ($results as $result) {
|
||||||
foreach ($result->getMessages() as $message) {
|
foreach ($result->getMessages() as $message) {
|
||||||
|
@ -238,11 +241,15 @@ EOTEXT
|
||||||
$result_code = self::RESULT_ERRORS;
|
$result_code = self::RESULT_ERRORS;
|
||||||
break;
|
break;
|
||||||
} else if ($message->isWarning()) {
|
} else if ($message->isWarning()) {
|
||||||
$result_code = self::RESULT_WARNINGS;
|
if ($result_code != self::RESULT_ERRORS) {
|
||||||
|
$result_code = self::RESULT_WARNINGS;
|
||||||
|
}
|
||||||
|
$unresolved[] = $message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$this->unresolvedMessages = $unresolved;
|
||||||
|
|
||||||
if (!$this->getParentWorkflow()) {
|
if (!$this->getParentWorkflow()) {
|
||||||
if ($result_code == self::RESULT_OKAY) {
|
if ($result_code == self::RESULT_OKAY) {
|
||||||
|
@ -253,4 +260,9 @@ EOTEXT
|
||||||
|
|
||||||
return $result_code;
|
return $result_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUnresolvedMessages() {
|
||||||
|
return $this->unresolvedMessages;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue