UNPKG

code-complexity

Version:

Measure the churn/complexity score. Higher values mean hotspots where refactorings should happen.

42 lines (41 loc) 1.24 kB
"use strict"; 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;