feat: add dist/trace.js
This commit is contained in:
35
dist/trace.js
vendored
Normal file
35
dist/trace.js
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.evaluateTrace = evaluateTrace;
|
||||
const evidence_1 = require("./evidence");
|
||||
function evaluateTrace(requirements, cases, reviewDate) {
|
||||
const required = requirements.filter(item => item.mandatory);
|
||||
const ids = new Set(required.map(item => item.id));
|
||||
const usedCases = new Set(), duplicateCases = [], orphanCases = [];
|
||||
const links = new Map();
|
||||
for (const item of cases) {
|
||||
if (usedCases.has(item.id)) {
|
||||
duplicateCases.push(item.id);
|
||||
continue;
|
||||
}
|
||||
usedCases.add(item.id);
|
||||
for (const id of item.requirementIds) {
|
||||
if (!ids.has(id)) {
|
||||
orphanCases.push(item.id);
|
||||
continue;
|
||||
}
|
||||
links.set(id, [...(links.get(id) ?? []), item]);
|
||||
}
|
||||
}
|
||||
const gaps = [];
|
||||
for (const requirement of required) {
|
||||
const related = links.get(requirement.id) ?? [];
|
||||
if (related.length === 0)
|
||||
gaps.push({ requirementId: requirement.id, reason: '无验证用例' });
|
||||
else if (!related.some(item => (0, evidence_1.evidenceState)(item, reviewDate) === null))
|
||||
gaps.push({ requirementId: requirement.id, reason: related.map(item => (0, evidence_1.evidenceState)(item, reviewDate)).join('、') });
|
||||
}
|
||||
const covered = required.length - gaps.length;
|
||||
return { covered, total: required.length, percent: required.length ? Math.round(covered * 100 / required.length) : 100,
|
||||
gaps, orphanCases, duplicateCases };
|
||||
}
|
||||
Reference in New Issue
Block a user