Confrontare un tipo signed (es. 'int x = -1;') con un tipo unsigned (es. 'unsigned int y = 5;') o 'sizeof()' converte implicitamente il valore signed in unsigned, trasformando '-1' nel valore enorme '4294967295' e rendendo '-1 > 5' inaspettatamente vero.
SIGNED_UNSIGNED_COMPARISON
→
L'istruzione 'continue' è valida unicamente all'interno del corpo di un ciclo; a differenza di 'break', non può essere utilizzata nemmeno all'interno di uno 'switch' a meno che questo non sia a sua volta contenuto in un ciclo.
CONTINUE_OUTSIDE_LOOP
→
La funzione ha un tipo di ritorno diverso da 'void' ma il flusso di esecuzione può raggiungere la fine del corpo della funzione senza incontrare un'istruzione 'return <valore>', generando comportamento indefinito (UB).
CONTROL_REACHES_END
→
Il codice tenta di accedere a un campo di una struttura ('ptr->field') conoscendone solo la dichiarazione anticipata (forward declaration 'struct Node;') ma senza aver incluso il file di intestazione (.h) contenente la definizione completa dei campi della struct.
DEREF_INCOMPLETE_TYPE
→
All'interno di un blocco 'switch', due rami 'case' specificano la stessa identica costante numerica o valore enumerato, violando l'univocità delle diramazioni del selettore.
DUPLICATE_CASE_VALUE
→
L'errore sintattico più comune in C: indica la mancanza del delimitatore ';' al termine dell'istruzione precedente o subito dopo la chiusura di una dichiarazione di struct ('struct Foo { ... };').
EXPECTED_SEMICOLON
→
In uno switch, omettere l'istruzione 'break;' al termine di un blocco 'case' fa proseguire l'esecuzione nel case sottostante; i compilatori moderni richiedono l'uso esplicito dell'attributo '__attribute__((fallthrough));' o commento '/* fallthrough */' se il comportamento è intenzionale.
IMPLICIT_FALLTHROUGH
→
Lo specificatore di conversione (es. %d, %s, %f, %p) passato a printf o scanf non corrisponde al tipo effettivo della variabile passata, portando a letture errate nello stack o crash.
FORMAT_TYPE_MISMATCH
→