一个高性能的基于C++和WebSocket的聊天系统,支持多用户实时通信、消息持久化、日志记录和完整的测试套件。
- 🚀 实时通信: 基于WebSocket的多用户实时聊天
- 📝 消息持久化: 自动保存聊天历史记录
- 📊 日志记录: 完整的消息和系统日志
- 🖥️ 命令行客户端: 简洁的CLI界面
- 🔒 内存安全: 集成AddressSanitizer内存泄漏检测
- 🧪 单元测试: 基于Google Test的完整测试套件
- 📈 测试管理: JIRA/Xray集成,支持测试用例管理和报告
- 🔍 内存泄漏检测: Valgrind兼容的内存测试
- 📦 现代化构建: CMake构建系统,C++17标准
ChatCpp/
├── src/ # 源代码目录
│ ├── client/ # 客户端实现
│ ├── server/ # 服务器实现
│ └── common/ # 公共组件
├── tests/ # 测试文件
├── test-management/ # 测试管理
│ ├── reports/ # 测试报告
│ ├── test-cases/ # 测试用例
│ ├── test-executions/ # 测试执行记录
│ └── test-plans/ # 测试计划
├── scripts/ # 构建和测试脚本
├── config/ # 配置文件
└── build/ # 构建输出目录 (自动生成)
- 操作系统: Linux/macOS/Windows (WSL2推荐)
- 编译器: GCC 7+ / Clang 5+ / MSVC 2019+
- 构建工具: CMake 3.10+
- OpenSSL: WebSocket加密通信 (可选)
- Threads: POSIX线程支持
- Google Test: 单元测试框架 (自动下载)
git clone git@github.com:HeZ2z/ChatCpp.git
cd ChatCpp# 创建构建目录
mkdir build && cd build
# 配置项目
cmake ..
# 编译项目
make -j$(nproc)mkdir build_asan && cd build_asan
cmake -DENABLE_ASAN=ON ..
make -j$(nproc)mkdir build_leak && cd build_leak
cmake -DENABLE_ASAN=OFF -DENABLE_MEMORY_LEAK_TEST=ON ..
make -j$(nproc)# 在构建目录中运行所有测试
ctest --output-on-failure
# 或直接运行测试可执行文件
./chat_tests# 运行测试并生成Xray报告
python3 scripts/run_tests_xray.py
# 生成Xray兼容的测试报告
python3 scripts/generate_xray_report.py注意: 当前版本主要包含测试套件,完整聊天功能正在开发中。
cd build
./chat_tests --gtest_output=xml:test_results.xmlcd build_leak
valgrind --leak-check=full --show-leak-kinds=all ./chat_tests- VS Code: 推荐使用C++扩展
- CLion: 原生CMake支持
- Cursor: AI辅助开发环境
- 使用C++17标准
- Google C++代码风格
- 启用所有编译器警告
项目包含以下测试类型:
- 单元测试: 消息处理、日志记录、历史记录
- 内存测试: AddressSanitizer和Valgrind集成
- 集成测试: WebSocket通信测试 (开发中)
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 所有代码都需要单元测试
- 确保通过所有CI检查
- 更新相关文档
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如果您有问题或建议:
构建失败
- 确保安装了CMake 3.10+
- 检查编译器是否支持C++17
测试失败
- 确保所有依赖都正确安装
- 检查构建配置是否正确
内存泄漏检测
- AddressSanitizer构建用于开发环境
- Valgrind用于生产环境内存分析
- 使用
-DENABLE_ASAN=ON启用内存检测 - 查看
test-management/reports/中的测试报告 - 检查构建日志中的详细错误信息
开发状态: 🚧 核心功能开发中 - 欢迎贡献!