| /** | |
|  * @fileoverview Visual Studio compatible formatter | |
|  * @author Ronald Pijnacker | |
|  */ | |
| 
 | |
| "use strict"; | |
| 
 | |
| //------------------------------------------------------------------------------ | |
| // Helper Functions | |
| //------------------------------------------------------------------------------ | |
|  | |
| /** | |
|  * Returns the severity of warning or error | |
|  * @param {Object} message message object to examine | |
|  * @returns {string} severity level | |
|  * @private | |
|  */ | |
| function getMessageType(message) { | |
|     if (message.fatal || message.severity === 2) { | |
|         return "error"; | |
|     } | |
|     return "warning"; | |
| 
 | |
| } | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------ | |
| // Public Interface | |
| //------------------------------------------------------------------------------ | |
|  | |
| module.exports = function(results) { | |
| 
 | |
|     let output = "", | |
|         total = 0; | |
| 
 | |
|     results.forEach(result => { | |
| 
 | |
|         const messages = result.messages; | |
| 
 | |
|         total += messages.length; | |
| 
 | |
|         messages.forEach(message => { | |
| 
 | |
|             output += result.filePath; | |
|             output += `(${message.line || 0}`; | |
|             output += message.column ? `,${message.column}` : ""; | |
|             output += `): ${getMessageType(message)}`; | |
|             output += message.ruleId ? ` ${message.ruleId}` : ""; | |
|             output += ` : ${message.message}`; | |
|             output += "\n"; | |
| 
 | |
|         }); | |
| 
 | |
|     }); | |
| 
 | |
|     if (total === 0) { | |
|         output += "no problems"; | |
|     } else { | |
|         output += `\n${total} problem${total !== 1 ? "s" : ""}`; | |
|     } | |
| 
 | |
|     return output; | |
| };
 |