# 为MindStudio ServiceProfiler贡献
感谢您考虑为 MindStudio ServiceProfiler(msServiceProfiler)做出贡献!我们欢迎任何形式的贡献,包括错误修复、功能增强、文档改进等,甚至只是反馈。无论您是经验丰富的开发者还是第一次参与开源项目,您的帮助都是非常宝贵的。
您可以通过多种方式支持本项目:
- 通过Issues反馈问题。
- 建议或实现新功能。
- 改进或扩展文档。
- 审查Pull Request并协助其他贡献者。
- 传播项目:在博客文章、社交媒体上分享msServiceProfiler,或给仓库点个⭐。
## 寻找可贡献的问题
想要开始贡献?可以查看以下类型的问题:
此外,您可以通过查看Issues列表了解项目的发展计划和路线图。
## 贡献流程
### 环境要求
- 硬件环境请参见《昇腾产品形态说明》
- 需要提前安装CANN开源版本
- Python 3.10及以上版本
- CMake 3.11及以上版本
### 开发与测试
-
先在GitCode平台点击仓库右上角"Fork"按钮,将仓库克隆到个人账户
-
克隆到本地:
bash git clone https://gitcode.com/<your-username>/msserviceprofiler.git cd msserviceprofiler -
在个人仓进行代码开发
代码开发请遵循代码规范。
-
代码测试
参见代码测试。
-
安装测试
将开发完成的代码进行安装测试,详细步骤请参见《msServiceProfiler工具安装指南》。
-
文档开发
若涉及新增、变更或删除特性,请提供相关文档介绍,文档写作详细要求请参见文档开发。
-
提交Pull Request
### 代码规范
#### Python代码规范
- 遵循PEP 8编码规范
- 使用4个空格进行缩进
- 类名使用大驼峰命名法(如
DataManager) - 函数和变量使用小写加下划线命名法(如
parse_data) - 添加必要的类型注解和文档字符串
#### C++代码规范
- 遵循项目现有的编码风格
- 使用4个空格进行缩进
- 类名使用大驼峰命名法
- 函数名使用小驼峰命名法
- 添加必要的注释说明复杂逻辑
### 代码测试
#### 运行测试
在提交代码前,请确保所有测试通过:
```bash
# Python单元测试
cd msserviceprofiler/test
bash run_ut.sh ms_service_profiler # 或 bash run_ut.sh ms_serviceparam_optimizer 或 bash run_ut.sh msservice_advisor
# C++单元测试
cd msserviceprofiler/test
bash run_ut.sh cpp
```
#### 添加测试
- 为新功能添加相应的单元测试
- 确保测试覆盖主要逻辑分支
- 测试用例应该具有良好的可读性和维护性
- 测试数据应该放在
test/目录下的相应位置
#### 代码覆盖率
覆盖率报告在${CURRENT_DIR}/coverage/coverage.xml,其中CURRENT_DIR为当前执行的run_ut.sh脚本所在目录(即test目录)
### 文档开发
#### 文档路径
如果您的更改影响用户使用方式,请更新相关文档:
- 用户指南:
docs/zh/ - API文档:代码注释中的文档字符串
- 示例代码:
samples/
#### 文档规范
- 使用简洁明了的中文表述
- 提供完整的示例代码
- 包含必要的截图或图表说明
- 确保链接的有效性
### 提交Pull Request流程
#### 提交前检查清单
在提交Pull Request之前,请确保:
- [ ] 代码遵循项目的编码规范
- [ ] 添加了必要的测试用例
- [ ] 所有测试通过
- [ ] 更新了相关文档
- [ ] 提交信息清晰明确
- [ ] 代码已经过自我审查
#### 提交流程
-
创建分支
bash git checkout -b feature/<your-feature-name> -
提交更改
bash git add . git commit -m "feat: <your feature description>" -
推送到远程仓库
bash git push origin feature/<your-feature-name> -
创建Pull Request
在GitCode上创建Pull Request,并填写:
- 清晰的标题
遵循提交信息规范。
- 详细的描述
包括更改内容、原因、测试情况等
- 关联相关的Issue
-
代码审查
- 提交Pull Request后,您需要通知相关“负责人”( Reviewers和Committers)进行内容审核。
- 您需要根据反馈审核意见修改代码,并重新提交更新。此流程可能涉及多轮迭代,请保持积极响应和沟通。
Pull Request流程中会提示相关的“负责人”,可在Pull Request流程中指定相关“负责人”,或通过README的建议与交流章节联系我们。
-
代码合并
Pull Request需要依次集齐如下四个标签即可完成代码合入:
- ascend-cla/yes:CLA检查,首次开发时需要完成CLA的签署,完成后每次提交自动获得此标签。
- ci-pipeline-passed:CI流水线,在Pull Request流程中评论
compile触发,若CI流水线检查不通过,则需要根据提示修改后重新提交。 - lgtm:由Reviewers提供,Reviewers审核通过后,会在Pull Request流程中评论
/lgtm触发lgtm标签。 - approved:由Committers提供,Committers审核通过后,会在Pull Request流程中评论
/approved触发approved标签。
当您的Pull Request集齐四个标签后,您的PR将被合并到主干分支。
#### Pull Request最佳实践
- 保持PR的大小适中,便于审查
- 一个PR只解决一个问题或实现一个功能
- 及时响应审查意见
- 保持与主分支同步,及时解决冲突
#### 提交信息规范
提交信息应该清晰地描述更改的内容和原因:
```text