许可证正文**逐字采用** 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 个导出不变。
68 lines
4.4 KiB
Markdown
68 lines
4.4 KiB
Markdown
# 许可证合规检查报告(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. 许可证分布
|
||
|
||
```text
|
||
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 的声明(可选)。
|
||
|
||
---
|
||
|
||
**免责声明(重申)**:以上判断基于文件名、模块清单字段与上游公开条款的自动比对,
|
||
存在识别错误的可能;**不构成法律建议**。
|