# 源代码管理
# 分支模式
PX4 项目使用三分支的 Git 分支模式:
- 主要 (打开新窗口) 不稳定,发展迅速。
- 测试版 (打开新窗口) 已经过全面测试。它专为飞行测试人员设计。
- 稳定 (打开新窗口) 指向上次发布的版本。
我们尽量保留 通过重建线性历史 (打开新窗口) 并避免 Github 流程 (打开新窗口).不过,由于团队遍布全球,开发速度很快,我们有时可能会采用合并的方式。
贡献新功能、 注册 Github (打开新窗口)那么 分叉 (打开新窗口) 存储库、 创建新分支 (打开新窗口)添加您的 修改为提交最后 发送拉取请求.当修改通过我们的 持续集成 (打开新窗口) 测试。
所有代码贡献都必须在允许的 BSD 3 条款许可证 (打开新窗口) 所有代码都不得对使用施加任何进一步的限制。
# 代码风格
PX4 使用 谷歌 C++ 风格指南 (打开新窗口)并作以下(最小)修改:
备注
并非所有 PX4 源代码都符合风格指南,但任何 新代码 在新文件和现有文件中,您编写的代码都应符合风格指南的要求。如果您更新了现有文件,则不需要使整个文件都符合风格指南,只需修改代码即可。
# 标签
- 制表符用于缩进(相当于 8 个空格)。
- 空格用于对齐。
# 线路长度
- 行最长为 120 个字符。
# 文件扩展名
- 源文件使用扩展名
*.cpp
而不是*.cc
.
# 函数和方法名称
lowerCamelCase()
的函数和方法 视觉上 区别于类构造函数()
和类名
.
# 类隐私关键字
- 零 前空格
公众:
,私人
或受保护:
关键词:
# 示例代码片段
类 我的类 {
公:
/** * @brief Description of what this function does.* @param[in] input_param 输入[单位]的清晰描述 * @return 无论我们返回什么[单位] */
浮动 做某事(缢 浮动 输入参数) 缢 {
缢 浮动 扫描变量 = 输入参数 + kConstantFloat;
返回 扫描变量 * 私有成员变量;
}
空白 设置私有成员(缢 浮动 成员变量) { 私有成员变量 = 成员变量; }
/** * @return 无论我们得到什么[单位] */
浮动 获取私有成员() 缢 { 返回 私有成员变量; }
私人:
// 如果常量的名称不十分明显,则对常量进行清晰的描述[单位]
天电 常式 浮动 kConstantFloat = ...;
// 如果从名称中无法完全看出变量,则对变量进行清晰的描述 [单位]
浮动 私有成员变量{...};
};
# 源文件
鼓励 PX4 开发人员创建适当的源码内文档。
备注
源代码文档标准没有得到执行,目前的代码文档不一致。我们希望做得更好!
目前,我们有两种基于源代码的文档:
PRINT_MODULE_*
方法用于模块运行时的使用说明和 模块和命令参考 在本指南中。- 该应用程序接口已记录在案 在这里的源代码中 (打开新窗口).
- 良好的使用范例包括 应用程序/模块模板 以及模块参考中链接的文件。
我们鼓励其他源文件 增加价值/不多余.
TIP
开发人员应为 C++ 实体(类、函数、变量等)命名,以便能推断出它们的用途,从而减少对明确文档的需求。
- 不要添加可从 C++ 实体名称推断出的文档。
- 在定义变量、常量和输入/返回参数时,一定要指定其单位。
- 通常情况下,您可能需要添加有关拐角情况和错误处理的信息。
- 哆可梦 (打开新窗口) 如果需要记录,应使用标记:
@ 类
,@ 文件
,@ 参数
,@return
,@brief
,@var
,@see
,注
.一个很好的使用例子是 src/modules/events/send_event.h (打开新窗口).
请避免使用"神奇数字",例如,条件中的这个数字从何而来?偏航杆输入的乘数是多少?
如果 (fabsf(偏航杆归一化输入) <; 0.1f) {
偏航速率设定点 = 0.0f;
}
不然 {
偏航速率设定点 = 0.52f * 偏航杆归一化输入;
}
取而代之的是,将数字定义为命名常量,并在标题中注明适当的上下文:
// 正常化偏航杆输入的死区阈值
天电 常式 浮动 kYawStickDeadzone = 0.1f;
// [rad/s] 正常化偏航杆输入的死区阈值
天电 常式 浮动 k 最大偏航速率 = 算术::弧度(30.0f);
并更新源代码实现。
如果 (fabsf(偏航杆归一化输入) <; kYawStickDeadzone) {
偏航速率设定点 = 0.0f;
}
不然 {
偏航速率设定点 = k 最大偏航速率 * 偏航杆归一化输入;
}
# 提交和提交信息
请对所有非小改动使用描述性的多段提交信息。请合理安排提交信息的结构,使其既能在单行摘要中说明问题,又能提供完整的细节。
组成部分:用一句话解释更改。修正 #1234 在摘要行的开头加上软件组件的前缀,可以是模块名称或描述。(例如,"mc_att_ctrl"或 "多旋翼飞行器姿态控制")。如果问题编号被附加为<Fixes #1234>,Github 将在提交合并到主分支时自动关闭该问题。邮件正文可以包含几个段落。详细描述您修改的内容。链接与此修复或此提交的测试结果相关的问题和飞行日志。描述更改内容和更改原因,避免照搬代码更改内容(好:为 GPS 接收质量低的载具添加额外的安全检查"。坏:"添加 gps_reception_check() 函数")。Reported-by: Name <[email protected]>;
使用 git commit -s
签署所有提交。 这将增加 签署:
最后一行是您的姓名和电子邮件。
本提交指南以 Linux 内核和其他系统的最佳实践为基础。 维护的项目 (打开新窗口) 作者:Linus Torvalds
# 拉取请求
Github 拉取请求(PR) (打开新窗口) 是向 PX4 提交新功能和错误修复的主要机制。
其中包括一套新的 承诺 分支(相对于主分支)中的改动,以及对改动的描述。
说明应包括
- 概述更改的内容;足以了解代码的主要目的
- 相关问题或辅助信息的链接。
- 有关 PR 功能测试的信息,以及飞行日志链接。
- 在可能的情况下,一般 试飞 变化之前和之后。