发送到 Fuchsia 的所有更改列表都会在 提交前。
检查的类型
语言 linter
linter 会针对各种语言自动运行,并且会留下注释 (在 Gerrit 的 Checks 标签页中)。
提交前工具
一些提交前检查工具是与语言无关的工具, 对更改列表质量的信心增强。
持续排序
keep-sorted 是一个选择启用的 linter,强制将源代码行保留在
按字母顺序排列。可以通过将一个代码块封装到
keep-sorted
start
和 keep-sorted
end
条评论。
例如,以下列表的元素必须包含在 按字母顺序,通过提交前检查强制执行:
a_list = [
# keep-sorted start
"bar",
"baz",
"foo",
# keep-sorted end
]
“保持排序”与语言无关,且支持“#”和“//”评论。
请参阅上游文档 。
keep-sorted 也会由 fx format-code
强制执行。
IfThisThenThat
IfThisThenThat 方法可用于确保 相互保持同步。如果某个文件发生更改,系统会显示警告,告知 其他文件也应在同一更改列表中进行更改。理想情况下,这样的检查 应该不必要,但在需要执行可执行代码时 与配置文件同步。
IfThisThenThat 将留下 warnings,因此不会阻止提交更改列表。
示例
与其他独立运行的提交前检查不同,IFTTT 检查需要
需要手动实现要设置新的 IFTTT 检查,请在
// LINT.IfChange
和 // LINT.ThenChange(<other_file_path>)
的评论
每个文件一起更新
在以下示例中,针对 test.go
和
main.rs
。如果只有一个文件发生更改,Gerrit 中会显示警告。
test.go
import fmt
// LINT.IfChange
fmt.Println("When this block changes, so must main.rs")
// LINT.ThenChange(main.rs)
main.rs
// LINT.IfChange
println!("When this block changes, so must test.go");
// LINT.ThenChange(test.go)
请注意,对于 Markdown 文件,结构必须用注释封装, Markdown 会忽略语法。
<!--
// LINT.IfChange
-->
Block to be changed.
<!--
// LINT.ThenChange(test.go)
-->
IfThisThenThat 支持绝对文件路径(以 /
开头的路径),以及
相对路径(不以 /
开头的路径)。
如果 LINT.IfChange/ThenChange
指令中的文本发生了更改,那么也会发生这种变化
它必须与指向的另一个文件相同。文件应始终使用 LINT 标记
指令。单向指令意味着
可能会无法与其他文件同步。
如果违反了 IfThisThenThat 指令,则 CL 中会有一条注释:
该警告也会显示在 Checks 标签页中: