跳至内容

源代码管理

分支模式

PX4 项目使用三分支的 Git 分支模式:

  • 主要 不稳定,发展迅速。
  • 测试版 已经过全面测试。它专为飞行测试人员设计。
  • 稳定 指向上次发布的版本。

我们尽量保留 通过重建线性历史 并避免 Github 流程.不过,由于团队遍布全球,开发速度很快,我们有时可能会采用合并的方式。

贡献新功能、 注册 Github那么 分叉 存储库、 创建新分支添加您的 修改为提交最后 发送拉取请求.当修改通过我们的 持续集成 测试。

所有代码贡献都必须在允许的 BSD 3 条款许可证 所有代码都不得对使用施加任何进一步的限制。

代码风格

PX4 使用 谷歌 C++ 风格指南并作以下(最小)修改:

信息

并非所有 PX4 源代码都符合风格指南,但任何 新代码 在新文件和现有文件中,您编写的代码都应符合风格指南的要求。如果您更新了现有文件,则不需要使整个文件都符合风格指南的要求,只需要使您修改的代码符合风格指南的要求即可。

标签

  • 制表符用于缩进(相当于 8 个空格)。
  • 空格用于对齐。

线路长度

  • 行最长为 120 个字符。

文件扩展名

  • 源文件使用扩展名 *.cpp 而不是 *.cc.

函数和方法名称

  • lowerCamelCase() 的函数和方法 视觉上 区别于 类构造函数()类名.

私有类成员变量名称

  • 蛇形前缀_underscore_snake_case 用于私有类成员变量名,而不是 下划线_后缀_.

类隐私关键字

  • 前空格 公众:, 私人受保护: 关键词:

示例代码片段

cpp
 我的类 {
公众:

        /**
         * @brief 说明该功能的作用。
         *
         * @ 参数[] 输入参数 输入[单位]的明确说明
         * @return 无论我们返回的是什么[单位]
         */
        浮动 做某事( 浮动 输入参数)  {
 浮动 扫描变量 = 输入参数 + kConstantFloat;
                返回 扫描变量 * _private_member_variable;
        }

        空白 设置私有成员( 浮动 成员变量) { _private_member_variable = private_member_variable; }

        /**
         * @return 无论我们得到什么[单位]
         */
        浮动 获取私有成员()  { 返回 _private_member_variable; }

私人

        // 如果常量的名称不十分明显,则对常量进行清晰的描述[单位]
        天电 常式 浮动 kConstantFloat = ...;

        // 如果从名称中无法完全看出变量,则对变量进行清晰的描述 [单位]
        浮动 _private_member_variable{...};
};

源文件

鼓励 PX4 开发人员创建适当的源码内文档。

信息

源代码文档标准没有得到执行,目前代码文档不统一。我们希望做得更好!

目前,我们有两种基于源代码的文档:

  • PRINT_MODULE_* 方法用于模块运行时的使用说明和 模块和命令参考 在本指南中。

  • 我们鼓励其他源文件 增加价值/不多余.

    TIP

    开发人员应为 C++ 实体(类、函数、变量等)命名,以便能推断出它们的用途,从而减少对明确文档的需求。

    • 不要添加可从 C++ 实体名称推断出的文档。
    • 在定义变量、常量和输入/返回参数时,一定要指定其单位。
    • 通常情况下,您可能需要添加有关拐角情况和错误处理的信息。
    • 哆可梦 如果需要记录,应使用标记: @ 类, @ 文件, @ 参数, @return, @brief, @var, @see, .一个很好的使用例子是 src/modules/events/send_event.h.

请避免使用"神奇数字",例如,条件中的这个数字从何而来?偏航杆输入的乘数是多少?

cpp
如果 (fabsf(yaw_stick_normalized_input) <; 0.1f) {
        偏航速率设定点 = 0.0f;
}
不然 {
        偏航速率设定点 = 0.52f * yaw_stick_normalized_input;
}

取而代之的是,将数字定义为命名常量,并在标题中注明适当的上下文:

cpp
// 正常化偏航杆输入的死区阈值
天电 常式 浮动 kYawStickDeadzone = 0.1f;

// [rad/s] 正常化偏航杆输入的死区阈值
天电 常式 浮动 k 最大偏航速率 = 算术::弧度(30.0f);

并更新源代码实现。

cpp
如果 (fabsf(yaw_stick_normalized_input) <; kYawStickDeadzone) {
        偏航速率设定点 = 0.0f;
}
不然 {
        偏航速率设定点 = k 最大偏航速率 * yaw_stick_normalized_input;
}

提交和提交信息

对所有非小改动使用描述性的多段提交信息。合理安排提交信息的结构,使其既能在单行摘要中说明问题,又能提供完整的细节。

平实
组成部分:用一句话解释更改。修正 #1234

在摘要开头预置软件组件
行的模块名称或描述。
(例如 "mc_att_ctrl" 或 "multicopter attitude controller")。

如果问题编号被附加为 <修复 #1234>,Github
会自动关闭该问题。
合并到了主分支。

邮件正文可以包含几个段落。
详细描述您所做的更改。链接问题和航班
与此修复或测试结果有关的日志
的提交。

说明更改内容和更改原因,避免出现以下情况
转述代码更改(好:"增加了一个额外的
对 GPS 接收质量低的载具进行安全检查"。
Bad: "Add gps_reception_check() function").

报告人:姓名 <[email protected]>;

使用 git commit -s 签署所有提交。 这将增加 签署: 最后一行是您的姓名和电子邮件。

本提交指南以 Linux 内核和其他系统的最佳实践为基础。 维护的项目 作者:Linus Torvalds

拉取请求

Github 拉取请求(PR) 是向 PX4 提交新功能和错误修复的主要机制。

其中包括一套新的 承诺 分支(相对于主分支)中的改动,以及对改动的描述。

说明应包括

  • 概述更改的内容;足以了解代码的主要目的
  • 相关问题或辅助信息的链接。
  • 有关 PR 功能测试的信息,以及飞行日志链接。
  • 在可能的情况下,一般 试飞 变化之前和之后。