1### SPDX License 匹配工具 2 3该工具用于从Excel文件和JSON文件中提取、匹配并映射开源许可证信息。其核心功能包括将Excel文件中的`cc_url`字段复制到`match_url`字段中,并将`spdx_fixed_license_name`字段与JSON中的SPDX License键进行匹配,结果输出到Excel文件的`match_license`字段。 4 5### 目录结构 6 7``` 8plaintextCopy codeproject_root/ 9├── src/ 10│ └── spdx_license_matcher.py # SPDX License 匹配工具代码 11├── test/ 12│ └── test_spdx_license_matcher.py # SPDX License 匹配工具的测试代码 13└── data/ 14 ├── url_license_fixed.xlsx # 输入的Excel数据文件 15 └── spdx.json # 输入的SPDX License JSON文件 16``` 17 18### 文件详细说明 19 20- **src/spdx_license_matcher.py**:核心脚本文件,包含加载数据、列复制、许可证匹配及结果输出等功能。 21- **test/test_spdx_license_matcher.py**:测试文件,使用`unittest`框架验证工具的核心功能是否正常工作。 22- **data/oh_spdx_license_match.xlsx**和**data/spdx.json**:测试数据文件,分别包含Excel的许可URL数据和SPDX License的JSON映射数据。 23 24 25 26#### 使用说明 27 281. 运行脚本需要传递三个参数:输入的Excel文件路径、JSON文件路径和输出Excel文件路径。 292. 命令示例如下: 30 31``` 32python src/spdx_license_matcher.py data/oh_spdx_license_match.xlsx data/spdx.json data/output.xlsx 33``` 34 35### 36 37#### 测试步骤 38 391. 在项目根目录运行测试命令: 40 41``` 42python -m unittest discover -s test 43``` 44 451. 测试输出: 46 - 测试代码会自动验证主要功能,包括列复制、许可证匹配、数据保存等。 47 - 若所有测试通过,将显示“OK”。 48 49### 注意事项 50 51- **SPDX 数据格式**:确保JSON文件的格式符合SPDX标准。 52- **Excel 文件格式**:输入Excel文件应包含`cc_url`和`spdx_fixed_license_name`列。 53- **测试文件**:测试中创建的临时文件会在测试结束时自动删除。 54 55------ 56 57### 常见问题 58 591. 许可证名称无法匹配:请检查输入Excel文件的`spdx_fixed_license_name`字段内容,确保名称拼写正确,并与JSON文件的键名称一致。 602. 多项许可匹配:对于含有多个以“分号”分隔的许可证名称,脚本会逐个进行匹配,并将结果以“分号”分隔的方式填入`match_license`列中。 61