UNPKG

@diullei/codeguardian

Version:

Open-source developer tool to validate and enforce architectural rules, especially for AI-generated code

43 lines 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectFileChangesRule = void 0; const core_1 = require("../core"); class SelectFileChangesRule extends core_1.SelectorRule { minPercentage; maxPercentage; constructor(id, minPercentage, maxPercentage) { super(id); this.minPercentage = minPercentage; this.maxPercentage = maxPercentage; } async select(context) { const allFiles = await context.repository.getFiles(context.diff, context.mode); const relevantFiles = allFiles.filter(file => file.status === 'modified' || file.status === 'added'); const selectedFiles = []; for (const file of relevantFiles) { let totalLines = 0; try { const content = await context.repository.getFileContent(file.path); totalLines = content.split('\n').length; } catch (error) { continue; } let changePercentage = 0; if (totalLines > 0) { changePercentage = ((file.insertions + file.deletions) / totalLines) * 100; } else if (file.insertions > 0 || file.deletions > 0) { changePercentage = 100; } const meetsMinCriteria = this.minPercentage === undefined || changePercentage >= this.minPercentage; const meetsMaxCriteria = this.maxPercentage === undefined || changePercentage <= this.maxPercentage; if (meetsMinCriteria && meetsMaxCriteria) { selectedFiles.push(file); } } return selectedFiles; } } exports.SelectFileChangesRule = SelectFileChangesRule; //# sourceMappingURL=SelectFileChangesRule.js.map