42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @fileoverview JSLint XML reporter
 | |
|  * @author Ian Christian Myers
 | |
|  */
 | |
| "use strict";
 | |
| 
 | |
| const xmlEscape = require("../xml-escape");
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Public Interface
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| module.exports = function(results) {
 | |
| 
 | |
|     let output = "";
 | |
| 
 | |
|     output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
 | |
|     output += "<jslint>";
 | |
| 
 | |
|     results.forEach(result => {
 | |
|         const messages = result.messages;
 | |
| 
 | |
|         output += `<file name="${result.filePath}">`;
 | |
| 
 | |
|         messages.forEach(message => {
 | |
|             output += [
 | |
|                 `<issue line="${message.line}"`,
 | |
|                 `char="${message.column}"`,
 | |
|                 `evidence="${xmlEscape(message.source || "")}"`,
 | |
|                 `reason="${xmlEscape(message.message || "")}${message.ruleId ? ` (${message.ruleId})` : ""}" />`
 | |
|             ].join(" ");
 | |
|         });
 | |
| 
 | |
|         output += "</file>";
 | |
| 
 | |
|     });
 | |
| 
 | |
|     output += "</jslint>";
 | |
| 
 | |
|     return output;
 | |
| };
 |