gulp-jshint-xml-file-reporter
Version:
A JSHint reporter to be used with gulp-jshint that will provide XML (i.e. checkstyle and junit), that can be used by CI tools such as jenkins
64 lines (56 loc) • 1.87 kB
JavaScript
;
function escapeAttrValue(attrValue) {
return (attrValue || '')
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/</g, '<')
.replace(/>/g, '>');
}
exports.getHeader = function () {
var out = [];
out.push('<?xml version="1.0" encoding="utf-8"?>');
out.push('<checkstyle version="4.3">');
return out.join('\n');
};
exports.getFooter = function () {
return '\n</checkstyle>\n';
};
exports.formatContent = function (results) {
var out = [],
files = {},
issue, verbose = false,
fileName, i;
results.forEach(function (result) {
result.file = result.file.replace(process.cwd() + '/', '');
if (!files[result.file]) {
files[result.file] = [];
}
files[result.file].push({
severity: 'error',
line: result.error.line,
column: result.error.character,
message: result.error.reason + ((verbose) ?
' (' + result.error.code + ')' : ''),
source: 'jshint.' + result.error.code
});
});
for (fileName in files) {
if (files.hasOwnProperty(fileName)) {
out.push('\n\t<file name="' + fileName + '">');
for (i = 0; i < files[fileName].length; i++) {
issue = files[fileName][i];
out.push(
'\t\t<error ' +
'line="' + issue.line + '" ' +
'column="' + issue.column + '" ' +
'severity="' + issue.severity + '" ' +
'message="' + escapeAttrValue(issue.message) + '" ' +
'source="' + escapeAttrValue(issue.source) + '" ' +
'/>'
);
}
out.push('\t</file>');
}
}
return out.join('\n');
};