1/** 2 * @fileoverview JSLint XML reporter 3 * @author Ian Christian Myers 4 */ 5"use strict"; 6 7const xmlEscape = require("../xml-escape"); 8 9//------------------------------------------------------------------------------ 10// Public Interface 11//------------------------------------------------------------------------------ 12 13module.exports = function(results) { 14 15 let output = ""; 16 17 output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 18 output += "<jslint>"; 19 20 results.forEach(result => { 21 const messages = result.messages; 22 23 output += `<file name="${result.filePath}">`; 24 25 messages.forEach(message => { 26 output += [ 27 `<issue line="${message.line}"`, 28 `char="${message.column}"`, 29 `evidence="${xmlEscape(message.source || "")}"`, 30 `reason="${xmlEscape(message.message || "")}${message.ruleId ? ` (${message.ruleId})` : ""}" />` 31 ].join(" "); 32 }); 33 34 output += "</file>"; 35 36 }); 37 38 output += "</jslint>"; 39 40 return output; 41}; 42