Skip to main content

Analizza il codice in modo statico

Puoi anche fare in modo che il tuo codice sorgente venga analizzato staticamente ("linten") durante la generazione del codice. Determina se il tuo codice sorgente segue le linee guida di codifica che hai impostato, sulla falsariga dello strumento di analisi "lint".

  • In dialogo impostazioni del progetto sotto la categoria Luce di analisi statica abilitare le regole che verranno verificate. Il controllo stesso avviene quindi automaticamente ad ogni generazione di codice, ad esempio quando si esegue il comando Crea → Genera codice Selezionare. Se vengono rilevate deviazioni dalle regole, queste vengono classificate come messaggi di errore della categoria Tradurre visualizzato nella finestra del messaggio. Gli errori segnalati hanno un prefisso: SA<Zahl>.

Importante

Per l'analisi del codice statico con Luce di analisi statica viene verificato solo il codice dell'applicazione del progetto. Le biblioteche sono escluse dall'esame.

Variabili di un GVL nella vista POU non sono necessariamente controllati: se si dispone di un progetto con più applicazioni, vengono controllati solo gli oggetti nell'applicazione attualmente attiva. Se si dispone di una sola applicazione, vengono controllati anche gli oggetti nel pool generale di POU.

Suggerimento

Luce di analisi statica è incluso solo con un insieme ridotto di regole nel sistema di sviluppo standard. Quando si installa il componente aggiuntivo è disponibile un insieme esteso di regole, convenzioni di denominazione aggiuntive e metriche CODESYS Static Analysis installare.

Escludere righe di codice nelle implementazioni con pragma dall'analisi statica

Puoi con l'aiuto del pragma {analysis ...} Contrassegnare il codice in modo che le regole specificate non vengano verificate. Di conseguenza, le righe di codice contrassegnate in questo modo non vengono analizzate staticamente. Durante il test, il codice contrassegnato viene ignorato.

Sintassi:

{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern, kommasepariert>}

-<Regelnummer>: Disattiva il controllo della regola SA<numero regola>.

+<Regelnummer>: Attiva il controllo della regola SA<numero regola>.

Escludi codice di implementazione

Requisito: hai la finestra di dialogo impostazioni del progetto regole abilitate.

  1. Aggiungi il pragma {analysis -<number>} sopra la riga di codice che contiene il codice che non si desidera controllare per la prima volta. Ad esempio, per la regola SA0024

    La riga di codice è la prima riga dello snippet di codice che non viene verificata rispetto alla regola 24.

  2. Aggiungi il pragma {analysis +<number>} sotto la riga di codice che contiene il codice da non controllare per la prima volta.

    Esempio: Per la regola SA0024

    La riga di codice sopra è l'ultima riga dello snippet di codice che non viene verificata rispetto alla regola 24.

Esempio 22. Esempio: ignora il letterale non tipizzato
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}

La regola SA0024: Letterali non tipizzati è disabilitato per 2 righe. Non viene generato alcun errore, sebbene il codice non venga corretto in: nTest := DINT#99;



Esempio 23. Esempio: ignora più regole
{analysis -10, -24, -18}
...
{analysis +10, +24, +18}

SA0010: Array con un solo componente

SA0018: accessi bit insoliti

SA0024: Letterali non tipizzati



Suggerimento

Tuttavia, puoi governare SA0004: Accesso multiplo in scrittura all'output non disabilitare tramite pragma.

Escludere gli oggetti di programmazione dall'analisi statica con pragma

Sintassi:

{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}

Se si include l'attributo pragma nella parte di dichiarazione di un oggetto di programmazione, le regole specificate vengono escluse per l'intero oggetto di programmazione. Se sono escluse più regole, le regole devono essere specificate con un segno meno e un numero, separati da virgole. Non è necessaria una dichiarazione pragma per l'accensione.

Esempio 24. esempio
{attribute 'analysis' := '-33, -31'}
TYPE LocalData :
STRUCT
        iLocal : INT;
        uiLocal : UINT;
        udiLocal : UDINT;
END_STRUCT
END_TYPE

Nella struttura vengono utilizzate le regole SA0033 e SA0031 LocalData ignorato.

{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;

La regola SA0100 viene applicata all'array big ignorato.