Replace statistics demo with License Lens remote repository scanner
license-lens 是一个不依赖第三方库的 Python 命令行工具,用于检查本地或远程代码库的开源许可证信号。
license-lens
LICENSE
LICENCE
COPYING
NOTICE
UNLICENSE
SPDX-License-Identifier
远程仓库支持 GitHub、GitLink 等 Git 服务的 HTTPS/SSH 克隆地址,也支持常见的仓库网页地址。扫描远程仓库时,工具会用 git clone --depth 1 将代码放进临时目录,扫描结束后自动清理;报告中保留用户输入的原始仓库地址。
git clone --depth 1
在项目根目录执行:
python src/license_lens.py scan examples/demo_project
扫描 GitHub 仓库:
python src/license_lens.py scan https://github.com/psf/requests --ref main
扫描 GitLink 仓库网页地址:
python src/license_lens.py scan https://gitlink.org.cn/WhiteNight/license-lens-23375291 --ref master
扫描远程仓库的指定标签或分支,并增加浅克隆深度:
python src/license_lens.py scan https://github.com/org/project --ref v1.0.0 --depth 5
生成 Markdown 报告:
python src/license_lens.py scan examples/demo_project --format markdown --output reports/demo-report.md
生成 JSON 报告:
python src/license_lens.py scan examples/demo_project --format json --output reports/demo-report.json
如果项目没有许可证文件,工具会返回失败状态;许可证存在但 README 或版权声明不完整时,会返回警告状态。扫描私有仓库时,需要先让本机 Git 配好 HTTPS 令牌或 SSH 凭据;工具不会读取或打印凭据。
运行自动化测试:
python -m unittest discover -s tests -v
当前测试覆盖一个许可证完整的通过样例、一个缺少 LICENSE 的失败样例,以及远程网页地址到 Git 克隆地址的规范化。
仓库中包含两个用于验证的示例:
examples/demo_project
PASS
examples/incomplete_project
FAIL
许可证文件是法律文本,工具只做初步识别和提醒,不替代法律审查,也不判断复杂依赖关系的最终许可证兼容性。远程扫描只读取仓库内容,不会向远程仓库写入任何文件。项目使用 Python 标准库实现,避免引入额外依赖,方便在不同环境中运行和复核。
本工具采用 Apache License 2.0。Apache-2.0 属于宽松型许可证,允许他人使用、修改、分发和商业化,同时明确提供专利授权,并要求保留许可证、版权和修改说明。
examples/demo_project 是独立的 MIT 许可证测试样例,其许可证见该目录下的 LICENSE。扫描本仓库时会同时识别 Apache-2.0 和样例中的 MIT,并返回 WARN,提示人工核对多个许可证;这不表示扫描运行失败。
WARN
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
license-lens
license-lens是一个不依赖第三方库的 Python 命令行工具,用于检查本地或远程代码库的开源许可证信号。功能
LICENSE、LICENCE、COPYING、NOTICE和UNLICENSE文件;SPDX-License-Identifier;远程仓库支持 GitHub、GitLink 等 Git 服务的 HTTPS/SSH 克隆地址,也支持常见的仓库网页地址。扫描远程仓库时,工具会用
git clone --depth 1将代码放进临时目录,扫描结束后自动清理;报告中保留用户输入的原始仓库地址。使用方法
在项目根目录执行:
扫描 GitHub 仓库:
扫描 GitLink 仓库网页地址:
扫描远程仓库的指定标签或分支,并增加浅克隆深度:
生成 Markdown 报告:
生成 JSON 报告:
如果项目没有许可证文件,工具会返回失败状态;许可证存在但 README 或版权声明不完整时,会返回警告状态。扫描私有仓库时,需要先让本机 Git 配好 HTTPS 令牌或 SSH 凭据;工具不会读取或打印凭据。
运行自动化测试:
当前测试覆盖一个许可证完整的通过样例、一个缺少 LICENSE 的失败样例,以及远程网页地址到 Git 克隆地址的规范化。
示例
仓库中包含两个用于验证的示例:
examples/demo_project:包含 MIT License、README 许可证说明和版权声明,预期状态为PASS;examples/incomplete_project:没有 LICENSE 文件,预期状态为FAIL。设计说明
许可证文件是法律文本,工具只做初步识别和提醒,不替代法律审查,也不判断复杂依赖关系的最终许可证兼容性。远程扫描只读取仓库内容,不会向远程仓库写入任何文件。项目使用 Python 标准库实现,避免引入额外依赖,方便在不同环境中运行和复核。
本工具采用 Apache License 2.0。Apache-2.0 属于宽松型许可证,允许他人使用、修改、分发和商业化,同时明确提供专利授权,并要求保留许可证、版权和修改说明。
examples/demo_project是独立的 MIT 许可证测试样例,其许可证见该目录下的LICENSE。扫描本仓库时会同时识别 Apache-2.0 和样例中的 MIT,并返回WARN,提示人工核对多个许可证;这不表示扫描运行失败。