copilot-instructions.md 1.9 KB

概述

RyanMqtt是一个严格遵循 MQTT 3.1.1 协议标准实现的客户端库,专为资源受限的嵌入式设备设计并优化。

目录结构

  • /common: RyanMqtt需要的链表和log组件
  • /coreMqtt: MQTT 协议序列化与反序列化
  • /docs: md文件的图片和MQTT3.1.1文档
  • /example: 基于RT-Thread平台的msh测试例程
  • /mqttclient: RyanMqtt核心源码实现
  • /platform: RyanMqtt的跨平台兼容层
  • /test: RyanMqtt的测试文件

代码审查指南

语言要求

在审查代码时,请同时使用英文和中文提供反馈,以确保所有贡献者都能理解。

审查重点领域

  • 严格遵循 MQTT3.1.1 协议标准
  • 检查内存泄漏、缓冲区管理、内存分配与释放
  • 检查 RTOS 环境下的线程安全问题
  • 检查语法错误和异常处理
  • 代码执行效率与性能
  • 代码风格一致性
  • 重点审查 common、coreMqtt、mqttclient、platform文件夹使用严格模式,test文件夹只需保证程序正常运行不要使用严格模式

常见问题检查

  • 缺少的错误处理 / 不当的错误传播 / 静默失败
  • 对外开放的公共API是否具备完善的校验
  • 模块解耦和抽象是否合理
  • 代码的性能问题

RyanMqtt内部实现参考

  • RyanMqtt内部使用msg链表管理订阅主题列表,使用ack链表存储QOS等级的ack消息。
  • Qos2实现使用MQTT3.1.1手册推荐的方法B
  • RyanMqtt心跳使用1.5倍时间,当心跳周期到达设置的0.9倍后会发送心跳包,如果超过1.5倍就通知用户断开连接

代码格式

  • 可以使用中文进行注释
  • 所有代码须符合项目 .clang-format 配置

最佳实践

  • 始终考虑嵌入式约束,有限的RAM和ROM,资源利用效率
  • 优化内存管理,保证高效和实时性
  • 关注模块解耦和可维护性