// output eslint results in TSV format module.exports = function ( results = [] ) { const sep = "\t" , severity = [ '', 'warning', 'error' ] , path = require( 'path' ) , eslint = require( 'eslint' ) , cwd = process.cwd() , header = function () { console.log( [ 'file', 'line', 'column', 'severity', 'fixable', 'code', 'description' ].join( sep ) ); } , lintfree = function () { console.log( 'All files lint free!' ); } , fixable = {} , linter = new eslint.Linter() ; let found = false , rules = linter.getRules() ; rules.forEach( ( val, key ) => { if ( val.meta.fixable ) { fixable[key] = true; } }); results.forEach( r => { if ( r.messages.length > 0 ) { if ( !found ) { header(); found = true; } const file = path.relative( cwd, r.filePath ); r.messages.forEach( m => { console.log( [ file , m.line , m.column , severity[ m.severity ] , m.ruleId && fixable.hasOwnProperty(m.ruleId) ? 'true' : 'false' , ( m.ruleId ? m.ruleId : m.message.indexOf('Parsing error') !== -1 ? 'parse-error' : '-' ) , m.message ].join( sep ) ); }); } }); if ( !found ) { lintfree(); } };