SA0175: Operación sospechosa en cadena
Nota
No siempre habilite esta regla. Habilite la regla solo cuando sea necesario para encontrar las ubicaciones en el código que deben verificarse al convertir a la codificación UTF-8.
Comprueba si la opción de proyecto Codificación UTF-8 para STRING se puede habilitar. Este es el caso cuando no se encuentran ubicaciones de código con operaciones sospechosas.
Al cambiar a la codificación UTF-8, los primeros 127 caracteres corresponden a la codificación ASCII. Sin embargo, todos los demás caracteres están codificados con más de un byte. Esto puede provocar un cambio en el comportamiento al procesar cadenas. Como resultado, un literal de cadena que contenga caracteres que no sean ASCII puede volverse más largo. O el acceso en una cadena por índice puede acceder al elemento incorrecto. Finalmente, incluso puede ocurrir el acceso a un desplazamiento de byte no válido.
Cuando la regla está activa, se informan todas las ubicaciones de código que contienen cualquiera de las siguientes construcciones:
Índice de acceso a una cadena de bytes
Ejemplo:
str[2]
Mensaje: SA0175: Enumeración con atributo 'strict': Operación sospechosa en cadena: acceso al índice '<expresión>'
Acceso de direcciones a cadenas de un solo byte
Ejemplo:
ADR(str)
Mensaje:
SA0175: Enumeración con atributo 'strict': Operación sospechosa en cadena: Posible acceso al índice '<expresión>'
Llamada de funciones de cadena del
Standard
biblioteca, excepto cuando llame alCONCAT
yLEN
funcionesMensaje:
SA0175: Enumeración con atributo 'estricto': Operación sospechosa en cadena: Posible acceso al índice '<expresión>'
Byte literal que contiene caracteres que no son ASCII
Ejemplos:
str := '99€'; str :='Ä';
Mensaje:
SA0175: Operación sospechosa en una cadena: El literal '<literal>' contiene caracteres que no son ASCII