ICE69
ICE69 會檢查 格式化 字串內表單 [$componentkey] 的所有子字串都不會交叉參考元件。 當格式化字串的 [$componentkey] 屬性參照到數據表Component_數據行中儲存之元件以外的元件時,就會發生跨元件參考。
跨元件參考的問題來自於評估 格式化 字串的方式。 如果已安裝 [$componentkey] 屬性所參考的元件,而且目前安裝期間未變更(例如重新安裝、移至來源等等),表達式 [$componentkey] 會評估為 null,因為 [$componentkey] 中元件的動作狀態為 null。 升級和修復作業期間可能會發生類似的問題。
結果
如果 格式化 字串中的 [$componentkey] 子字串在另一個功能中交叉參考元件,ICE69 會傳回錯誤。 如果格式化字串內的 [$componentkey] 子字串會交叉參考相同功能中的元件,ICE69 會傳回警告。 (FeatureComponents 數據表是用來判斷此對應。它必須對應至警告的相同功能。參考父特徵中的元件,或參考子功能中的元件會被視為錯誤。
如果 格式化 字串內的 [#FileKey] 子字串參考屬於相同元件的 File 數據表中未指定的檔案,ICE69 就會報告錯誤。
例
ICE69 報告下列範例所示。
WARNING: "Mismatched component reference. Entry 'Test' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test'. Components are in the same feature."
ERROR: "Mismatched component reference. Entry 'Shortcut2' of the Shortcut table belongs to component 'QuickTest'. However, the formatted string in column 'Argument' references component 'Test2'. Components are not in the same feature."
若要修正此錯誤,請勿交叉參考元件。 變更 [$componentkey] 以符合快捷方式的元件。
捷徑 (部分)
捷徑 | 元件_ | 論點 |
---|---|---|
測試 | QuickTest | -v [$Test] |
Shortcut2 | QuickTest | [$Test 2] |
Verb 和 Extension 數據表是 Verb 數據表參考屬於元件的擴充功能的特殊案例。 不過,擴充功能可以屬於多個元件,因為擴充數據表的主鍵是由 Extension 和 Component_ 數據行所組成。 您可以邏輯上具有下列情況。
動詞表 (部分)
外延 | 動詞_ | 論點 |
---|---|---|
tst | 打開 | -v [$comp 1][$comp 2] |
延伸模組資料表 (部分)
外延 | 元件_ |
---|---|
tst | comp1 |
tst | comp2 |
特徵_ | 元件_ |
---|---|
Feature1 | QuickTest |
Feature1 | 測試 |
Feature2 | Test2 |
在此情況下,您必須確定至少有一個 [$componentkey] 屬性評估為非 Null 值。 不過,在 Verb 資料表的 Argument 資料行中,每個 [$componentkey] 屬性 ([$comp 1] 和上述範例中的 [$comp 2] 都必須參考與動詞相關延伸模組隨附的可能元件。 類似 [$comp 3] 的參考會產生 ICE69 的警告。
AppId 資料表 與 Verb 數據表類似。 它會使用 Class 數據表 來參考其元件。 在此情況下,AppId 數據表的驗證方式與 Verb-Extension 驗證相同(現在 AppId-Class)。
類別數據表的 Argument 資料行會像 Shortcut、Registry和類似的數據表一樣進行驗證。
執行期間使用的資料表(只有在找到時 )
相關主題