Istruzioni Pragma per Code Analysis

Panoramica

Con le istruzioni Pragma, è possibile decidere se tenere conto del codice sorgente nell'analisi del codice.

Per contro, gli elenchi di blocco consentono di filtrare gli elementi dopo l'esecuzione dell'analisi. L'effetto è lo stesso.

Con le istruzioni Pragma è possibile:

  • Contrassegnare il codice sorgente (ad esempio, funzioni, programmi, blocchi funzione, variabili e così via) da ignorare dall'analisi del codice (caso d'uso 1).

  • Contrassegnare il codice sorgente per filtrare i risultati visualizzati solo nei risultati della Tabella convenzioni, della Tabella metriche o della Vista dipendenza (caso d'uso 2).

    Vedere anche il capitolo Elenco di blocco.

Caso d'uso 1

Il codice da non analizzare in genere può essere contrassegnato con l'istruzione Pragma ignore. Gli elementi contrassegnati in questo modo non fanno parte del modello dei dati di analisi.

Attributo

Descrizione

{attribute 'code_analyzer' := 'ignore'}

  • Contrassegna una POU o una variabile da ignorare.

  • Funziona in modalità ricorsiva (ad esempio, anche le variabili contenute nella POU vengono ignorate, oppure i metodi sotto un blocco funzione sono ignorati).

  • Priorità più alta (rispetto all'attributo 'public_only').

attribute 'code_analyzer' := 'public_only'}

  • Contrassegna una POU per considerare solo gli elementi pubblici (VarIn, VarOut, VarInOut, proprietà pubbliche, metodi pubblici). Gli altri elementi vengono ignorati.

  • Funziona in modalità ricorsiva (ad esempio, i metodi sotto un blocco funzione sono gestiti analogamente al blocco funzione).

Caso d'uso 2

Il codice che non può essere modificato, ma che compare nei risultati di convenzione e/o metrica, può essere contrassegnato in modo da essere nascosto in questi elenchi di risultati.

Attributo

Descrizione

{attribute 'code_analysis_ui' := 'filter_in_results'}

  • Contrassegna una POU o variabile da filtrare nei risultati (Tabella convenzioni, Tabella metriche e Vista dipendenza).

  • Funziona in modo non ricorsivo.

{attribute 'code_analysis_ui' := 'filter_in_conventions'}

  • Contrassegna una POU o variabile da filtrare nei risultati della Tabella convenzioni (tramite UI o API di script).

  • Funziona in modo non ricorsivo.

{attribute 'code_analysis_ui' := 'filter_in_metrics'}

  • Contrassegna una POU o variabile da filtrare nei risultati della Tabella metriche (tramite UI o API di script).

  • Funziona in modo non ricorsivo.

{attribute 'code_analysis_ui' := 'filter_in_dependency_view'}

  • Contrassegna una POU o variabile da filtrare nella Vista dipendenza (finestra di dialogo Seleziona e aggiungi).

  • Funziona in modo non ricorsivo.

Esempi

Ignorare una variabile pubblica

METHOD PUBLIC PublicMethod
VAR_INPUT
    {attribute 'code_analyzer' := 'ignore'}
    i_iPublicButIgnoredVar: INT;

    i_iPublicVar2: INT;
END_VAR
VAR
    iPrivateVar2: INT;
END_VAR

Considerare solo gli elementi pubblici

{attribute 'code_analyzer' := 'public_only'}
FUNCTION_BLOCK FB_PublicOnlyTest1
VAR_INPUT
    i_iPublicVar: INT;
END_VAR
VAR
    iPrivateVar: INT;
END_VAR

Filtrare (POU) nei risultati

{attribute 'code_analysis_ui' := 'filter_in_results'}
PROGRAM SR_FilterInResultsTest1
VAR
END_VAR

Filtrare (variabile) nei risultati di metriche e/o convenzioni

PROGRAM SR_FilterVars
VAR
    {attribute 'code_analysis_ui' := 'filter_in_metrics'}
    iTestVar1: INT;
    {attribute 'code_analysis_ui' := 'filter_in_results'}
    iTestVar2: INT;
    {attribute 'code_analysis_ui' := 'filter_in_conventions'}
    FAILED_iTestVar3: INT;
END_VAR