ICE69
ICE69 检查 格式 字符串中表单 [$componentkey] 的所有子字符串是否不交叉引用组件。 当格式化字符串的 [$componentkey] 属性引用除表Component_列中存储的组件以外的组件时,将发生跨组件引用。
跨组件引用的问题源于计算 格式化 字符串的方式。 如果已安装 [$componentkey] 属性引用的组件,并且当前安装期间未更改(例如重新安装、移动到源等),则表达式 [$componentkey] 的计算结果为 null,因为 [$componentkey] 中的组件的作状态为 null。 升级和修复作期间可能会出现类似的问题。
结果
如果 格式 字符串中的 [$componentkey] 子字符串在另一特征中交叉引用组件,则 ICE69 将返回错误。 如果格式化字符串中的 [$componentkey] 子字符串在同一功能中交叉引用组件,则 ICE69 将返回警告。 (FeatureComponents 表用于确定此映射。它必须映射到警告的相同功能。在父功能中引用组件或引用子功能中的组件被视为错误。
如果 格式 字符串中的 [#FileKey] 子字符串引用 文件 表中未指定属于同一组件的文件,则 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 表引用属于组件的扩展的特殊情况。 但是,扩展可以属于多个组件,因为扩展表的主键由扩展和Component_列组成。 在逻辑上,可以符合以下情况。
谓词表(部分)
外延 | 动词_ | 论点 |
---|---|---|
tst | 打开 | -v [$comp 1][$comp 2] |
扩展表(部分)
外延 | 元件_ |
---|---|
tst | comp1 |
tst | comp2 |
特征_ | 元件_ |
---|---|
Feature1 | QuickTest |
Feature1 | 测试 |
Feature2 | Test2 |
在这种情况下,必须确保至少一个 [$componentkey] 属性的计算结果为非 null 值。 但是,上述示例中 Verb 表的 Argument 列([$comp 1] 和 [$comp 2] 中的每个 [$componentkey] 属性都必须引用与谓词关联的扩展中包含的可能组件。 [$comp 3] 等引用将导致 ICE69 发出警告。
AppId 表 与 Verb 表的情况类似。 它将 类表 用于其组件引用。 在这种情况下,AppId 表的验证方式与 Verb-Extension 验证(现在 AppId-Class)相同。
类表的 Argument 列验证方式类似于 快捷方式、注册表和类似的表。
执行期间使用的表(仅当找到)
相关主题