Contributing to Mindstudio Insight

感谢您考虑为Mindstudio Insight贡献力量! 我们欢迎任何形式的贡献——无论是修复错误,功能增强,文档改进,或是任何反馈建议。无论您是经验丰富的开发者,还是第一次参与开源项目,您的帮助都非常宝贵。

您的支持可以有很多种形式:

  • 报告问题或意外行为。
  • 建议或实现新功能。
  • 改进或扩展文档。
  • 审阅Pull Request并协助其他贡献者
  • 分享推荐:在博客文章、社交媒体中介绍MindStudio Insight,或为仓库项目点个🌟。

我们期待您的参与!

寻找可以贡献的Issue

正在寻找新issue的切入点? 可以查看以下议题:

Pull Requests 与 Code Reviews

感谢您提交 PR!为优化审查流程,请遵循以下指南:

遵循我们的 Pull Request 模板与规范

遵守 pre-commit(预提交)代码规范检查,在提交PR之前请确保所有检查通过

对涉及用户端功能的改动,请同步更新对应的用户和开发者文档

在 CI 工作流中 添加或更新测试;若无需测试,请说明原因

在上述准备工作完成后提交代码,请输入 compile 命令触发机器人编译流水线

流水线编译通过后请联系仓库管理和维护成员进行检视与合入

License

请参阅 LICENSE 文件以获取完整详细信息。

构建与测试

在提交PR之前,建议您先在本地搭建开发环境,构建insight并运行相关测试。

开发者测试相关要求: 合入后端代码时,有开发者测试的相关要求。

  1. 后端DT使用测试框架GoogleTest,DT代码位置是server/src/test,Linux系统上,在build目录下执行命令bash cpp_coverage.sh即可生成覆盖率。后端覆盖率的要求是行覆盖率达到80%,分支覆盖率达到60%。后端合入新特性代码时,要求同时补充DT。详细步骤可以参考开发指南的3.3.3节。

预冒烟测试相关要求: 合入前端代码或后端代码时,有预冒烟测试的相关要求。

  1. 预冒烟测试是端到端的测试,用于验证软件的主要功能是否正常运行,涉及前端和后端。预冒烟测试使用测试框架Playwright。详细步骤可以参考开发指南的3.5节。

PR标题与分类

只有特定类型的PR才会被审核。请在PR标题前添加合适的前缀,以明确PR类型。请使用以下分类之一:

  • [Platform]: 底座平台相关的新功能、优化或bug修复。
  • [Common]: 公共模块相关的新功能、优化或bug修复。
  • [Timeline]: 系统调优-集群相关的新功能、优化或bug修复。
  • [Memory]: 系统调优-内存相关的新功能、优化或bug修复。
  • [Operator]: 系统调优-算子相关的新功能、优化或bug修复。
  • [MemScope]: 系统调优-内存详情相关的新功能、优化或bug修复。
  • [Cluster]: 系统调优-集群详情相关的新功能、优化或bug修复。
  • [RL]: 系统调优-强化学习相关的新功能、优化或bug修复。
  • [Advisor]: 系统调优-专家建议相关的新功能、优化或bug修复。
  • [Source]: 算子调优相关的新功能、优化或bug修复。
  • [Servitization]: 服务化调优相关的新功能、优化或bug修复。

Commit Requirement

为保持commit记录清晰,请确保每个PR仅包含一个commit。 如果您的PR当前包含多个commits,请在提交前使用以下任一方法(包括但不限于)将其合并为单个commit。(尽管GitCode在合并PR时提供了Squash 合并的选项, 提前将PR整理为单个简洁的commit仍然被视为最佳实践,并且深受committer们的欢迎。)

方式一:交互式变基(推荐)

  • 查看需要合并的最近几个commit(例如最近3个):
git log --oneline -n 3
  • 启动交互式rebase (将N替换为需要合并的commit数量):
git rebase -i HEAD~N
  • 在打开的编辑器中:
    • 保留第一个commit的pick
    • 将其余commit前的pick修改为squash(或简写为s) 。
  • 保存并关闭。随后会打开新窗口,供您编写合并后的简洁、有意义的commit信息。
  • 强制推送更新后的分支 (仅限于您自己的特性分支):
git push --force-with-lease origin your-branch-name

方式二:reset + 新建commit

# 获取最新的待合入的目标分支(如main)
git fetch origin main

# Soft-reset到主干分支--此操作会保存所有修改并回归到暂存区。
git reset --soft origin/main

# 将所有更改提交为一个新的commit
git commit -m "feat: concise description of your change"

# 强制推送以更新PR分支
git push --force-with-lease origin your-branch-name

提示: 如果您不确定应基于哪个目标分支,请查看仓库的默认分支或咨询Maintainer.
警告:切勿对共享或受保护的分支执行强制推送。

感谢

我们感谢您对 MindStudio Insight 的贡献。您的每一份努力,都让这个项目变得更强大、更易用。祝您创造愉快,编程开心!