Snowpark Migration Accelerator:问题代码类别

Snowpark Migration Accelerator (SMA) 会分析代码库并生成问题代码。虽然这些代码提供了详细信息,但它们分为三个主要类别。

解析错误

当 SMA 无法理解或处理源代码的某部分时,就会出现解析错误。当 SMA 遇到它无法识别或认为无效的代码时,就会发生这种情况。这些错误通常源于以下两个源:

  1. SMA 工具本身内的问题

  2. 源代码中的问题

这种类型的错误可能源于各种原因。

  • 源代码无效:代码必须在源平台中可执行。如果您提供的代码片段或部分代码无法在源平台中独立运行,SMA 将无法对其进行解析。

  • 循环依赖项:在分析大型代码库时,SMA 可能会遇到代码元素之间的循环引用。这可能会导致该工具跳过或无法解析其中一些相互依赖的引用。

  • 新代码模式:虽然 SMA 定期更新,但源平台也在不断发展。在某些情况下,该工具可能尚不支持新引入的代码模式。

  • 编码问题:如果您的源代码在文件开头或结尾包含不一致的编码或意外字符,即使代码在源平台上成功运行,SMA 也可能会生成解析错误。

When parsing errors occur, they are identified by specific error codes. To understand what these codes mean and how they relate to parsing errors, refer to the issue codes by source section in our documentation.

转换错误

当 SMA 成功识别代码但无法转换时,就会发生转换错误。与解析错误不同,转换错误并不表示源代码存在问题。相反,它们通过识别超出其转换能力的代码段来表明 SMA 正在按预期工作。

代码因几种常见原因而无法转换。这些对象包括:

  • 源代码中的元素无法在 Snowflake 中实现。目前,Snowflake 中没有该源代码元素的等效功能。

  • Snowflake 不支持元素的特定用法。虽然 Snowflake 可能支持源平台中的特定元素,但它在源代码中的使用方式与 Snowflake 的实现不兼容。

  • 不支持必需参数。 SMA 通过分析每个元素的使用方式来创建源代码的详细功能模型,而不仅仅是识别和分类元素。有时,源代码中的基本函数参数在 Snowflake 中没有相应的支持。

  • 某些函数组合不兼容。SMA 的函数模型分析各种函数如何协同工作。即使 Snowflake 支持各个函数,也可能无法组合使用它们。在这种情况下,SMA 会将其标记为转换错误。

大多数错误消息都包含具体的建议或后续步骤,以帮助您解决转换问题。您可以在相应的错误页面上找到这些建议。

When SMA encounters a conversion error, it adds an EWI (Error, Warning, Info) comment in the converted code and records the error in the issues inventory file. The system will then:

  • 在包含转换错误的行中添加注释符号。

  • 保持该行不加注释以防止文件执行。

When encountering conversion errors, each error has a unique error code. To understand what these codes mean and how to resolve them, refer to the issue codes by source section in our documentation.

警告

警告与 SMA 中的错误不同。当该工具检测到您应该注意的更改时,会显示警告。虽然这些更改不会阻止代码运行,但它们表明与源代码相比,转换后的输出中代码的某些方面在外观或行为上可能有所不同。

警告消息的常见原因:

  • 代码看起来不一样。SMA 执行转换,生成 EWI(错误、警告或信息)消息。

  • 某些特定场景可能无法成功转换。如果特定功能在 99.9% 测试用例中起作用,但在某些参数组合中失败,则该工具将生成警告。如果您的代码使用这些特定的参数组合,您将收到转换错误。

  • 元素被省略。这是最常见的警告类型。Snowflake 中不需要源系统中必不可少的许多函数或参数。

警告是信息性消息,通常不需要立即采取行动。但是,我们强烈建议在将代码部署到目标环境之前查看所有警告。在转换后的代码的测试阶段应考虑这些警告。

Warnings are identified by specific error codes. To understand what these codes mean, refer to the issue codes by source section in this documentation.