Snowpark Migration Accelerator:问题代码类别¶
Snowpark Migration Accelerator (SMA) 会分析代码库并生成问题代码。虽然这些代码提供了详细信息,但它们分为三个主要类别。
解析错误¶
当 SMA 无法理解或处理源代码的某部分时,就会出现解析错误。当 SMA 遇到它无法识别或认为无效的代码时,就会发生这种情况。这些错误通常源于以下两个源:
SMA 工具本身内的问题
源代码中的问题
这种类型的错误可能源于各种原因。
源代码无效:代码必须在源平台中可执行。如果您提供的代码片段或部分代码无法在源平台中独立运行,SMA 将无法对其进行解析。
循环依赖项:在分析大型代码库时,SMA 可能会遇到代码元素之间的循环引用。这可能会导致该工具跳过或无法解析其中一些相互依赖的引用。
新代码模式:虽然 SMA 定期更新,但源平台也在不断发展。在某些情况下,该工具可能尚不支持新引入的代码模式。
编码问题:如果您的源代码在文件开头或结尾包含不一致的编码或意外字符,即使代码在源平台上成功运行,SMA 也可能会生成解析错误。
当解析错误发生时,它们由特定的错误代码标识。要了解这些代码的含义以及它们与解析错误的关系,请参阅我们文档中的 按源部分划分的问题代码。
转换错误¶
当 SMA 成功识别代码但无法转换时,就会发生转换错误。与解析错误不同,转换错误并不表示源代码存在问题。相反,它们通过识别超出其转换能力的代码段来表明 SMA 正在按预期工作。
代码因几种常见原因而无法转换。这些对象包括:
源代码中的元素无法在 Snowflake 中实现。目前,Snowflake 中没有该源代码元素的等效功能。
Snowflake 不支持元素的特定用法。虽然 Snowflake 可能支持源平台中的特定元素,但它在源代码中的使用方式与 Snowflake 的实现不兼容。
不支持必需参数。 SMA 通过分析每个元素的使用方式来创建源代码的详细功能模型,而不仅仅是识别和分类元素。有时,源代码中的基本函数参数在 Snowflake 中没有相应的支持。
某些函数组合不兼容。SMA 的函数模型分析各种函数如何协同工作。即使 Snowflake 支持各个函数,也可能无法组合使用它们。在这种情况下,SMA 会将其标记为转换错误。
大多数错误消息都包含具体的建议或后续步骤,以帮助您解决转换问题。您可以在相应的错误页面上找到这些建议。
当 SMA 遇到转换错误时,它会在转换后的代码中添加 EWI(错误、警告、信息)注释,并将错误记录在 问题清单文件。然后,系统将:
在包含转换错误的行中添加注释符号。
保持该行不加注释以防止文件执行。
遇到转换错误时,每个错误都有唯一的错误代码。要了解这些代码的含义及其解决方式,请参阅我们文档中的 按源部分划分的问题代码。
警告¶
警告与 SMA 中的错误不同。当该工具检测到您应该注意的更改时,会显示警告。虽然这些更改不会阻止代码运行,但它们表明与源代码相比,转换后的输出中代码的某些方面在外观或行为上可能有所不同。
警告消息的常见原因:
代码看起来不一样。SMA 执行转换,生成 EWI(错误、警告或信息)消息。
某些特定场景可能无法成功转换。如果特定功能在 99.9% 测试用例中起作用,但在某些参数组合中失败,则该工具将生成警告。如果您的代码使用这些特定的参数组合,您将收到转换错误。
元素被省略。这是最常见的警告类型。Snowflake 中不需要源系统中必不可少的许多函数或参数。
警告是信息性消息,通常不需要立即采取行动。但是,我们强烈建议在将代码部署到目标环境之前查看所有警告。在转换后的代码的测试阶段应考虑这些警告。
警告由特定的错误代码标识。要了解这些代码的含义,请参阅我们文档中的 按源部分划分的问题代码。