Anhand eines einfachen Beispielprojekts finden Sie im Folgenden die wichtigsten Schritte und Optionen für die Konfiguration und Durchführung einer statischen Analyse.
Voraussetzungen: CODESYS Static Analysis ist installiert.
Beispielprojekt
Wenn Sie das Beispielprojekt reproduzieren möchten, erstellen Sie ein Standardprojekt und fügen Sie die Bausteine unterhalb der Anwendung in den Gerätebaum ein. Konfigurieren Sie dann die Kommunikationseinstellungen für die Verbindung zu Ihrem lokalen CODESYS Control Win V3.
FUNCTION_BLOCK fb1
VAR_INPUT
iVar_fb1in1 : INT;
ivar_fb1in2 : INT;
rVar_fb1in3 : REAL;
END_VAR
VAR_OUTPUT
iVar_fb1out:INT;
END_VAR
VAR
P_fSampleProperty : INT;
rVar : REAL;
PRO : BOOL;
END_VAR
iVar_fb1out:=iVar_fb1in1 + 1;
FUNCTION_BLOCK fb2
VAR_INPUT
iVar_fb2in:INT;
END_VAR
VAR_OUTPUT
iVar_fb2out:INT;
END_VAR
VAR
END_VAR
PROGRAM PLC_PRG
VAR
fb1_inst: fb1;
fb2_inst: fb2;
END_VAR
fb1_inst(iVar_fb1in1 := 99);
fb2_inst(iVar_fb2in := 22);
fb2_inst(iVar_fb2in := 1);
Kontrolle der Einhaltung der Vorschriften
-
Klicken Sie auf „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Regeln“.
Es wird eine Liste mit allen möglichen Regelprüfungen angezeigt. Sie sind in einer Baumstruktur nach thematischen Kategorien geordnet. Die Nummer der Regel wird in Klammern hinzugefügt (z. B. „Nicht verwendete Variablen (33)“ in Kategorie „Nicht verwendete Objekte“).
-
Klicken Sie einige Male auf das Kontrollkästchen der ersten Zeile („Rules“ node).
Durch Anklicken wird der Aktivierungsstatus umgeschaltet. Die Kontrollkästchen im gesamten Baum haben ein rotes oder oranges Häkchen oder gar kein Häkchen.
-
Aktivieren Sie auf diese Weise alle Einträge mit einem roten Häkchen. Das bedeutet, dass CODESYS Static Analysis alle festgestellten Regelverletzungen als Fehler melden sollte.
-
Klicken Sie auf „Build Statische Analyse Statische Analyse ausführen“.
Fehler werden in der Nachrichtenansicht gemeldet. Die Meldungstexte sind mit einem
gekennzeichnet und beginnen mit der Fehlernummer "SA<Regelnummer>". -
Doppelklicken Sie auf die erste Nachricht
SA0033: Unused variables 'iVar_fb2out'.Der Fokus wird auf den Deklarationsteil des Funktionsblocks
fb2gesetzt und die entsprechende Variable wird ausgewählt. Die Variable wird deklariert, aber nicht verwendet. Dies wird in Regel 33 („Nicht verwendete Variablen“) überprüft. Im Code sind die entsprechenden Stellen mit einer Wellenlinie unterstrichen. -
Um die automatische Ausführung der Analyse zu testen, klicken Sie auf „Build Statische Analyse Einstellungen“. Wählen Sie auf der Registerkarte „Einstellungen“ die Option „Statische Analyse automatisch durchführen“. Klicken Sie auf „OK“, um das Dialogfeld zu schließen.
-
Klicken Sie auf „Online Login“.
Ein Dialogfenster zeigt an, dass Kompilierfehler vorliegen. Die von der Codeanalyse gemeldeten Fehler werden in der Meldungsansicht erneut angezeigt.
-
Klicken Sie auf „Erstellen Statische Analyse Einstellungen“. Wechseln Sie auf die Registerkarte „Regeln“. Löschen Sie nun alle Regeln im Dialog. Aktivieren Sie in der Kategorie „Unused Objects“ explizit die Regel SA0035 („Unused input variables (35)“) mit einem orangefarbenen Häkchen, um eine Warnung zu melden. Der Text der Regel ist in der QuickInfo zu finden: „Diese Regel entspricht den folgenden PLCopen-Regeln: CP24“). Klicken Sie auf „OK“, um das Dialogfeld zu schließen.
Klicken Sie in den Projekteinstellungen auf „OK“.
-
Klicken Sie auf „Build Code generieren“.
Die Analyse wird automatisch durchgeführt. In der Nachrichtenansicht werden zwei Fehler gemeldet:
§ SA0035: Unused input variable 'iVar_fb1in2und§ SA0035: Unused input variable 'iVar_fb1in3. -
Doppelklicken Sie auf die Meldung und kommentieren oder entfernen Sie die Erklärung. Führen Sie die Codeanalyse erneut durch.
Es werden keine Fehlermeldungen angezeigt.
Prüfung auf Einhaltung der festgelegten Namenskonventionen
-
Klicken Sie auf „Erstellen Statische Analyse Einstellungen“. Klicken Sie auf die Registerkarte „Naming Conventions“.
Sie sehen eine Tabelle in einer Baumstruktur, die in erweiterbare Kategorien von Variablen und Programmblöcken unterteilt ist.
-
Erweitern Sie die Kategorie „Präfixe für Variablen“ - „Präfixe für Typen“, und geben Sie in der Spalte „Präfix“
Ifür „INT (14)“ an.Erweitern Sie die Kategorie „Präfixe für POUs“ - „Präfixe für POU-Typ“: In der Spalte „Prefix“geben Sie
progfür „PROGRAM (122)“ undfbfür „FUNCTIONBLOCK (103)“ an. -
Wählen Sie die Option „Erstes Zeichen nach dem Präfix sollte ein Großbuchstabe sein“. Löschen Sie alle anderen Optionen.
-
Klicken Sie auf „Build Statische Analyse Statische Analyse ausführen“.
Fehlermeldungen:
-
NC0102: Invalid name 'PLC_PRG': Expect prefix 'prog'weil PLC_PRG nicht das erforderliche Präfix hat -
First character after prefix should be uppercase: 'ivar_fb1in2'dennivar_fb1in2 : INT;infb1 -
NC0014: Invalid variable name P_fSampleProperty: Expect prefix 'i'weil diese Integer-Variable nicht das erforderliche Präfix hat
-
Prüfen auf verbotene Symbole
-
Klicken Sie auf „Erstellen Statische Analyse Einstellungen“. Klicken Sie auf die Registerkarte „Verbotene Symbole“.
Ein Zeileneditor ermöglicht die Angabe von Zeichenketten, die im Code nicht verwendet werden sollen.
-
Doppelklicken Sie zum Beispiel auf die leere Zeile und geben Sie die ungültige Zeichenfolge
PROdirekt ein. Doppelklicken Sie auf die nächste Leerzeile und klicken Sie auf
, um die Eingabehilfe zu öffnen. Wählen Sie unter „Standardtypen“, „REAL“. Klicken Sie auf „OK“, um das Dialogfeld zu schließen. -
Klicken Sie auf „Build Statische Analyse Statische Analyse ausführen“.
Die Fehlermeldungen
Forbidden symbol 'REAL'undForbidden symbol 'PRO'werden in der Meldungsansicht angezeigt. Doppelklicken Sie auf den Nachrichtentext, um zu der entsprechenden Codezeile zu springen.
Anzeige von Metriken
CODESYS Static Analysis führt ausgewählte Tests mit dem Code durch, und Sie können die Ergebnisse in einer Ansicht anzeigen.
-
Klicken Sie auf „Erstellen Statische Analyse Einstellungen“. Klicken Sie auf die Registerkarte „Metrics“.
Die Metriken, die CODESYS Static Analysis auf den Code anwendet, sind in einer Tabelle aufgeführt.
-
Aktivieren Sie für dieses Beispiel die Metrik „Anzahl der Eingangsvariablen“ und geben Sie den zulässigen Wertebereich an: Untergrenze
1und Obergrenze2. Aktivieren Sie einige weitere Metriken, zum Beispiel „Codegröße“ und „Anzahl der Aufrufe“. -
Klicken Sie auf „Erstellen Statische Analyse Standardmetriken anzeigen“.
Die Ansicht enthält eine Tabelle mit einer Zeile für jede „Programmeinheit“ des Beispielprogramms. Für jede aktivierte Metrik gibt es eine Spalte mit den gemessenen Werten. Werte, die außerhalb des in den Einstellungen festgelegten Wertebereichs liegen, werden rot hervorgehoben. In diesem konkreten Beispiel ist dies mindestens das Feld „PLC_PRG/Inputs“, da die Anzahl der Eingangsvariablen in dieser POE größer ist als die definierte Obergrenze von
2.
Siehe auch