UNPKG

debt-collector

Version:

a nodejs tool to identify, track and mesure technical debt

65 lines (64 loc) 2.1 kB
import fs from 'fs'; import { getRulesForFile } from '../filters/filterRules.js'; import getfileRulesErrors from './getFileRulesErrors.js'; import { truncateString, getConfigRuleById } from '../utils/index.js'; const updateResults = (config, brokenRules, fileResults) => { const updatedFileResults = { ...fileResults, }; if (brokenRules.length > 0) { brokenRules.forEach(({ ruleId, occurences }) => { if (ruleId === undefined || occurences === undefined) return; const rule = getConfigRuleById(config, ruleId); const ruleTotalSore = (rule?.debtScore ?? 0) * occurences; updatedFileResults.brokenRules.push({ ruleTitle: rule?.title ?? '', ruleId, occurences, ruleTotalSore, }); updatedFileResults.totalScore += ruleTotalSore; }); } return updatedFileResults; }; const runFileChecks = async (config, filePath) => { let fileResults = { filePath, fileShortPath: truncateString(filePath, 80), brokenRules: [], totalScore: 0, }; if (config.fileRules?.length === 0) { return fileResults; } let data = ''; try { data = fs.readFileSync(filePath).toString(); } catch (error) { // console.error(`error while reading file ${filePath} \n ${error.message}`) data = ''; } if (!!config.fileRules?.length) { if (data) { const brokenRules = getfileRulesErrors(config, filePath, data); fileResults = updateResults(config, brokenRules, fileResults); } else { fileResults = updateResults(config, [], fileResults); } } return fileResults; }; const getFileResult = async (config, file, incrementCounter) => { const rulesForFile = getRulesForFile(config, file); const fileResult = await runFileChecks({ ...config, ...rulesForFile, }, file); incrementCounter(); return fileResult; }; export default getFileResult;