感谢你对 Mocha 的关注!本文件说明如何参与项目开发。
Mocha 是一个基于 OpenTelemetry 的 .NET APM 平台,提供统一的 Metrics / Logs / Traces 存储与查询。技术栈为 C# / .NET 8 / ASP.NET Core / gRPC / EF Core。
- .NET 8 SDK(必需)
- Git(必需)
- JDK 17+(仅在构建
Mocha.Antlr4.Generated时需要,用于 ANTLR4 代码生成) - Docker & Docker Compose(用于本地运行集成环境)
本仓库包含子模块(OTLP 协议定义),请使用 --recursive 克隆:
git clone --recursive https://github.com/dotnetcore/mocha.git如果已经克隆但未初始化子模块:
git submodule update --init --recursive# 还原依赖
dotnet restore
# 构建第三方协议生成模块(需先构建)
dotnet build ./src/Mocha.Protocol.Generated
# 构建整个解决方案
dotnet build# 运行所有测试
dotnet test
# 以 Release 配置运行并收集代码覆盖率
dotnet test -c Release --collect:"XPlat Code Coverage"项目使用 .editorconfig 定义代码风格,并通过 dotnet format 强制检查:
# 格式化代码
dotnet format
# 检查是否有格式问题(CI 中使用)
dotnet format --verify-no-changes --verbosity diagnostic使用 Docker Compose 启动完整环境(LiteDB 版本,无需额外数据库):
cd docker
docker-compose up --build -d启动后:
- Distributor(OTLP 接收):
http://localhost:4317 - Query(查询 API):
http://localhost:5775 - Grafana:
http://localhost:3000(用户名/密码:admin / admin)
也可使用 MySQL + InfluxDB 版本:
docker-compose -f docker-compose-mysql-influxdb.yml up --build -dmain— 主分支,保护分支,所有变更通过 PR 合入- 功能分支 — 从
main拉出,命名建议:feat/xxx、fix/xxx、docs/xxx
- Fork 仓库并创建功能分支
- 确保代码通过
dotnet build、dotnet test、dotnet format --verify-no-changes - 提交 PR,描述清楚变更内容与动机
- 通过 CI 检查后,由维护者审核合入
遵循 Conventional Commits 规范:
<type>: <description>
<optional body>
常用类型:
feat— 新功能fix— 缺陷修复refactor— 重构docs— 文档变更test— 测试相关chore— 构建/工具链变更perf— 性能优化ci— CI 配置变更
- 遵循项目根目录的
.editorconfig - 缩进:4 空格
- 最大行宽:120 字符
- 使用
var而非显式类型 - 大括号换行(Allman 风格)
- 系统命名空间优先排序
- 提交 Issue 讨论问题或提出建议
- 参与项目讨论
Mocha 采用 MIT 许可证,详见 LICENSE。