Page MenuHomePhabricator

D20989.id50010.diff
No OneTemporary

D20989.id50010.diff

diff --git a/src/lint/renderer/ArcanistCheckstyleXMLLintRenderer.php b/src/lint/renderer/ArcanistCheckstyleXMLLintRenderer.php
--- a/src/lint/renderer/ArcanistCheckstyleXMLLintRenderer.php
+++ b/src/lint/renderer/ArcanistCheckstyleXMLLintRenderer.php
@@ -6,45 +6,69 @@
private $writer;
- public function __construct() {
- $this->writer = new XMLWriter();
- $this->writer->openMemory();
- $this->writer->setIndent(true);
- $this->writer->setIndentString(' ');
+ private function getWriter() {
+ if (!$this->writer) {
+ $xml_extension = 'XMLWriter';
+
+ if (!extension_loaded($xml_extension)) {
+ throw new Exception(
+ pht(
+ 'Lint can not be output into "%s" format because the PHP "%s" '.
+ 'extension is not installed. Install the extension or choose a '.
+ 'different output format.',
+ self::RENDERERKEY,
+ $xml_extension));
+ }
+
+ $writer = new XMLWriter();
+ $writer->openMemory();
+ $writer->setIndent(true);
+ $writer->setIndentString(' ');
+
+ $this->writer = $writer;
+ }
+
+ return $this->writer;
}
public function willRenderResults() {
- $this->writer->startDocument('1.0', 'UTF-8');
- $this->writer->startElement('checkstyle');
- $this->writer->writeAttribute('version', '4.3');
- $this->writeOut($this->writer->flush());
+ $writer = $this->getWriter();
+
+ $writer->startDocument('1.0', 'UTF-8');
+ $writer->startElement('checkstyle');
+ $writer->writeAttribute('version', '4.3');
+ $this->writeOut($writer->flush());
}
public function renderLintResult(ArcanistLintResult $result) {
- $this->writer->startElement('file');
- $this->writer->writeAttribute('name', $result->getPath());
+ $writer = $this->getWriter();
+
+ $writer->startElement('file');
+ $writer->writeAttribute('name', $result->getPath());
foreach ($result->getMessages() as $message) {
- $this->writer->startElement('error');
+ $writer->startElement('error');
- $this->writer->writeAttribute('line', $message->getLine());
- $this->writer->writeAttribute('column', $message->getChar());
- $this->writer->writeAttribute('severity',
+ $writer->writeAttribute('line', $message->getLine());
+ $writer->writeAttribute('column', $message->getChar());
+ $writer->writeAttribute('severity',
$this->getStringForSeverity($message->getSeverity()));
- $this->writer->writeAttribute('message', $message->getDescription());
- $this->writer->writeAttribute('source', $message->getCode());
+ $writer->writeAttribute('message', $message->getDescription());
+ $writer->writeAttribute('source', $message->getCode());
- $this->writer->endElement();
+ $writer->endElement();
}
- $this->writer->endElement();
- $this->writeOut($this->writer->flush());
+ $writer->endElement();
+ $this->writeOut($writer->flush());
}
public function didRenderResults() {
- $this->writer->endElement();
- $this->writer->endDocument();
- $this->writeOut($this->writer->flush());
+ $writer = $this->getWriter();
+
+ $writer->endElement();
+ $writer->endDocument();
+ $this->writeOut($writer->flush());
}
private function getStringForSeverity($severity) {

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 1, 8:47 AM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7455181
Default Alt Text
D20989.id50010.diff (3 KB)

Event Timeline