code-complexity
Version:
Measure the churn/complexity score. Higher values mean hotspots where refactorings should happen.
42 lines (41 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const NodePath = require("node:path");
class Statistic {
path;
churn;
complexity;
score;
directories;
static build(path, churn, complexity) {
return new Statistic(path, churn, complexity);
}
constructor(path, churn, complexity) {
this.path = path;
this.churn = churn;
this.complexity = complexity;
this.directories = this.findDirectoriesForFile(path);
this.score = this.churn * this.complexity;
}
findDirectoriesForFile(path) {
const directories = [];
const pathChunks = NodePath.parse(path).dir.split(NodePath.sep);
pathChunks.forEach((chunk) => {
const parentDir = directories.slice(-1);
const directory = parentDir.length
? parentDir + NodePath.sep + chunk
: chunk;
directories.push(directory);
});
return directories.filter((d) => d.length > 0);
}
toState() {
return {
path: this.path,
churn: this.churn,
complexity: this.complexity,
score: this.score,
};
}
}
exports.default = Statistic;