1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-25 16:22:42 +01:00

Output lint XML results to a file

Summary:
Ref T8332. I find it really odd that I need to run `arc lint --everything --output xml > checkstyle.xml` and feel that it would be much more intuitive to just run `arc lint --everything --output xml` and have the output written to `checkstyle.xml`.

To provide context, we are running `arc lint --everything` in a CI job and parsing the results.

Test Plan: Ran `arc lint --everything --output xml` and saw the output written to file.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Maniphest Tasks: T8332

Differential Revision: https://secure.phabricator.com/D13570
This commit is contained in:
Joshua Spence 2015-07-15 06:57:39 +10:00
parent 999eb93765
commit 407954dddd

View file

@ -97,6 +97,11 @@ EOTEXT
"With 'compiler', show lint warnings in suitable for your editor. ". "With 'compiler', show lint warnings in suitable for your editor. ".
"With 'xml', show lint warnings in the Checkstyle XML format."), "With 'xml', show lint warnings in the Checkstyle XML format."),
), ),
'outfile' => array(
'param' => 'path',
'help' => pht(
'Output the linter results to a file. Defaults to stdout.'),
),
'only-new' => array( 'only-new' => array(
'param' => 'bool', 'param' => 'bool',
'supports' => array('git', 'hg'), // TODO: svn 'supports' => array('git', 'hg'), // TODO: svn
@ -464,7 +469,19 @@ EOTEXT
} }
$all_autofix = true; $all_autofix = true;
$console->writeOut('%s', $renderer->renderPreamble()); $tmp = null;
if ($this->getArgument('outfile') !== null) {
$tmp = id(new TempFile())
->setPreserveFile(true);
}
$preamble = $renderer->renderPreamble();
if ($tmp) {
Filesystem::appendFile($tmp, $preamble);
} else {
$console->writeOut('%s', $preamble);
}
foreach ($results as $result) { foreach ($results as $result) {
$result_all_autofix = $result->isAllAutofix(); $result_all_autofix = $result->isAllAutofix();
@ -479,7 +496,11 @@ EOTEXT
$lint_result = $renderer->renderLintResult($result); $lint_result = $renderer->renderLintResult($result);
if ($lint_result) { if ($lint_result) {
$console->writeOut('%s', $lint_result); if ($tmp) {
Filesystem::appendFile($tmp, $lint_result);
} else {
$console->writeOut('%s', $lint_result);
}
} }
if ($apply_patches && $result->isPatchable()) { if ($apply_patches && $result->isPatchable()) {
@ -516,7 +537,13 @@ EOTEXT
} }
} }
$console->writeOut('%s', $renderer->renderPostamble()); $postamble = $renderer->renderPostamble();
if ($tmp) {
Filesystem::appendFile($tmp, $postamble);
Filesystem::rename($tmp, $this->getArgument('outfile'));
} else {
$console->writeOut('%s', $postamble);
}
if ($wrote_to_disk && $this->shouldAmendChanges) { if ($wrote_to_disk && $this->shouldAmendChanges) {
if ($this->shouldAmendWithoutPrompt || if ($this->shouldAmendWithoutPrompt ||