SA0175:对字符串的可疑操作
注意
不要总是启用此规则。仅在必要时启用该规则,以查找转换为 UTF-8 编码时应检查的代码中的位置。
检查项目选项是否 字符串的 UTF-8 编码 可以启用。当没有找到具有可疑操作的代码位置时就是这种情况。
切换到 UTF-8 编码时,前 127 个字符对应 ASCII 编码。但是,所有其他字符都使用多于一个字节进行编码。这可能会导致处理字符串时的行为发生变化。因此,包含非 ASCII 字符的字符串文字可能会变得更长。或者通过索引访问字符串可以访问错误的元素。最后,甚至会发生对无效字节偏移的访问。
当规则处于活动状态时,将报告包含以下任何构造的所有代码位置:
对字节字符串的索引访问
例子:
str[2]
信息: SA0175:具有属性“strict”的枚举:对字符串的可疑操作:索引访问“<表达式>”
对单字节字符串的地址访问
例子:
ADR(str)
信息:
SA0175:具有属性“strict”的枚举:对字符串的可疑操作:可能的索引访问“<表达式>”
调用字符串函数
Standard
库,除非调用CONCAT
和LEN
功能信息:
SA0175:具有属性“strict”的枚举:对字符串的可疑操作:可能的索引访问“<表达式>”
包含非 ASCII 字符的字节文字
例子:
str := '99€'; str :='Ä';
信息:
SA0175:对字符串的可疑操作:文字“<literal>”包含非 ASCII 字符