ICE69
ICE69 sprawdza, czy wszystkie podciągy formularza [$componentkey] w sformatowanym ciągu nie zawierają składników odwołania krzyżowego. Odwołanie między składnikami występuje, gdy właściwość [$componentkey] sformatowanego ciągu odwołuje się do składnika innego niż składnik przechowywany w kolumnie Component_ tabel.
Problemy z odwoływaniem się między składnikami wynikają ze sposobu oceniania ciągów sformatowanych. Jeśli składnik, do którego odwołuje się właściwość [$componentkey], jest już zainstalowany i nie jest zmieniany podczas bieżącej instalacji (na przykład ponowne zainstalowanie, przeniesienie do źródła itd.), wyrażenie [$componentkey] daje wartość null, ponieważ stan akcji składnika w [$componentkey] ma wartość null. Podobne problemy mogą wystąpić podczas operacji uaktualniania i naprawy.
Wynik
ICE69 zwraca błąd, jeśli podciąg [$componentkey] w sformatowany ciąg odwołuje się do składnika w innej funkcji. ICE69 zwraca ostrzeżenie, jeśli podciąg [$componentkey] w sformatowanym ciągu odwołuje się do składnika w tej samej funkcji. (Tabela FeatureComponents służy do określania tego mapowania. Musi być mapowana na tę samą funkcję dla ostrzeżenia. Odwoływanie się do składników w funkcjach nadrzędnych lub odwoływanie się do składników w funkcjach podrzędnych jest uznawane za błąd).
ICE69 zgłasza błąd, jeśli podciąg [#FileKey] w sformatowany ciąg odwołuje się do pliku, który nie został określony w tabeli File jako należący do tego samego składnika.
Przykład
Ice69 raportuje następujące przykłady.
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."
Aby rozwiązać ten błąd, nie należy odwoływać się do składników referencyjnych. Zmień wartość [$componentkey], aby dopasować składnik skrótu.
Skrót | Składnik_ | Argument |
---|---|---|
Test | Szybki test | -v [$Test] |
Skrót2 | Szybki test | [$Test 2] |
Tabele czasowników i rozszerzenia rozszerzenia są specjalnymi przypadkami, w których tabela Czasownik odwołuje się do rozszerzenia należącego do składnika. Rozszerzenie może jednak należeć do wielu składników, ponieważ klucz podstawowy tabeli rozszerzeń składa się z kolumn Extension i Component_. Logicznie można mieć następującą sytuację.
tabeli czasowników (częściowe)
Rozszerzenie | Czasownik_ | Argument |
---|---|---|
Tst | otwierać | -v [$comp 1][$comp 2] |
tabeli rozszerzeń (częściowe)
Rozszerzenie | Składnik_ |
---|---|
Tst | comp1 |
Tst | comp2 |
Cecha_ | Składnik_ |
---|---|
Funkcja1 | Szybki test |
Funkcja1 | Test |
Funkcja2 | Test2 |
W takim przypadku należy upewnić się, że co najmniej jedna z właściwości [$componentkey] zwraca wartość inną niż null. Jednak każda właściwość [$componentkey] w kolumnie Argument tabeli czasowników ([$comp 1] i [$comp 2] w powyższym przykładzie musi odwoływać się do możliwego składnika dołączonego do rozszerzenia skojarzonego z czasownikiem. Odwołanie takie jak [$comp 3] spowodowałoby ostrzeżenie z ICE69.
Tabela AppId ma podobną sytuację do tabeli Verb. Używa ona tabeli klasy na potrzeby odwołania do składników. W takim przypadku tabela AppId jest weryfikowana w taki sam sposób jak weryfikacja Verb-Extension (teraz AppId-Class).
Kolumna Argument tabeli Klasy jest weryfikowana, podobnie jak Skrót, Registryi podobne tabele.
Tabela używana podczas wykonywania (tylko w przypadku znalezienia)
Tematy pokrewne