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 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.
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 SA0024La riga di codice è la prima riga dello snippet di codice che non viene verificata rispetto alla regola 24.
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.
{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;
{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.
{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.