Skip to main content

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: sa_icon_message.png 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 al CONCAT y LEN funciones

    Mensaje: sa_icon_message.png 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: sa_icon_message.png SA0175: Operación sospechosa en una cadena: El literal '<literal>' contiene caracteres que no son ASCII