2 * @fileoverview CheckStyle XML reporter
3 * @author Ian Christian Myers
7 const xmlEscape = require("../xml-escape");
9 //------------------------------------------------------------------------------
11 //------------------------------------------------------------------------------
14 * Returns the severity of warning or error
15 * @param {Object} message message object to examine
16 * @returns {string} severity level
19 function getMessageType(message) {
20 if (message.fatal || message.severity === 2) {
27 //------------------------------------------------------------------------------
29 //------------------------------------------------------------------------------
31 module.exports = function(results) {
35 output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
36 output += "<checkstyle version=\"4.3\">";
38 results.forEach(result => {
39 const messages = result.messages;
41 output += `<file name="${xmlEscape(result.filePath)}">`;
43 messages.forEach(message => {
45 `<error line="${xmlEscape(message.line)}"`,
46 `column="${xmlEscape(message.column)}"`,
47 `severity="${xmlEscape(getMessageType(message))}"`,
48 `message="${xmlEscape(message.message)}${message.ruleId ? ` (${message.ruleId})` : ""}"`,
49 `source="${message.ruleId ? xmlEscape(`eslint.rules.${message.ruleId}`) : ""}" />`
57 output += "</checkstyle>";