ICE69
ICE69 controleert of alle subtekenreeksen van het formulier [$componentkey] binnen een opgemaakte tekenreeks geen kruisverwijzingsonderdelen bevatten. Er treedt een verwijzing tussen onderdelen op wanneer de eigenschap [$componentkey] van een opgemaakte tekenreeks verwijst naar een ander onderdeel dan het onderdeel dat is opgeslagen in de kolom Component_ van uw tabellen.
Problemen met referencing tussen onderdelen ontstaan door de manier waarop opgemaakte tekenreeksen worden geëvalueerd. Als het onderdeel waarnaar wordt verwezen met de eigenschap [$componentkey] al is geïnstalleerd en niet wordt gewijzigd tijdens de huidige installatie (bijvoorbeeld opnieuw worden geïnstalleerd, verplaatst naar bron enzovoort), resulteert de expressie [$componentkey] in null, omdat de actiestatus van het onderdeel in [$componentkey] null is. Vergelijkbare problemen kunnen optreden tijdens upgrade- en herstelbewerkingen.
Resultaat
ICE69 retourneert een fout als een [$componentkey] subtekenreeks binnen een opgemaakt tekenreeks kruisverwijzingen naar een onderdeel in een andere functie. ICE69 retourneert een waarschuwing als een [$componentkey] subtekenreeks binnen een opgemaakte tekenreeks kruisverwijzingen naar een onderdeel in dezelfde functie. (De tabel FeatureComponents wordt gebruikt om deze toewijzing te bepalen. Deze moet worden toegewezen aan dezelfde functie voor de waarschuwing. Het verwijzen naar onderdelen in bovenliggende functies of het verwijzen naar onderdelen in onderliggende functies wordt beschouwd als een fout.)
ICE69 rapporteert een fout als de subtekenreeks [#FileKey] binnen een opgemaakte tekenreeks verwijst naar een bestand dat niet is opgegeven in de tabel Bestand die deel uitmaakt van hetzelfde onderdeel.
Voorbeeld
ICE69 rapporteert het volgende voor de weergegeven voorbeelden.
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."
U kunt deze fout oplossen door geen kruisverwijzingsonderdelen te gebruiken. Wijzig de [$componentkey] zodat deze overeenkomt met het onderdeel van de snelkoppeling.
snelkoppelingstabel (gedeeltelijk)
Snelkoppeling | Bestanddeel_ | Argument |
---|---|---|
Test | QuickTest | -v [$Test] |
Snelkoppeling2 | QuickTest | [$Test 2] |
De tabellen Verb en Extension zijn speciale gevallen, omdat de tabel Werkwoord verwijst naar een extensie die deel uitmaakt van een onderdeel. Een extensie kan echter tot meerdere onderdelen behoren omdat de primaire sleutel voor de extensietabel bestaat uit de kolommen Extension en Component_. U kunt de volgende situatie logisch hebben.
werkwoordtabel (gedeeltelijk)
Extensie | Werkwoord_ | Argument |
---|---|---|
Tst | openen | -v [$comp 1][$comp 2] |
extensietabel (gedeeltelijk)
Extensie | Bestanddeel_ |
---|---|
Tst | comp1 |
Tst | comp2 |
Gelaatstrek_ | Bestanddeel_ |
---|---|
Functie1 | QuickTest |
Functie1 | Test |
Functie2 | Test2 |
In dit geval moet u ervoor zorgen dat ten minste één van de eigenschappen [$componentkey] een niet-null-waarde oplevert. Elke eigenschap [$componentkey] in de kolom Argument van de tabel Werkwoord ([$comp 1] en [$comp 2] in het bovenstaande voorbeeld moet echter verwijzen naar een mogelijk onderdeel dat is opgenomen in de extensie die aan het werkwoord is gekoppeld. Een verwijzing zoals [$comp 3] zou resulteren in een waarschuwing van ICE69.
De AppId-tabel heeft een vergelijkbare situatie als de tabel Werkwoord. Voor de componentverwijzing wordt de klassetabel gebruikt. In dit geval wordt de Tabel AppId op dezelfde manier gevalideerd als de Verb-Extension-validatie (nu AppId-Class).
De kolom Argument van de klassetabel wordt gevalideerd zoals de Snelkoppeling, Registeren vergelijkbare tabellen.
Tabel die tijdens de uitvoering wordt gebruikt (alleen indien gevonden)
Verwante onderwerpen