无论您是添加损失函数、改进测试覆盖率,还是为重大设计变更编写 RFC,本部分贡献者指南将帮助您入门。感谢您为改进 TensorFlow 所做的工作和贡献。
开始之前
在您为 TensorFlow 项目贡献源代码之前,请查看项目 GitHub 存储库中的 CONTRIBUTING.md
文件。例如,请查看核心 TensorFlow 存储库中的 CONTRIBUTING.md 文件。所有代码贡献者都需要签署 贡献者许可协议 (CLA)。
为了避免重复工作,请在开始处理非平凡功能之前,查看 当前 或 提议 的 RFC,并与 TensorFlow 论坛上的开发者联系 ([email protected])。我们对添加新功能的选择性比较高,而帮助项目的最佳方式是解决已知问题。
面向新贡献者的问题
新贡献者在搜索首次贡献到 TensorFlow 代码库时,应该寻找以下标签。我们强烈建议新贡献者首先处理“良好入门问题”和“欢迎贡献”项目;这有助于贡献者熟悉贡献工作流程,并让核心开发人员了解贡献者。
如果您有兴趣招募团队来帮助解决大型问题或新功能,请发送电子邮件到 developers@ 组 并查看我们当前的 RFC 列表。
代码审查
新功能、错误修复以及对代码库的任何其他更改都需进行代码审查。
审查作为拉取请求贡献到项目的代码是 TensorFlow 开发的关键组成部分。我们鼓励任何人都可以开始审查其他开发者提交的代码,尤其是当该功能是您可能使用的功能时。
以下是一些在代码审查过程中需要注意的问题
- 我们是否希望将此功能添加到 TensorFlow 中? 该功能是否可能被使用?作为 TensorFlow 用户,您是否喜欢此更改并打算使用它?此更改是否在 TensorFlow 的范围内?维护新功能的成本是否值得其带来的益处?
- 代码是否与 TensorFlow API 一致? 公共函数、类和参数的命名是否合理且设计直观?
代码是否包含文档? 所有公共函数、类、参数、返回类型和存储属性的命名是否符合 TensorFlow 约定,并有清晰的文档说明?新功能是否在 TensorFlow 的文档中进行了描述,并在可能的情况下通过示例进行了说明?文档是否可以正常渲染?
代码是否易于阅读? 代码是否冗余度低?变量名称是否需要改进以提高清晰度或一致性?是否需要添加注释?是否需要删除任何无用或多余的注释?
代码是否高效? 代码是否可以轻松地重写以提高效率?
代码是否与 TensorFlow 的先前版本向后兼容?
新代码是否会添加对其他库的新依赖项?
测试和改进测试覆盖率
高质量的单元测试是 TensorFlow 开发流程的基石。为此,我们使用 Docker 镜像。测试函数的命名应适当,并负责检查算法的有效性以及代码的不同选项。
所有新功能和错误修复必须包含足够的测试覆盖率。我们也欢迎贡献新的测试用例或改进现有测试。如果您发现我们现有的测试不完整(即使这目前不会导致错误),请提交问题,如果可能,请提交拉取请求。
有关每个 TensorFlow 项目中测试程序的具体细节,请参阅 GitHub 上项目存储库中的 README.md
和 CONTRIBUTING.md
文件。
在充分测试中,特别需要注意以下问题
- 每个公共函数和类是否都经过测试?
- 是否测试了合理的参数集、其值、值类型和组合?
- 测试是否验证了代码的正确性,以及代码是否按照文档说明执行了预期功能?
- 如果更改是错误修复,是否包含非回归测试?
- 测试是否通过了持续集成构建?
- 测试是否覆盖了每一行代码? 如果没有,异常是否合理且明确?
如果您发现任何问题,请考虑帮助贡献者了解这些问题并解决它们。
改进错误消息或日志
我们欢迎改进错误消息和日志的贡献。
贡献工作流程
代码贡献,包括修复 bug、新功能开发和测试改进,都遵循以 GitHub 为中心的流程。要参与 TensorFlow 开发,请先创建一个 GitHub 账号。然后:
Fork 你想要参与的仓库。前往项目仓库页面,点击“Fork”按钮。这将在你的用户名下创建一个仓库副本。(有关如何 fork 仓库的更多信息,请参阅 此指南。)
将仓库克隆到你的本地系统。
$ git clone [email protected]:your-user-name/project-name.git
创建一个新分支来存放你的工作。
$ git checkout -b new-branch-name
编写新的代码并运行测试。
提交你的更改。
$ git add -A
$ git commit -m "commit message here"
将你的更改推送到你的 GitHub 仓库。
$ git push origin branch-name
打开一个“Pull Request”(PR)。前往 GitHub 上的原始项目仓库。你将看到一条关于你最近推送的分支的消息,询问你是否要打开一个 Pull Request。按照提示操作,选择“跨仓库比较”,并提交 PR。这将向提交者发送一封电子邮件。你可能需要考虑向邮件列表发送一封电子邮件,以提高可见度。(有关更多信息,请参阅 GitHub 关于 PR 的指南。)
维护者和其他贡献者将“审查你的 PR”。请参与讨论,并尝试“进行所有请求的更改”。PR 被批准后,代码将被合并。
在开始你的下一个贡献之前,请确保你的本地仓库是最新的。
设置上游远程仓库。(你只需要对每个项目执行一次,而不是每次都执行。)
$ git remote add upstream [email protected]:tensorflow/project-repo-name
切换到本地 master 分支。
$ git checkout master
从上游拉取更改。
$ git pull upstream master
将更改推送到你的 GitHub 账号。(可选,但建议这样做。)
$ git push origin master
如果你要开始新的工作,请创建一个新分支。
$ git checkout -b branch-name
其他 git
和 GitHub 资源
贡献者清单
- 阅读 贡献指南。
- 阅读 行为准则。
- 确保你已签署 贡献者许可协议 (CLA)。
- 检查你的更改是否与 指南 一致。
- 检查你的更改是否与 TensorFlow 代码风格 一致。
- 运行单元测试.