UNPKG

1.76 kBJavaScriptView Raw
1/**
2 * @fileoverview CheckStyle XML reporter
3 * @author Ian Christian Myers
4 */
5"use strict";
6
7const xmlEscape = require("../util/xml-escape");
8
9//------------------------------------------------------------------------------
10// Helper Functions
11//------------------------------------------------------------------------------
12
13/**
14 * Returns the severity of warning or error
15 * @param {Object} message message object to examine
16 * @returns {string} severity level
17 * @private
18 */
19function getMessageType(message) {
20 if (message.fatal || message.severity === 2) {
21 return "error";
22 } else {
23 return "warning";
24 }
25}
26
27//------------------------------------------------------------------------------
28// Public Interface
29//------------------------------------------------------------------------------
30
31module.exports = function(results) {
32
33 let output = "";
34
35 output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
36 output += "<checkstyle version=\"4.3\">";
37
38 results.forEach(function(result) {
39 const messages = result.messages;
40
41 output += "<file name=\"" + xmlEscape(result.filePath) + "\">";
42
43 messages.forEach(function(message) {
44 output += "<error line=\"" + xmlEscape(message.line) + "\" " +
45 "column=\"" + xmlEscape(message.column) + "\" " +
46 "severity=\"" + xmlEscape(getMessageType(message)) + "\" " +
47 "message=\"" + xmlEscape(message.message) +
48 (message.ruleId ? " (" + message.ruleId + ")" : "") + "\" " +
49 "source=\"" + (message.ruleId ? xmlEscape("eslint.rules." + message.ruleId) : "") + "\" />";
50 });
51
52 output += "</file>";
53
54 });
55
56 output += "</checkstyle>";
57
58 return output;
59};