UNPKG

debt-collector

Version:

a nodejs tool to identify, track and mesure technical debt

121 lines (101 loc) 2.79 kB
const createTable = (data) => ` |File|Prev|Current|Trend| |--|--|--|--| ${data .map((file) => `|${file.file}|${file.rev}|${file.current}|${file.trend}|`) .join('\n')} `; const createFileTable = (fileResult) => ` <br/> <br/> <b>${fileResult?.fileShortPath ?? fileResult?.filePath ?? 'unknown path'}</b><br/> <br/> |Broken rule|score| |--|--| ${fileResult.brokenRules .map((rule) => `|🚫 ${rule.ruleTitle}|${rule.ruleTotalSore}|`) .join('\n')} `; const getFileScoreComparaison = (data) => { let result = ''; if (data.noChangesFiles.length > 0) { result += ` ### 💤 Files with same debt : ${createTable(data.noChangesFiles)} `; } if (data.lessDeptFiles.length > 0) { result += ` ### ✅ Files with less debt : ${createTable(data.lessDeptFiles)} `; } if (data.moreDeptFiles.length > 0) { result += ` ### ❌ Files with more debt : ${createTable(data.moreDeptFiles)} `; } return result; }; const getConclusions = (solde) => { if (solde > 0) { return `### ❌ Debt score for modified files increased by ${solde} [^1]`; } if (solde < 0) { return `### ✅ Debt score for modified files decreased by ${solde} [^1]`; } return '### 💤 Debt score for modified files did not change [^1]'; }; const getMotivationSpeatch = (solde) => { if (solde > 0) { return `Maybe try something else 😭`; } if (solde < 0) { return `You did great ! 🎉`; } return 'Neither good or bad, I guess 🤷🏽'; }; const compareMarkDownReport = (data) => { const solde = data.currentRevResult.totalScore - data.previousRevResult.totalScore; return data.previousRevResult.totalScore === 0 && data.currentRevResult.totalScore === 0 ? ` ## Debt collector report All changed files have a debt score of 0. Nothing to do here, we're all good ! 🎉 ` : ` ## Debt collector report ${getConclusions(solde)} ${getMotivationSpeatch(solde)} |Previous debt|Current debt|trend| |--|--|--| |${data.previousRevResult.totalScore.toString()}|${data.currentRevResult.totalScore.toString()}|${solde.toString()}| <details> <summary> <h3>Modified files • see scores before and after</h3> </summary> <div> ${getFileScoreComparaison(data)} <br/> <br/> </div> </details> <details> <summary> <h3>Help us improve code quality! Here are some ideas for you</h3> </summary> <div> ${data.currentRevResult.results ?.filter((rule) => rule.totalScore !== 0) .map((rule) => createFileTable(rule)) .join('\n')} <br/> <br/> </div> </details> [^1]: Scores based on modified files only <br/>The report may not be accurate if your branch is not up to date with the base branch. `; }; export default compareMarkDownReport;