jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C languages
92 lines (74 loc) • 2.93 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var Detector, Promise, Report, Strategy, debugPreprocessor, filesPreprocessor, jscpd, logger, optionsPreprocessor;
logger = require('winston');
Detector = require('./detector').Detector;
Strategy = require('./strategy').Strategy;
Report = require('./report').Report;
optionsPreprocessor = require('./preprocessors/options');
filesPreprocessor = require('./preprocessors/files');
debugPreprocessor = require('./preprocessors/debug');
Promise = require("bluebird");
jscpd = (function() {
function jscpd() {}
jscpd.prototype.preProcessors = [optionsPreprocessor, filesPreprocessor, debugPreprocessor];
jscpd.prototype.LANGUAGES = [];
jscpd.prototype.execPreProcessors = function(list) {
var i, len, preProcessor;
logger.profile('Preprocessors running time:');
for (i = 0, len = list.length; i < len; i++) {
preProcessor = list[i];
preProcessor(this);
}
return logger.profile('Preprocessors running time:');
};
jscpd.prototype.run = function(options) {
var clone, codeMap, detector, generateReport, report, strategy;
this.options = options;
this.execPreProcessors(this.preProcessors);
if (!this.options.debug) {
logger.profile('Scanning for duplicates time:');
if (this.options.selectedFiles.length) {
logger.info("Scanning " + this.options.selectedFiles.length + " files for duplicates...");
}
strategy = new Strategy(this.options);
detector = new Detector(strategy);
report = new Report(this.options);
codeMap = detector.start(this.options.selectedFiles, this.options['min-lines'], this.options['min-tokens']);
logger.profile('Scanning for duplicates time:');
logger.info('Scanning... done!\n');
logger.profile('Generate report time:');
logger.info('Start report generation...\n');
generateReport = (function(_this) {
return function() {
var reportResult;
reportResult = report.generate(codeMap);
logger.profile('Generate report time:');
_this.report = reportResult;
_this.map = codeMap;
return {
report: _this.report,
map: _this.map
};
};
})(this);
if (this.options.blame) {
return Promise.all((function() {
var i, len, ref, results;
ref = codeMap.clones;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
clone = ref[i];
results.push(clone.blame());
}
return results;
})()).then(generateReport).error(generateReport);
} else {
return generateReport();
}
}
};
return jscpd;
})();
module.exports = jscpd;
}).call(this);