• Home
Name Date Size #Lines LOC

..--

data/22-Oct-2025-641640

src/22-Oct-2025-494334

test/22-Oct-2025-521353

README_OSS.mdD22-Oct-20256.1 KiB212157

README_spdx_match.mdD22-Oct-20252.4 KiB6140

README_OSS.md

1# 开源软件 `README.OpenSource` 工具使用文档
2
3## 目录
4
5- 开源软件 `README.OpenSource` 工具使用文档
6  - 简介
7  - 功能概述
8  - 安装与环境配置
9    - 环境要求
10    - 安装步骤
11  - 使用指南
12    - 生成 `README.OpenSource` 文件
13    - 验证 `README.OpenSource` 文件
14      - 验证格式
15      - 验证内容
16    - 命令行参数
17  - 目录结构
18  - 工作流程概览
19    - 生成工具流程图
20    - 验证工具流程图
21
22## 简介
23
24本工具旨在为项目中的每个开源部件创建标准化的 `README.OpenSource` 文件,并提供验证这些文件格式和内容的功能。该工具仅使用 Python 标准库开发,易于安装和使用。通过合并生成和验证功能,用户可以使用单个脚本完成所有操作,并根据需要选择不同的功能场景。
25
26## 功能概述
27
28- 生成工具 :
29  - 通过交互方式,用户输入开源部件的信息,支持多个部件的输入。
30  - 支持一对一、一对多、多对一的许可证和许可证文件关系配置。
31  - 支持可选的依赖项配置,以逗号分隔多个依赖。
32  - 生成符合规范的 `README.OpenSource` 文件,包含所有输入的部件信息。
33
34- 验证工具:
35  - **格式验证**:验证项目中所有 `README.OpenSource` 文件的格式,检查必需字段是否完整,JSON 格式是否正确。
36  - **内容验证**:验证以下内容:
37    - 对 `"Name"`、`"License"`、`"Version Number"`、`"Upstream URL"` 等字段与参考数据比对。
38    - 验证 `"License File"` 字段指向的文件是否存在。
39    - 验证 `"Dependencies"` 字段(若存在)是否为有效的字符串数组。
40
41## 安装与环境配置
42
43### 环境要求
44
45- **Python 版本**:Python 3.6 或更高版本
46- **操作系统**:跨平台,支持 Linux/Windows
47
48### 安装步骤
49
501. **克隆或下载项目代码**
51
52   ```
53   git clone https://gitee.com/openharmony/developtools_integration_verification.git
54   cd tools/opensource_tools
55   ```
56
572. **(可选)创建虚拟环境**
58
59   ```
60   python -m venv venv
61   source venv/bin/activate  # Linux/macOS
62   # 或
63   venv\Scripts\activate     # Windows
64   ```
65
663. **安装依赖**
67
68   由于该工具仅使用 Python 标准库,无需安装额外依赖。
69
70## 使用指南
71
72### 生成 `README.OpenSource` 文件
73
74运行 `generate_readme_opensource.py` 脚本,按照提示输入开源部件的信息。
75
76**步骤:**
77
781. **进入项目目录**
79
80   ```
81   cd src
82   ```
83
842. **运行生成脚本**
85
86   ```
87   python generate_readme_opensource.py
88   ```
89
903. **按照提示输入信息**
91   - 输入输出目录(默认为当前目录)
92   - 依次输入每个部件的详细信息:
93     - Name:组件名称
94     - Version Number:版本号
95     - Owner:维护者
96     - Upstream URL:上游地址
97     - Description:描述信息
98     - License:许可证(多个许可证用分号分隔)
99     - License File:许可证文件路径(多个文件用分号分隔)
100     - Dependencies(可选):依赖项(多个依赖用逗号分隔)
101   - 每个部件信息输入完成后,选择是否添加另一个部件
102
1034. **完成生成**
104   - 脚本将在指定的输出目录下生成JSON格式的 `README.OpenSource` 文件
105
106### 验证 `README.OpenSource` 文件
107
108#### 验证格式
109
110验证项目中所有 `README.OpenSource` 文件的格式和必需字段。
111
112**命令:**
113
114```bash
115python validate_readme_opensource.py --validate-format [目录路径]
116```
117
118验证检查内容:
119- JSON格式的正确性
120- 必需字段的完整性
121- Dependencies字段(若存在)的数组格式
122
123#### 验证内容
124
125验证 `README.OpenSource` 文件内容与参考数据的一致性。
126
127**命令:**
128
129```bash
130python validate_readme_opensource.py --validate-content --reference-data reference_data.json [目录路径]
131```
132
133验证内容包括:
134- 核心字段(Name、License、Version Number、Upstream URL)与参考数据的一致性
135- License File 文件实际存在性检查
136- Dependencies字段(若存在)的有效性检查
137
138### 命令行参数
139
140验证工具支持以下命令行参数:
141
142- `project_root`:必需,项目根目录路径
143- `--validate-format`:执行格式验证
144- `--validate-content`:执行内容验证
145- `--reference-data`:参考数据JSON文件路径(内容验证必需)
146- `--log-file`:日志文件路径,用于保存验证结果
147
148## 目录结构
149
150- **src/**
151  - `generate_readme_opensource.py`:生成README.OpenSource开源部件配置信息脚本
152  - `validate_readme_opensource.py`:验证工具脚本,包含JSON格式验证和内容验证功能
153- **README_OSS.md**:使用文档(本文件)
154
155## 工作流程概览
156
157### 生成工具流程图
158
159```mermaid
160sequenceDiagram
161    participant User as 用户
162    participant Script as generate_readme_opensource.py
163    participant FileSystem as 文件系统
164
165    User->>Script: 运行脚本
166    Script-->>User: 请求输出目录
167    User->>Script: 输入目录路径
168
169    loop 添加开源部件
170        Script-->>User: 请求基本信息 (Name等)
171        User->>Script: 输入基本信息
172        Script-->>User: 请求许可证信息
173        User->>Script: 输入许可证及文件路径
174        Script-->>User: 请求依赖项信息(可选)
175        User->>Script: 输入依赖项
176        Script-->>User: 是否继续添加?(y/n)
177        User->>Script: 选择是否继续
178    end
179
180    Script->>FileSystem: 生成 README.OpenSource
181    Script-->>User: 完成生成
182```
183
184### 验证工具流程图
185
186```mermaid
187sequenceDiagram
188    participant User as 用户
189    participant Script as validate_readme_opensource.py
190    participant FileSystem as 文件系统
191
192    User->>Script: 运行验证命令
193    Script->>FileSystem: 搜索 README.OpenSource 文件
194
195    alt 格式验证
196        Script->>Script: 检查JSON格式
197        Script->>Script: 检查必需字段
198        Script->>Script: 检查Dependencies格式
199    end
200
201    alt 内容验证
202        Script->>Script: 加载参考数据
203        Script->>Script: 比对字段内容
204        Script->>FileSystem: 检查License文件
205        Script->>Script: 验证Dependencies
206    end
207
208    alt 验证通过
209        Script-->>User: 报告成功
210    else 验证失败
211        Script-->>User: 输出错误信息
212    end

README_spdx_match.md

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