Pragmas und Attribute für Static Analysis Light

Mithilfe eines Pragmas bzw. eines Attributs können Sie Codeteile aus der Prüfung ausklammern. Verwenden Sie das Pragma {analysis …}, um Kodierregeln im Implementierungsteil auszuschalten und das Attribut {attribute 'analysis' := '...'}, um Kodierregeln im Deklarationsteil auszuschalten.

Voraussetzung: Sie haben die Regeln in den Projekteigenschaften aktiviert.

Außerdem können Sie das Attribut {attribute 'no-analysis'} verwenden, um Programmierobjekte von der Statischen Analyse auszuschließen.

Pragmas und Attribute für Static Analysis Light 1:

Regeln, die in den Projekteigenschaften deaktiviert sind, können Sie auch nicht über Pragma oder Attribut aktivieren.

Pragmas und Attribute für Static Analysis Light 2:

Regel SA0004 (Mehrfacher Schreibzugriff auf Ausgang) kann nicht über Pragma deaktiviert werden.

Pragma {analysis ...}

Das Pragma {analysis -/+<Regelnummer>} können Sie im Implementierungsteil eines Programmierbausteins verwenden, um einzelne Kodierregeln für die nachfolgenden Codezeilen auszuschalten. Sie deaktivieren Codierregeln durch die Angabe der Regelnummern und einem vorangestellten Minuszeichen (“-”). Zur Aktivierung wird ein Pluszeichen (“+”) vorangestellt. Mit Hilfe einer Kommaseparierung können Sie im Pragma beliebig viele Regeln angeben.

Einfügeort:

Syntax:

Beispiele:

Sie möchten Regel 24 (nur getypte Literale erlaubt) für eine Zeile deaktivieren (d.h. es ist in diesen Zeilen nicht nötig, "nTest := DINT#99" zu schreiben) und danach wieder aktivieren:

{analysis -24}
nTest := 99;
{analysis +24}
nVar := INT#2;

Angabe mehrerer Regeln:

{analysis -10, -24, -18}

Attribut {attribute 'analysis' := '...'}

Das Attribut {attribute 'analysis' := '-<Regelnummer>'} können Sie verwenden, um bestimmte Regeln für einzelne Deklarationen oder für ein ganzes Programmierobjekt abzuschalten. Sie deaktivieren die Kodierregel durch die Angabe der Regelnnummer(n) und einem vorangestellten Minuszeichen. Sie können im Attribut beliebig viele Regeln angeben.

Einfügeort:

oberhalb der Deklaration eines Programmierobjekts oder in der Zeile oberhalb einer Variablendeklaration

Syntax:

Beispiele:

Sie möchten Regel 33 (Nicht verwendete Variablen) für alle Variablen der Struktur ausschalten.

{attribute 'analysis' := '-33'}
TYPE ST_Sample :
STRUCT
    bMember  : BOOL;
    nMember  : INT;
END_STRUCT
END_TYPE

 

Sie möchten die Prüfung von Regel 28 (Überlappende Speicherbereiche) und von Regel 33 (Nicht verwendete Variablen) für die Variable nVar1 ausschalten.

PROGRAM MAIN
VAR
    {attribute 'analysis' := '-28, -33'}
    nVar1 AT%QB21  : INT;
    nVar2 AT%QD5   : DWORD;
 
    nVar3 AT%QB41  : INT;
    nVar4 AT%QD10  : DWORD;
END_VAR

 

Sie möchten Regel 6 (Gleichzeitiger Zugriff) für eine globale Variable ausschalten, sodass keine Fehlermeldung generiert wird, wenn die Variable von mehr als einer Task geschrieben wird.

VAR_GLOBAL
    {attribute 'analysis' := '-6'}
    nVar  : INT;
    bVar  : BOOL;
END_VAR

Attribut {attribute 'no-analysis'}

Das Attribut {attribute 'no-analysis'} können Sie verwenden, um ein gesamtes Programmierobjekt von der Prüfung durch die Statische Analyse auszuschließen. Für dieses Programmierobjekt wird die Prüfung der Kodierregeln, der Namenskonventionen und der unzulässigen Symbole nicht durchgeführt.

Einfügeort:

oberhalb der Deklaration eines Programmierobjekts

Syntax:

{attribute 'no-analysis'}

Beispiele:

{attribute 'qualified_only'}
{attribute 'no-analysis'}
VAR_GLOBAL
    …
END_VAR
{attribute 'no-analysis'}
PROGRAM MAIN
VAR
    …
END_VAR