实现示例type Entry = { name: string; versions: string[] } function semverValid(v: string): boolean { return /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(v) } function canUnify(versions: string[]): boolean { if (versions.length <= 1) return true; return versions.every(semverValid) } function evaluate(entries: Entry[], maxDistinct: number): { ok: boolean; errors: string[] } { const errors: string[] = [] for (const e of entries) { const distinct = new Set(e.versions) if (distinct.size > maxDistinct) errors.push(`${e.name}:${distinct.size}`) if (!canUnify(e.versions)) errors.push(`invalid:${e.name}`) } return { ok: errors.length === 0, errors } } 审计与CI门禁审计重复版本与统一策略;超过阈值阻断并输出修复建议。去重策略变更需审批与归档。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.793448s