jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C, Puppet, Twig languages
58 lines • 4.68 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = require("fs");
var fs_extra_1 = require("fs-extra");
var utils_1 = require("../utils");
var options_1 = require("../utils/options");
var JsonReporter = /** @class */ (function () {
function JsonReporter(options) {
this.options = options;
this.json = {
duplicates: [],
statistics: {}
};
}
JsonReporter.prototype.attach = function () { };
JsonReporter.prototype.report = function (clones, statistic) {
var _this = this;
if (statistic) {
this.json.statistics = statistic;
}
clones.forEach(function (clone) {
_this.cloneFound(clone);
});
fs_extra_1.ensureDirSync(options_1.getOption('output', this.options));
fs_1.writeFileSync(options_1.getOption('output', this.options) + '/jscpd-report.json', JSON.stringify(this.json, null, '\t'));
};
JsonReporter.prototype.cloneFound = function (clone) {
var startLineA = clone.duplicationA.start.line;
var endLineA = clone.duplicationA.end.line;
var startLineB = clone.duplicationB.start.line;
var endLineB = clone.duplicationB.end.line;
this.json.duplicates.push({
format: clone.format,
lines: endLineA - startLineA + 1,
fragment: clone.duplicationA.fragment,
tokens: 0,
firstFile: {
name: utils_1.getPath(this.options, clone.duplicationA.sourceId),
start: startLineA,
end: endLineA,
startLoc: clone.duplicationA.start,
endLoc: clone.duplicationA.end,
blame: clone.duplicationA.blame
},
secondFile: {
name: utils_1.getPath(this.options, clone.duplicationB.sourceId),
start: startLineB,
end: endLineB,
startLoc: clone.duplicationB.start,
endLoc: clone.duplicationB.end,
blame: clone.duplicationB.blame
}
});
};
return JsonReporter;
}());
exports.JsonReporter = JsonReporter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXBvcnRlcnMvanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUFtQztBQUNuQyxxQ0FBeUM7QUFLekMsa0NBQW1DO0FBQ25DLDRDQUE2QztBQThCN0M7SUFNRSxzQkFBb0IsT0FBaUI7UUFBakIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUw3QixTQUFJLEdBQWdCO1lBQzFCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsVUFBVSxFQUFFLEVBQWdCO1NBQzdCLENBQUM7SUFFc0MsQ0FBQztJQUVsQyw2QkFBTSxHQUFiLGNBQXVCLENBQUM7SUFFakIsNkJBQU0sR0FBYixVQUFjLE1BQWdCLEVBQUUsU0FBcUI7UUFBckQsaUJBV0M7UUFWQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUNsQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQyxLQUFhO1lBQzNCLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCx3QkFBYSxDQUFDLG1CQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pELGtCQUFhLENBQUMsbUJBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLG9CQUFvQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRU8saUNBQVUsR0FBbEIsVUFBbUIsS0FBYTtRQUM5QixJQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDakQsSUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQzdDLElBQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNqRCxJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixLQUFLLEVBQUUsUUFBUSxHQUFHLFVBQVUsR0FBRyxDQUFDO1lBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQWtCO1lBQy9DLE1BQU0sRUFBRSxDQUFDO1lBQ1QsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxlQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLEdBQUcsRUFBRSxRQUFRO2dCQUNiLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQ2xDLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUc7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUs7YUFDaEM7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLGVBQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUN4RCxLQUFLLEVBQUUsVUFBVTtnQkFDakIsR0FBRyxFQUFFLFFBQVE7Z0JBQ2IsUUFBUSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSztnQkFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRztnQkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSzthQUNoQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDSCxtQkFBQztBQUFELENBQUMsQUFwREQsSUFvREM7QUFwRFksb0NBQVkifQ==