Files
playbook/rulesets/cpp/index.md
T

45 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# C++ 智能体规则集
本规则集定义 AI/自动化智能体在处理 C++ 代码时必须遵守的核心约束。
## 范围与优先级
- 作为仓库级基线规则集使用;更靠近代码目录的规则更具体并可覆盖基线。
- 当智能体规则与 docs 冲突:安全/合规优先,其次保持仓库一致性。
## 智能体工作原则(铁律)
1. 先理解目标与上下文,再动手改代码
2. 修改要小而清晰;避免无关重构
3. 发现安全问题(内存安全/鉴权漏洞)立即标注或修复
4. 不引入新依赖或工具,除非明确要求
## C++ 核心约定(不可违反)
- 使用 C++23,关闭编译器扩展,并固定经过验证的 CMake、编译器和 Conan 2 版本。
- 新增的项目内部组件优先使用 Modules;第三方库、C API、平台接口及工具链不支持的场景允许使用头文件。
- 使用 RAII 管理资源;禁止拥有所有权的裸指针以及直接使用 `new/delete`。非空借用使用引用,可空借用允许使用 `T*`
- 内部字符串和缓冲区优先使用 `std::string``std::string_view``std::span`C 风格接口仅限互操作边界。
- 以项目 `.clang-format` 和命名规则为准;相对 Google C++ Style Guide 的差异属于明确的项目级覆盖。
- 头文件使用 `#pragma once`
- 模块名采用点分 `lower_snake_case`,接口文件使用 `.cppm`
- 新增、删除、移动模块接口文件或改变所属 target 时,更新 CMake `FILE_SET CXX_MODULES`;模块改名时更新全部 `import`
- 提供明确的 Conan build/host profiles 和可复现的 Release/Debug preset,不依赖生成器的隐式命名。
- Windows 必须进行原生 Windows 构建和测试;Linux + Clang 交叉编译仅作为附加验证,并明确目标 ABI 和运行时。
## 权威来源
- 代码风格:`docs/cpp/code_style.md`
- 命名规范:`docs/cpp/naming.md`
- 工具链:`docs/cpp/toolchain.md`
- 依赖管理:`docs/cpp/dependencies_conan.md`
- clangd 配置:`docs/cpp/clangd.md`
## Skills(按需加载)
- `$commit-message`
## 与开发规范的关系
- 规范文档:`docs/cpp/``docs/common/`