Dialog: Projekteinstellungen: Static Analysis Light
Symbol:
Funktion: Der Dialog aktiviert die Prüfungen, die bei der Light-Version der Statischen Analyse in CODESYS bei einer Codeerzeugung jeweils durchführt werden.
Aufruf: Befehl , Kategorie Static Analysis Light
Tipp
Sie können die statische Codeanalyse für Codeteile ausschließen, indem Sie den Code mit dem Pragma {analysis}
oder dem Pragma {attribute 'analysis' := '...'}
kennzeichnen.
Für weitere Informationen siehe: Code statisch analysieren
Zusätzliche Kompilierungsprüfungen
SA0033: Nicht verwendete Variablen | Ermittelt Variablen, die deklariert sind, aber innerhalb des kompilierten Programmcodes nicht verwendet werden Für GVL-Variablen: Wenn es in einem Projekt mehrere Applikationen gibt, werden nur die Objekte unter der gerade aktiven Applikation berücksichtigt. Wenn es nur eine einzige Applikation gibt, werden auch die Objekte in der Ansicht |
SA0028: Überlappende Speicherbereiche | Ermittelt die Codestellen, durch die 2 oder mehr Variablen denselben Speicherplatz belegen Beispielsweise tritt dies auf, wenn es die folgenden Deklarationen gibt: |
SA0006: Schreibzugriff aus mehreren Tasks | Ermittelt Variablen, auf die von mehr als einer Task geschrieben werden |
SA0004: Mehrfacher Schreibzugriff auf Ausgang | Ermittelt Ausgänge, die an mehr als einer Position geschrieben werden Hinweis: Es wird kein Fehler ausgegeben, wenn auf eine Ausgabevariable ( Hinweis: Diese Regel kann nicht über Pragma abgeschaltet werden! |
SA0027: Mehrfachverwendungen von Bezeichnern | Ermittelt Mehrfachverwendung des Namens/Bezeichners einer Variable oder eines Objekts (POU) innerhalb des Gültigkeitsbereichs eines Projekts . Die folgenden Fälle werden abgedeckt:
|
SA0167: Temporäre Funktionsbaustein-Instanzen | Die Prüfung ermittelt Funktionsbaustein-Instanzen, die als temporäre Variablen deklariert sind. Dies betrifft Instanzen, die in einer Methode oder in einer Funktion oder als |
SA0175 : Verdächtige Operation bei einem String | Standardmäßig inaktiv Identifiziert Codestellen, die bei einer UTF-8-Kodierung verdächtig sind Folgende Konstrukte werden erfasst:
Abhängig vom Ergebnis der Prüfung ist es ratsam, die Compile-Option UTF-8-Kodierung für Strings nicht zu aktivieren. Für weitere Informationen siehe: Compile-Optionen |
SA0003: Leere Anweisungen
; (* Comment *); iVar;
SA0006: Gleichzeitiger Zugriff
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0004: Mehrfacher Schreibzugriff auf Ausgang
VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW0 : INT ; END_VAR
PROGRAM PLC_PRG IF iCondition < INT#0 THEN g_xVar := TRUE; g_iTest := INT#12; END_IF
CASE iCondition OF INT#1: g_xVar := FALSE; INT#2: g_iTest := INT#11; ELSE g_xVar := TRUE; g_iTest := INT#9; END_CASE
SA0006: Schreibzugriff aus mehreren Tasks
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG // Controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //Controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0027: Mehrfachverwendung des Namens
PROGRAM PLC_PRG VAR ton : INT; // error SA0027 END_VAR
SA0029: Notation in Implementierung und Deklaration unterschiedlich
Im Gerätebaum gibt es einen Baustein PLC_PRG
und einen Baustein fnc
(Funktion).
PROGRAM PLC_PRG VAR iVar:INT; _123test_var_: INT; END_VAR
ivar := iVar + 1; // notation different to that in the declaration part -> SA0029 _123TEST_var_ := _123test_var_INT; // notation different to that in the declaration part -> SA0029 Fnc(); // notation different to that in the devices tree -> SA0029
SA0167: Temporäre Funktionsbaustein-Instanzen
PROGRAM PLC_PRG VAR END_VAR VAR_TEMP yafb: AFB; END_VAR
FUNCTION Fun : INT VAR_INPUT END_VAR VAR funafb: AFB; END_VAR
METHOD METH: INT VAR_INPUT END_VAR VAR methafb: AFB; END_VAR
Für weitere Informationen siehe: Code statisch analysieren