Sie können Ihren Quellcode während einer Codegenerierung zusätzlich statisch analysieren ("linten") lassen. Dabei wird ermittelt, ob Ihr Quellcode den von Ihnen festgelegten Codierrichtlinien folgt - gemäß der Idee des "Lint"-Analysewerkzeugs.
-
Im Dialog „Projekteinstellungen“ unter der Kategorie „Static Analysis Light“ aktivieren Sie die Regeln, die geprüft werden. Die Prüfung selbst erfolgt dann automatisch bei jeder Codegenerierung, beispielsweise wenn Sie den Befehl „Erstellen Code erzeugen“ wählen. Wenn Abweichungen von den Regeln ermittelt werden, werden diese als Fehlermeldungen der Kategorie „Übersetzen“ im Meldungsfenster ausgegeben. Die dabei gemeldeten Fehler haben einen Präfix:
SA<Zahl>
.




HINWEIS

Bei der statischen Codeanalyse mit „Static Analysis Light“ wird nur den Applikationscode des Projekts geprüft. Bibliotheken sind von der Prüfung ausgeschlossen.
Variablen einer GVL in der Ansicht „ POUs“ werden nicht zwingend geprüft: Wenn Sie ein Projekt mit mehreren Applikationen haben, werden nur die Objekte unter der gerade aktiven Applikation geprüft. Wenn Sie nur eine einzige Applikation haben, werden auch die Objekte im allgemeinen POUs-Pool geprüft.
„Static Analysis Light“ ist nur mit einem reduzierten Satz an Regeln im Standard-Entwicklungssystem enthalten. Ein erweiterter Umfang an Regeln, zusätzliche Namenskonventionen und Metriken stehen Ihnen zur Verfügung, wenn Sie das Add-on CODESYS Static Analysis installieren.
Codezeilen in Implementierungen mit Pragma von der statischen Analyse ausschließen
Sie können mit Hilfe des Pragmas {analysis ...}
Code so kennzeichnen, dass die dabei angegebenen Regeln nicht geprüft werden. Folglich
werden die so gekennzeichneten Codezeilen nicht statische analysiert. Während der
Prüfung wird der gekennzeichnete Code ignoriert.
Syntax:
{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern,
kommasepariert>}
-<Regelnummer>
: Prüfung der Regel SA<Regelnummer> ausschalten.
+<Regelnummer>
: Prüfung der Regel SA<Regelnummer> einschalten.
Implementierungscode ausschließen
Voraussetzung: Sie haben im Dialog „Projekteinstellungen“ Regeln aktiviert.
-
Fügen Sie das Pragma
{analysis -<number>}
oberhalb der Codezeile ein, die erstmals nicht zu prüfenden Code enthält. Beispielsweise für die Regel SA0024Die Codezeile ist die erste Zeile des Codeschnipsels, der nicht gegen die Regel 24 geprüft wird.
-
Fügen Sie das Pragma
{analysis +<number>}
unterhalb der Codezeile ein, die erstmals nicht zu prüfenden Code enthält. Beispielsweise für die Regel SA0024.Die Codezeile oberhalb ist die letzte Zeile des Codeschnipsels, der nicht gegen die Regel 24 geprüft wird.
Beispiel: Nicht getyptes Literal ignorieren
{analysis -24} nTest := 99; iVar := INT#2; {analysis +24}
Die Regel „SA0024: Nicht getypte Literale“ ist für 2 Zeilen deaktiviert. Es wird kein Fehler ausgegeben, obwohl der Code nicht
korrigiert zu: nTest := DINT#99;
Beispiel: Mehrerer Regeln ignorieren
{analysis -10, -24, -18} ... {analysis +10, +24, +18}
„SA0010: Arrays mit nur einer Komponente“
„SA0018: Unübliche Bitzugriffe“
„SA0024: Nicht getypte Literale“
Allerdings können Sie die Regel SA0004
: „Mehrfacher Schreibzugriff auf Ausgang“ nicht über Pragma deaktivieren.
Programmierobjekte mit Pragma von der statischen Analyse ausschließen
Syntax:
{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}
Wenn Sie das Attributpragma im Deklarationsteil eines Programmierobjekts einfügen, werden die angegebenen Regeln für das ganze Programmierobjekt ausgeschlossen. Wenn mehrere Regeln ausgeschlossen werden, sind die Regeln jeweils kommasepariert mit Minus und Nummer anzugeben. Eine Pragmaanweisung für ein Einschalten wird nicht benötigt.
Beispiel
{attribute 'analysis' := '-33, -31'} TYPE LocalData : STRUCT iLocal : INT; uiLocal : UINT; udiLocal : UDINT; END_STRUCT END_TYPE
Die Regeln SA0033 und SA0031 werden bei der Struktur LocalData
ignoriert.
{attribute 'analysis' := '-100'} big: ARRAY[1..10000] OF DWORD;
Die Regel SA0100 wird beim Array big
ignoriert.