Skip to main content

SA0175:对字符串的可疑操作

注意

不要总是启用此规则。仅在必要时启用该规则,以查找转换为 UTF-8 编码时应检查的代码中的位置。

检查项目选项是否 字符串的 UTF-8 编码 可以启用。当没有找到具有可疑操作的代码位置时就是这种情况。

切换到 UTF-8 编码时,前 127 个字符对应 ASCII 编码。但是,所有其他字符都使用多于一个字节进行编码。这可能会导致处理字符串时的行为发生变化。因此,包含非 ASCII 字符的字符串文字可能会变得更长。或者通过索引访问字符串可以访问错误的元素。最后,甚至会发生对无效字节偏移的访问。

当规则处于活动状态时,将报告包含以下任何构造的所有代码位置:

  • 对字节字符串的索引访问

    例子: str[2]

    信息: SA0175:具有属性“strict”的枚举:对字符串的可疑操作:索引访问“<表达式>”

  • 对单字节字符串的地址访问

    例子: ADR(str)

    信息: sa_icon_message.png SA0175:具有属性“strict”的枚举:对字符串的可疑操作:可能的索引访问“<表达式>”

  • 调用字符串函数 Standard 库,除非调用 CONCATLEN 功能

    信息: sa_icon_message.png SA0175:具有属性“strict”的枚举:对字符串的可疑操作:可能的索引访问“<表达式>”

  • 包含非 ASCII 字符的字节文字

    例子:

    str := '99€';
    str :='Ä';

    信息: sa_icon_message.png SA0175:对字符串的可疑操作:文字“<literal>”包含非 ASCII 字符