许可证正文**逐字采用** ASF 的 LICENSE-2.0.txt,只把 APPENDIX 里的版权占位行填成
"Copyright 2026 Shuery" —— 正文一个字节都没改。
为此先下载规范文本再打补丁,而不是凭记忆抄一遍:许可证抄错一个词就不再是那个许可证了。
校验方式是逐行对比本仓 LICENSE 与规范文本,结果只差版权那一行(规范文本 11358 字节、
SHA256 cfc7749b…;本仓 11337 字节,差额 21 字节正好等于两行文本的长度差)。
选 Apache-2.0 而非 MIT,主要差别在第 3 节的**明示专利授权**:贡献者授予专利许可,
而不只是版权许可。
同时:
* README 的许可证章节从「尚未声明」改成实际条款摘要 + 徽章(License: Apache-2.0)
* BakNRet.psd1 的 PrivateData.PSData 登记 LicenseUri 与 Copyright,Import-Module
之后可直接读到许可信息
* 不加 NOTICE:第 4(d) 节只在作品本身带 NOTICE 时才要求向下传递,而本仓库不分发第三方
代码(Pester / PSScriptAnalyzer 只放在 .tools/ 供本地测试,既进 gitignore 也不进分发产物)
* .scratch/ci-cd 的两份报告补了带日期的「后续更新」注记,关掉许可证合规的 L-1 与依赖
安全扫描的 R-1,避免后来的人读到「主许可证未声明」这个已经过期的结论
验收:test.ps1 9/9 全绿(5.1 与 7);静态分析 80 条、0 Error(与改动前持平);
README 相对链接 0 失效、新增外部链接 2/2 返回 200;双宿主解析 psd1 零错、89 个导出不变。
4.4 KiB
4.4 KiB
许可证合规检查报告(license-compliance-checker)
Warning
免责声明:本报告由自动化工具基于仓库内的文件生成,仅为工程参考,不构成法律建议。 涉及对外分发、商业使用或二次许可时,请咨询法务。
- 项目:BakNRet
- 检查时间:2026-09-28
- 主许可证:未声明 —— 仓库根目录不存在
LICENSE/LICENSE.md/LICENSE.txt
Note
后续更新(2026-10-02):L-1 已关闭。 仓库已补
LICENSE(Apache License 2.0,正文逐字采用 ASF 的 LICENSE-2.0.txt,仅把 APPENDIX 的版权占位行填成Copyright 2026 Shuery), README 的许可证章节与BakNRet/BakNRet.psd1的LicenseUri/Copyright同步登记。 下方「主许可证:未声明」与 L-1 条目保留为检查当时的发现,不再代表当前状态。
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. 合规建议
- 先补主许可证(L-1)。这是本仓库唯一的合规缺口,且成本最低。
.tools/下的模块不要提交进版本库(已 gitignore)——它们是第三方代码, 提交会牵出「再分发」与版权声明保留义务。- 若将来把 BakNRet 公开发布,请在 README / 发布产物里保留 7-Zip 的许可与免责声明引用; 当前仓库并未捆绑 7-Zip 二进制,所以现在无需附带其许可证全文。
- 若决定以 MIT 发布,注意 MIT 要求保留版权与许可声明:README「致谢」一节已引用上游项目,
可再补一份
THIRD-PARTY-NOTICES.md收纳 Pester / PSScriptAnalyzer 的声明(可选)。
免责声明(重申):以上判断基于文件名、模块清单字段与上游公开条款的自动比对, 存在识别错误的可能;不构成法律建议。