Skip to content
 编辑

How to contribute to syzkaller

如何为 syzkaller 项目做贡献

如果你想为本项目做出贡献,请按照下面的指南提交拉取请求。

如果这是你第一次向 syzkaller 提交拉取请求,你需要签署 Google CLA, 并在第一次提交时将自己添加到 AUTHORS/CONTRIBUTORS 文件中。

工作内容

扩展/改进 系统调用描述 一直是个好主意。

错误跟踪器 中未分配的议题是值得去做的,但其中有些议题可能比较复杂。

要贡献代码或系统调用描述,你至少需要能够构建并运行 syzkaller,请参阅此处的说明。

指南

如果您想做一些并不微小的事情,请先在 syzkaller@googlegroups.com 邮件列表上简要描述,以便在高层面的方法/设计上达成一致,且避免贡献者之间的重复工作。

将大改动拆分成逻辑上连贯的小提交。小的提交更容易、更快地进行审核和迭代。

所有可以合理测试的内容都应进行测试。

为了其他用户能方便地使用新特性,请提供足够的文档说明。

保持代码、测试、注释、文档、日志/错误信息的风格与现有风格一致。

持续集成(CI)系统会运行大量测试和一些 [意见] 式检查。它们需要通过。你可以使用 make presubmit 进行本地测试,如果没有安装某些先决条件,你可以尝试使用 syz-env (见下文)。

提交

提交信息应遵循以下模板:

dir/path: 单行描述
<空行>
扩展的多行描述,包括
您要解决的问题以及如何解决问题。

dir/path 是本次提交更改的主目录的相对路径(参见 提交历史 中的示例)。如果多个软件包/目录发生重大改动,则允许使用以下格式:

dir1/path1, dir2/path2: 单行描述

不过,如果目录仅有细微改动,则不应包括在内。 对于普遍的更改,可以使用以下格式:

all: 单行描述

请注意标点符号,特别是:

提交信息行长度限制为 120 个字符。

还有:

拉取请求

如何在 Github 上创建一个拉取请求

这会将您的仓库添加到 git origin my-origin,并基于 master 分支创建并切换新的分支 my-branch

使用 syz-env

开发 syzkaller 需要安装大量工具(Go 工具链、C/C++ 交叉编译器、golangci-lint 等)。安装所有这些工具可能会很麻烦,例如由于软件包损坏/缺失。syz-env 提供了一个基于 Docker 容器的密封开发环境。如果尚未安装 Docker,请参阅文档,特别是关于启用 sudo-less 的 Docker(Googlers 参见 go/docker)。

建议为 syz-env 脚本创建别名:

alias syz-env="$(go env GOPATH)/src/github.com/google/syzkaller/tools/syz-env"

然后,几乎所有的 make 调用都可以用它来封装:

syz-env make format
syz-env make presubmit
syz-env make extract SOURCEDIR=$(readlink -f ~/linux)

或其他命令/脚本,例如:

syz-env go test -short ./pkg/csource

或者,你也可以只使用 syz-env 来在容器内运行 shell 并查看。

要将 syz-env 容器更新到最新版本,请执行以下操作:

docker pull gcr.io/syzkaller/env

如果你无法访问 gcr.io 登记处,在 docker.pkg.github.com 登记处中也有一个镜像。要使用它,你需要使用你的 Github 账户来验证 Docker

docker login https://docker.pkg.github.com

然后拉取镜像,并将其重新标记为 syz-env 所期望的名称:

docker pull docker.pkg.github.com/google/syzkaller/env
docker tag docker.pkg.github.com/google/syzkaller/env gcr.io/syzkaller/env

译自: https://github.com/google/syzkaller/blob/master/docs/contributing.md

选题: jxlpzqc   译者: QGrain   校对: mudongliang    发布者:mudongliang

本文由 HCTT 翻译团队 原创翻译,华中科技大学开放原子开源俱乐部荣誉推出。