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:
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 ilCONCAT
eLEN
funzioniMessaggio:
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:
SA0175: Operazione sospetta sulla stringa: il letterale '<literal>' contiene caratteri non ASCII