本文說明可使用哪些程式庫,在 Rust 中寫入及讀取 Inspect 資料。如需各程式庫的專屬說明文件,請參閱各節連結的 Crate 說明文件。
用於編寫檢查作業的程式庫
fuchsia-inspect
這是核心程式庫。這個程式庫提供核心 API,用於建立節點、屬性、提供檢查服務等。在內部,這個程式庫會實作「檢查 VMO 格式」一文所述的夥伴分配演算法。
如要瞭解檢查概念和 Rust 程式庫,請參閱程式碼研究室。
inspect-runtime
這個程式庫可讓元件提供檢查服務,並供 Archivist 收集。
它僅供元件二進位檔案使用,不適用於庫檔案。這是因為這個程式庫提供 expect_includes 檢查,可驗證元件資訊清單是否已設定為公開檢查。
請避免從程式庫依附 inspect-runtime,以免測試被迫新增檢查 client.shard.cml。
fuchsia-inspect-contrib
這個程式庫提供 Inspect 用戶提供的較高層級模式和公用程式,可簡化常見的記錄和資料結構:
有界事件記錄:
BoundedListNode管理子節點的固定容量先進先出清單,並在清單已滿時自動清除較舊的項目。記錄含時間戳記的事件:
inspect_log!巨集會將結構化事件記錄到BoundedListNode,並自動插入@time啟動時間戳記。時間屬性:
NodeTimeExt提供便利的方法,可在檢查節點上記錄及管理啟動和單調時間戳記。診斷快取:
LruCacheNode和DedupeLogNode可協助快取及重複資料刪除診斷資料。
fuchsia-inspect-derive
這個程式庫提供便利的方式,透過 #[derive(Inspect)] 程序巨集管理 Rust 程式中的檢查資料。這項功能的運作層級高於 fuchsia-inspect。
如要進一步瞭解這個程式庫,請參閱「Ergonomic Inspect」。
用於讀取檢查結果的程式庫
這些程式庫並非 Inspect 專用,而是用於各種診斷資料。
diagnostics-hierarchy
這個程式庫包含方便測試的巨集 assert_data_tree,以及 DiagnosticsHierarchy 的定義 (不限於檢查,也用於記錄和其他診斷資料來源)。
diagnostics-testing
這個程式庫包含實用的 EnvForDiagnostics,可測試 Inspect 與舊版元件的整合。
diagnostics-reader
這個程式庫包含方便使用的 ArchiveReader,可從測試或正式環境中的封存工具擷取檢查資料。這個函式會包裝連線至 ArchiveAccessor 並從中擷取資料的共用邏輯。
其他
inspect_format
這個程式庫提供的 API 可用於讀取及寫入 Inspect VMO 格式的區塊。