ian-fisher-developer/vscode-cpp-dev-tools

GitHub: ian-fisher-developer/vscode-cpp-dev-tools

基于 Docker 容器化的 VSCode C++ 开发环境模板,预配置了代码静态分析、内存检测和变异测试等全套质量保障工具链。

Stars: 0 | Forks: 0

# VSCode C++ 开发工具 一个面向 Linux 的 VSCode C++ 开发环境,配备了丰富的 注重质量的工具。 ## 简介 VSCode 用户都知道该应用程序具有高度的可扩展性和灵活性。他们也 明白,要发现所有配置 VSCode 的工具和技巧并非易事。本仓库 提供了一个高度集成的 VSCode 环境,专用于在 Linux 上进行 注重质量的 C++ 开发。 一个 C++ 统计累加器类有助于展示该环境的特性。该类类似于 Boost 的统计累加器,但无需依赖 Boost。代码本身并不是本仓库的 重点。它的作用是演示将 VSCode 打造为功能丰富的 C++ IDE 所需的 大量额外配置。这些大量的额外配置才是本仓库的核心所在。它可以 作为新的 VSCode C++ 项目的模板。 使用其他 IDE,甚至是命令行进行开发的用户,可能会对本项目中的 某些部分感兴趣。例如,用于变异测试和代码 sanitizers 的自定义构建 任务是由脚本驱动的,这些脚本可以轻松移植到其他 C++ 开发环境中。 请按照下面的分步说明试用该环境。 ![展示 C++ 开发环境的 VSCode 屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/87aa526f92233958.jpg) ## 使用环境 这些说明假定您在 Linux 上工作,并且已经安装了 VSCode、git、docker.io 和 docker-compose。此外,还假定您拥有一个 GitHub 账户并注册了 SSH 密钥,以便您可以克隆此仓库并在 VSCode 中打开它。 ``` git clone git@github.com:ian-fisher-developer/vscode-cpp-dev-tools.git cd vscode-cpp-dev-tools code . ``` ### 在容器中重新打开 该环境使用了 VSCode 的 DevContainer 功能。从 `View` 菜单中选择 `Command Palette`,然后搜索 `Reopen in Container` 命令。请注意, 仅首次使用时,VSCode 构建 Docker 镜像可能需要一些时间。请检查您是否 已正确进入 DevContainer 环境: - 左下角的远程窗口指示器应亮起蓝色并 显示“Dev Container: STATS” - 左侧的扩展垂直列表中应包含该环境 指定的额外项目,例如 GitLens 和 CMake Tools - 底部的状态栏应显示多个扩展控件, 尤其是针对 CMake 的控件。 ### 开始工作 当 DevContainer 会话准备就绪后,请按照以下步骤体验该环境的 C++ 开发功能。 - **配置构建** CMake Tools 扩展在 VSCode 状态栏中提供了一个构建套件选择器。 选择 GCC 11.4.0。该扩展会将 CMake 的配置步骤运行到 build/build-vscode-cmake-tools 目录中。 - **构建所有目标并使用测试资源管理器** 选择 `all` 构建目标(在状态栏选择器中)。 注意一个陷阱...状态栏可能同时具有 `default build target` 和 `default launch target` 选择器。它们很容易混淆。在此,我们要设置的是构建目标。 按下构建按钮以创建库、单元测试程序和示例程序。打开测试资源管理器侧边栏以查看并运行单元测试。 测试资源管理器提供了运行所有测试、测试子组或单个测试的控件。当通过其 Continuous Run(持续运行)功能重新构建测试程序时,它可以自动重新运行所有/子组/单个测试。请注意,在上面的屏幕截图中,测试资源管理器被移到了 VSCode 右侧的次要侧边栏。 - **试用代码编辑器** 从文件资源管理器中打开 src/lib/StatisticsAccumulator.cpp。 代码编辑器为当前行提供了 git blame 功能。将鼠标悬停在简短的 内联描述上,即可弹出更详细的信息。 注意 linter(clang-tidy)的“波浪线”建议。将鼠标悬停在故意错误命名的变量 'dVal' 上,可获取更多信息以及针对违反项目代码命名约定的“fixit”修复方案。 来自 LLVM 项目的 clangd 扩展提供了完整的 C++ 代码模型, 从而实现了许多代码编辑辅助功能,例如代码补全选项。请注意, VSCode 倾向于默认安装 GitHub Copilot。AI 的非确定性内联建议 可能会造成干扰。Copilot 的菜单(位于状态栏右下角)提供了切换开关, 您可以将其关闭,以便回归到来自代码模型的准确信息。 Ctrl-S 会根据项目标准自动格式化 C++ 和 CMake 文件。 - **检查代码覆盖率** 从 `all` 切换到 `statistics_coverage_report` 目标并进行构建。 从编辑器的右键上下文菜单中选择 Coverage Gutters: Preview Coverage Report 以浏览 [HTML 报告][1]。 从编辑器的右键上下文菜单中选择 Coverage Gutters: Watch,以在 C++ 代码编辑器中通过行号旁边的 彩色条形式添加覆盖率注释。 - **测试测试用例** 自定义构建任务为项目提供了[变异测试][2]功能,有助于 发现测试中的漏洞,即使代码覆盖率全部显示为绿色也是如此。 从 VSCode 的 `Terminal` 菜单中选择 `Run Build Task`,通过 应用无差异过滤器来创建[完整的变异测试报告][3]。 - **检查内存泄漏** 自定义构建任务在 valgrind 下运行单元测试程序,并将结果 记录到一份 [valgrind 报告][4] 中。 从 VSCode 的 `Terminal` 菜单中选择 `Run Build Task` 以执行该任务。 - **使用代码 sanitizers** 自定义构建任务使用编译器的 sanitize 标志创建了一份 sanitizer 测试报告。它提供了 address sanitizer 和 undefined-behavior sanitizer 的选项。 从 VSCode 的 `Terminal` 菜单中选择 `Run Build Task` 以执行该任务。 创建一份 [address sanitizer][5] 报告和一份 [undefined-behavior sanitizer][6] 报告。它会使用相应的 sanitizer 标志构建项目的 代码,然后运行单元测试程序。如果 发现任何问题,插桩后的代码会将其写入日志文件中。
标签:Bash脚本, Boost 替代, C++, C++ 最佳实践, C++ 统计累积器, DevContainer, Docker, SamuraiWTF, VSCode, VSCode 扩展, 云安全监控, 代码 sanitizer, 变异测试, 威胁情报, 安全防御评估, 容器化开发, 工具链, 开发环境, 开发者工具, 搜索语句(dork), 教程, 数据擦除, 模板, 编译器, 脚本自动化, 请求拦截, 质量保证, 跨平台开发, 远程开发, 集成开发环境, 静态分析