Skip to main content

SA0175: Operazione sospetta su stringa

Nota

Non sempre abilitare questa regola. Abilitare la regola solo quando necessario per trovare le posizioni nel codice che devono essere verificate durante la conversione alla codifica UTF-8.

Controlla se l'opzione progetto Codifica UTF-8 per STRING può essere abilitato. Questo è il caso in cui non vengono trovate posizioni di codice con operazioni sospette.

Quando si passa alla codifica UTF-8, i primi 127 caratteri corrispondono alla codifica ASCII. Tuttavia, tutti gli altri caratteri sono codificati con più di un byte. Ciò può causare un cambiamento nel comportamento durante l'elaborazione delle stringhe. Di conseguenza, una stringa letterale contenente caratteri non ASCII potrebbe allungarsi. Oppure l'accesso a una stringa per indice può accedere all'elemento sbagliato. Infine, può verificarsi anche l'accesso a un offset di byte non valido.

Quando la regola è attiva, vengono riportate tutte le posizioni di codice contenenti uno dei seguenti costrutti:

  • Accesso all'indice a una stringa di byte

    Esempio: str[2]

    Messaggio: SA0175: Enumerazione con attributo 'strict': operazione sospetta sulla stringa: accesso all'indice '<espressione>'

  • Indirizzo di accesso a stringhe a byte singolo

    Esempio: ADR(str)

    Messaggio: sa_icon_message.png SA0175: Enumerazione con attributo 'strict': operazione sospetta sulla stringa: possibile accesso all'indice '<expression>'

  • Richiamo delle funzioni di stringa del Standard libreria, tranne quando si chiama il CONCAT e LEN funzioni

    Messaggio: sa_icon_message.png SA0175: Enumerazione con attributo 'strict': operazione sospetta sulla stringa: possibile accesso all'indice '<expression>'

  • Byte letterale contenente caratteri non ASCII

    Esempi:

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

    Messaggio: sa_icon_message.png SA0175: Operazione sospetta sulla stringa: il letterale '<literal>' contiene caratteri non ASCII