Files
BakNRet/.scratch/ci-cd/20260928-001722/license_check_report.md
T
Shuery 45bbd66815 docs(report): 新增 PROJECT_REPORT.md 与 CI/CD 流水线记录
PROJECT_REPORT.md:论文式项目报告(摘要 / 目录 / 7 章 / 参考文献 / 致谢 / 附录 A),
4 张 Mermaid 图同样经真实浏览器渲染验证。所有数字都与证据文件逐个核对过。

.scratch/ci-cd/:本次流水线的全部证据与可重跑脚本
  * 阶段报告:依赖安全扫描 / 许可证合规 / 阶段 0 静态分析 / 阶段 3 测试与性能
  * 证据:分析器原始输出(修复前 84 条、修复后 80 条)、Pester 详细输出、
    性能基线 JSON、黑盒用例结果(阶段 1 的 11 例与阶段 2 回归的 12 例)
  * 可重跑:blackbox-tests.ps1 / blackbox-regression.ps1 / perf-baseline.ps1

两条边界必须写在明处,不能含糊:

  * **VM 内验证只取到修复前的快照**(Pester 183 项全绿)。随后会话审批策略改为 never,
    gsudo 提权被自动拒绝(退出码 999),而 Hyper-V 与 PowerShell Direct 都需要管理员,
    于是修复后的三套件在 VM 内**没有跑成**。报告里明确标注了范围,没有把"宿主跑绿了"
    说成"VM 也跑绿了"。
  * **性能基线是首次建立**,无历史可比,故无退化可判;指标只在同机同宿主下对比,
    跨机比数字没有意义。

另外记一笔:静态分析的口径是"仓库自己的门禁"。剩余 80 条全是风格类(0 Error),且逐条
有依据 —— 行长 160 是配置里写明的有意偏离,PSPlaceCloseBrace 等集中在测试夹具字符串内
(改了会改变断言语义)。严格模式的"零容忍"在这里与仓库自身约定相抵,选择尊重仓库约定
并在报告里登记,而不是制造一个横跨 12 个文件的纯排版大 diff。
2026-10-02 01:17:40 +08:00

3.9 KiB
Raw Blame History

许可证合规检查报告(license-compliance-checker)

Warning

免责声明:本报告由自动化工具基于仓库内的文件生成,仅为工程参考,不构成法律建议。 涉及对外分发、商业使用或二次许可时,请咨询法务。

  • 项目:BakNRet
  • 检查时间:2026-09-28
  • 主许可证:未声明 —— 仓库根目录不存在 LICENSE / LICENSE.md / LICENSE.txt

1. 依赖与组件许可证清单

license-checker / pip-licenses / go-licenses 等工具不适用(本项目无包管理器依赖)。 下列清单通过读取 .tools/modules 下的模块清单与许可证文件、以及七项外部组件的官方许可条款得出。

组件 版本 许可证 来源依据 与主许可证关系
BakNRet(本项目) 1.0.0(模块清单) 未声明 无 LICENSE 文件 —
Pester 5.9.1 Apache-2.0 Pester.psd1 的 Copyright + LicenseUri 测试期工具,未声明主许可证时无冲突可判
PSScriptAnalyzer 1.25.0 MIT .tools/modules/PSScriptAnalyzer/1.25.0/LICENSE 同上
Newtonsoft.Json(PSScriptAnalyzer 内置依赖) 随包 MIT 同目录 ThirdPartyNotices.txt 同上
7-Zip 26.03 LGPL-2.1-or-later + BSD-3-Clause + unRAR 限制 上游许可(用户自备,不随本仓库分发) 未分发,仅本地调用
PowerShell 5.1 / 7.7 MIT(宿主环境) — 未分发
.NET 运行时 — MIT(宿主环境) — 未分发

2. 许可证分布

MIT                 ████████████████████  3 项(PSScriptAnalyzer、Newtonsoft.Json、PowerShell/.NET)
Apache-2.0          ███████               1 项(Pester)
LGPL + BSD + unRAR  ███████               1 项(7-Zip)
未声明              ███████               1 项(本项目自身)  <-- 需要处理

全部第三方许可证均为宽松型(MIT / Apache-2.0 / BSD),无 copyleft 传染风险。

3. 冲突与注意事项

ID 级别 对象 说明 建议
L-1 ❌ 需处理 本项目自身 没有 LICENSE 文件 = 默认「保留所有权利」。他人无权复制、修改、分发;GitHub 上也会显示为无许可证项目 明确选一个:想宽松就 MIT,想带专利授权就 Apache-2.0
L-2 ⚠️ 需注意 7-Zip 的 unRAR 限制 7-Zip 许可证禁止用其 unRAR 代码还原 RAR 压缩算法。本项目只用 7z 解压 / 压缩,不实现 RAR 压缩 无需动作;当前用法不触发该限制
L-3 ⚠️ 需注意 Pester 5.9.1 的版权年份 模块清单里 Copyright 写的是 (c) 2026 by Pester Team(上游清单原文) 无需动作;仅记录,勿在文档中改写上游声明
L-4 ✅ 兼容 PSScriptAnalyzer(MIT)+ Newtonsoft.Json(MIT) MIT 与 MIT/Apache 混合无冲突 仅在本仓库内作为测试工具使用,未再分发

4. 合规建议

  1. 先补主许可证(L-1)。这是本仓库唯一的合规缺口,且成本最低。
  2. .tools/ 下的模块不要提交进版本库(已 gitignore)——它们是第三方代码, 提交会牵出「再分发」与版权声明保留义务。
  3. 若将来把 BakNRet 公开发布,请在 README / 发布产物里保留 7-Zip 的许可与免责声明引用; 当前仓库并未捆绑 7-Zip 二进制,所以现在无需附带其许可证全文。
  4. 若决定以 MIT 发布,注意 MIT 要求保留版权与许可声明:README「致谢」一节已引用上游项目, 可再补一份 THIRD-PARTY-NOTICES.md 收纳 Pester / PSScriptAnalyzer 的声明(可选)。

免责声明(重申):以上判断基于文件名、模块清单字段与上游公开条款的自动比对, 存在识别错误的可能;不构成法律建议。