• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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