jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C languages
64 lines (54 loc) • 1.72 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var Report, fs, logger, path;
fs = require('fs');
logger = require('winston');
path = require('path');
Report = (function() {
function Report(options) {
var cwd, ext, isAbsolute, reporter;
this.options = options;
reporter = this.options.reporter;
if (this.options.output) {
ext = this.options.output.split('.').pop();
}
if (ext === 'xml' && reporter === 'json' || ext === 'json' && reporter === 'xml') {
logger.warn("output file extention '" + this.options.output + "' does not match reporter '" + reporter + "'");
}
switch (reporter) {
case 'xml':
reporter = './reporters/xml-pmd';
break;
case 'json':
reporter = './reporters/json';
break;
default:
cwd = process.cwd();
reporter = path.normalize(reporter);
isAbsolute = reporter.indexOf(cwd) === 0;
if (!isAbsolute) {
reporter = path.join(cwd, reporter);
}
}
this.reporter = require(reporter);
this.stdReporter = require('./reporters/_std-log');
}
Report.prototype.generate = function(map) {
var dump, log, raw, ref;
this.map = map;
ref = this.reporter(this.options), raw = ref[0], dump = ref[1], log = ref[2];
if (!log) {
log = this.stdReporter();
}
logger.info(log);
if (this.options.output) {
fs.writeFileSync(this.options.output, dump || raw);
} else {
logger.warn('output file is not provided');
}
return raw || dump;
};
return Report;
})();
exports.Report = Report;
}).call(this);