凡是傳送到 Fuchsia 的變更清單,都會經過一系列的靜態分析檢查 預先提交。
檢查類型
語言 Linter
系統會自動為不同語言提供 Linter,並留下評論 Gerrit 的「Checks」分頁。
預先提交工具
有些預先提交的檢查工具為不用語言差異的檢查工具 變更清單品質的可信度更高。
不排序
「保持排序」是一種選擇啟用的 Linter,會強制將原始碼程式碼保存在
依字母順序排列只需將程式碼區塊包裝
keep-sorted
start
及 keep-sorted
end
則註解。
舉例來說,下列清單的元素必須位於 由預先提交的檢查所強制執行的字母順序:
a_list = [
# keep-sorted start
"bar",
"baz",
"foo",
# keep-sorted end
]
保持排序功能適用於無語言隔閡,且支援「#」和「//」留言。
請參閱上游說明文件 。
經過排序也會由 fx format-code
強制執行。
IfThisThenThat
若這就是檢查,可用來確保與此工具共同變更的檔案 讓另一個應用程式保持同步當檔案變更時,系統會發出警告,表示 同一變更清單中的其他檔案也應該變更。理想情況下 產生這類程式碼時,可能會在需要 與設定檔保持同步
如果這會導致 warning,也不會封鎖變更清單提交作業。
範例
不同於其他獨立作業的預先提交檢查,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)
-->
如果 ThisNowThat 支援絕對檔案路徑 (以 /
開頭的檔案),且
相對路徑 (開頭不是 /
)。
如果 LINT.IfChange/ThenChange
指令中的文字經過變更,系統也會一併變更
都必須對應至指向的其他檔案檔案必須一律具有 LINT
指令。單向指令
可能會失去另一個檔案的同步處理作業。
若違反 IfThisAfterThat 指令,會在 CL 留下註解:
「Checks」分頁也會顯示警告: