已合并
基于 devcontainer 的 MindStudio 统一开发环境方案 #429
基于 devcontainer 的 MindStudio 统一开发环境方案 #429
已合并
Zhang-Yu001创建于 8月3日
Zhang-Yu001
Zhang-Yu001成员
8月3日

PR 合入模板

1. 修改描述

  • 修改原因: msserviceprofiler 缺少标准化 devcontainer 开发环境,开发者本地环境不一致,构建依赖需手动安装,IDE 代码跳转/调试配置繁琐。

  • 修改内容:
    新增 6 个文件:

    • .devcontainer/devcontainer.json — 容器底座配置,固化 MindStudio 构建镜像、挂载、用户映射、环境变量、VS Code 推荐扩展和生命周期钩子
    • .devcontainer/post-create.sh — 幂等初始化脚本,自动完成 Python 3 配置、系统/pip 编译依赖补齐、gitleaks 架构自适应+多镜像源+pip 兜底安装、pre-commit 安装、clangd 就绪、Git 身份同步
    • .vscode/settings.json — watcher/search 排除构建和 3rdparty 目录;禁用 cpptools IntelliSense,clangd 参数由 devcontainer.json 统一管理
    • .vscode/tasks.json — 4 个 VS Code Task:Build: Release Mode / Build: Debug Mode / Test: Run Unit Tests / Clean: All Workspace
    • .vscode/launch.json — Python debugpy + pytest 调试配置,含 PYTHONPATH 和 LD_LIBRARY_PATH 环境变量
    • .clangd — clangd 编译数据库路径声明(CompileFlags.CompilationDatabase: build/)

    修改 5 个文件:

    • .gitignore.vscode 改为 .vscode/settings.json(track launch.json/tasks.json);新增 artifacts/output/.ruff_cache/.devcontainer/.host-gitconfig
    • .pre-commit-config.yaml — gitleaks entry 从本地 ./gitleaks 改为系统 gitleaks;bandit 增加 additional_dependencies: ["bandit[toml]"]
    • CMakeLists.txt — 新增 CMAKE_EXPORT_COMPILE_COMMANDS ON 为 clangd 生成编译数据库
    • build.py — 新增 only_down_deps 参数支持,IDE Debug 构建时仅下载依赖
    • docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer 一键开发环境使用方法,原手工配置改为 2.2 节

2. 功能验证


3. 代码检视

  • 要求:
    • 合入代码大于 200 行,需三人以上会议检视。
    • 检视密度≥2个/100行。
    • 检视缺陷密度达不到要求的需给出说明。
    • 大于 1000 行代码原则上不允许合入,需进行备案。

4. 安全自检

典型安全编码问题


5. 变更知会

  • 资料修改:

    • docs/zh/developer_guide/development_guide.md — 第 2 章"编译环境配置"新增 2.1 节 devcontainer
      一键开发环境使用方法(前置条件、使用步骤、VS Code 内置任务、代码跳转与调试说明),原手工配置改为 2.2 节
  • 变更通知(消息知会 + 邮件知会):


6. 冒烟修改

  • PR 来源:

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Zhang-Yu001 的贡献)
atomgit-bot
atomgit-bot成员
8月3日 评论:

变更摘要

本次 PR 为 msserviceprofiler 项目引入基于 DevContainer 的统一开发环境方案,通过标准化容器镜像、IDE 配置和自动化初始化脚本,消除开发者本地环境差异。主要新增了 .devcontainer 配置(含容器定义与幂等初始化脚本)、VS Code 的调试(launch.json)与任务(tasks.json)配置、clangd 编译数据库指向配置,同时对 build.py 增加了依赖下载后提前退出的 only_down_deps 选项,并调整了 .pre-commit-config.yamlbandit 的依赖项和 gitleaks 的入口路径。

主要改动

  • 新增 DevContainer 配置.devcontainer/devcontainer.json 定义了基于 mindstudio-build:26.1.0-0701 镜像的容器环境,挂载本地工作区、配置网络与权限参数、预装 VS Code 扩展(C++/Python/clangd 等),并指定 postCreateCommand 触发初始化脚本。
  • 新增容器初始化脚本.devcontainer/post-create.sh 提供幂等的初始化流程,包括用户 bin 目录配置、Python 3 环境发现、构建依赖安装(python3-develgitleakswheelpre-commitbandit[toml] 等)、Git 身份同步、pre-commit hook 安装、clangd 安装及本地文件 skip-worktree 设置。
  • 新增 VS Code 调试与任务配置.vscode/launch.json 提供 "Python: Debug Active File" 和 "Python: Pytest Case Debugging" 两种调试模式;.vscode/tasks.json 提供 Release/Debug 构建、单元测试、工作区清理四项快捷任务。
  • 构建脚本新增依赖下载选项build.pyBuildManager 中支持 only_down_deps=true 额外参数,在第三方依赖下载完成后提前退出,避免执行完整构建流程。
  • pre-commit 配置调整.pre-commit-config.yamlbandit hook 增加 additional_dependencies: ["bandit[toml]"] 以支持 TOML 配置解析;gitleaks hook 的 entry./gitleaks 改为 gitleaks,依赖容器内系统路径中的二进制文件。
  • 新增 clangd 配置.clangd 文件将 CompilationDatabase 指向 build/ 目录,配合 VS Code clangd 扩展实现准确的代码跳转与补全。
likedislike
atomgit-bot
atomgit-bot成员
8月3日 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
8月3日 添加了label:stat/needs-squash
ascend-robotascend-robot成员
8月3日 添加了label:ascend-cla/yes
此处折叠了108条消息 查看更多
ascend-robotascend-robot成员
8月5日 添加了label:approved
mei-feiyao
mei-feiyao成员
8月5日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
8月5日 添加了label:lgtm
ascend-robotascend-robot成员
8月5日 合入了pull request
ascend-robot
ascend-robot成员
8月5日 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike