Anhand eines einfachen Beispielprojekts finden Sie im Folgenden die wichtigsten Schritte und Möglichkeiten der Konfiguration und Durchführung einer statischen Codeanalyse.
Voraussetzungen: CODESYS Static Analysis ist installiert.
Beispielprojekt
Wenn Sie das Beispielprojekt nachprogrammieren wollen, legen Sie ein Standardprojekt an und fügen Sie die unten dargestellten Bausteine unterhalb der Applikation im Gerätebaum ein. Konfigurieren Sie danach 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);
Einhaltung von Regeln überprüfen
-
Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Regeln“.
Sie erhalten eine Auflistung aller möglichen Regelüberprüfungen. Sie sind in Baumstruktur in thematischen Kategorien angeordnet. Die "Regelnummer" ist jeweils in runden Klammern hinzugefügt, Beispiel: „Nicht verwendete Variablen (33)“ in Kategorie „Nicht verwendete Objekte auflisten“.
-
Klicken Sie mehrmals hintereinander in die Checkbox der ersten Zeile (Knoten „Regeln“).
Mit jedem Klick ändert sich der Zustand der Aktivierung. Die Checkboxen im gesamten Baum werden gleichzeitig entweder mit einem rotem, orangem oder mit keinem Häkchen versehen.
-
Aktivieren Sie auf diese Weise alle Einträge mit einem roten Häkchen. Dies bedeutet, dass CODESYS Static Analysis gefundene Regelverstöße als Fehler melden soll.
-
Wählen Sie den Befehl „Erstellen Statische Analyse Statische Analyse durchführen“.
Im Meldungsfenster werden Fehler ausgegeben. Die Meldungstexte sind mit einem
gekennzeichnet und beginnen mit der Fehlernummer "SA<Regelnummer>".
-
Doppelklicken Sie auf die erste Meldung
SA0033: Nicht verwendete Variable 'iVar_fb2out'
.Der Fokus springt in den Deklarationsteil von Funktionsbaustein
fb2
und die betreffende Variable wird selektiert. Die Variable ist deklariert, wird aber nicht verwendet. Dies wird mit der Regel 33 überprüft („Nicht verwendete Variablen“). Im Code sind die betroffenen Stellen unterkringelt. -
Testen Sie die automatische Durchführung der Analyse: Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“ In der Registerkarte „Einstellungen“ aktivieren Sie die Option „Statische Analyse automatisch durchführen“. Schließen Sie den Dialog mit „OK“.
-
Wählen Sie den Befehl „Online Einloggen“.
Eine Meldungsbox weist darauf hin, dass Übersetzungsfehler vorliegen. Im Meldungsfenster erscheinen wie vorher die von der Codeanalyse gemeldeten Fehler.
-
Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Regeln“.Deaktivieren Sie nun im Dialog alle Regeln. Aktivieren Sie in Kategorie „Nicht verwendete Objekte auflisten“ explizit die Regel SA0035 („Nicht verwendete Eingabevariablen (35)“) mit einem orangefarbenen Häkchen, also zur Ausgabe einer "Warnung". Sehen Sie sich den Tooltip zum Regeltext an: „Diese Regel entspricht den folgenden PLCopen-Regeln: CP24“). Schließen Sie den Dialog mit „OK“.
die Projekteinstellungen mit „OK“.
-
Wählen Sie den Befehl „Erstellen Code erzeugen“.
Die Analyse wird automatisch ausgeführt. Im Meldungsfenster werden 2 Fehler ausgegeben:
§ SA0035: Nicht verwendet: Eingang 'iVar_fb1in2
und§ SA0035: Nicht verwendet: Eingang 'iVar_fb1in3
. -
Doppelklicken Sie jeweils auf die Meldung und kommentieren Sie die Deklaration aus oder entfernen Sie diese. Führen Sie die Codeanalyse erneut durch.
Keine Fehlermeldungen.
Einhaltung der definierten Namenskonventionen überprüfen
-
Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Namenskonventionen“.
Sie sehen eine Tabelle in Baumstruktur, unterteilt in aufklappbare Kategorien von Variablen und Programmbausteinen.
-
Klappen Sie die Kategorie „Präfxe für Variablen“ - „Präfixe für Typen“ auf: Tragen Sie für „INT (14)“ in der Spalte „Präfix“ ein
i
ein.Klappen Sie die Kategorie „Präfixe für POUs“ - „Präfixe für POU-Typ“ auf. Tragen Sie in der Spalte „Präfix“ Folgendes ein: Bei „PROGRAM (122)“:
prog
, bei „FUNCTIONBLOCK (103)“:fb
. -
Aktivieren Sie die Option „Erstes Zeichen nach Präfix soll ein Großbuchstabe sein“. Deaktivieren Sie alle anderen Optionen.
-
Wählen Sie den Befehl „Erstellen Statische Analyse Statische Analyse durchführen“.
Fehlermeldungen:
-
NC0102: Ungültiger Name 'PLC_PRG': Erwartetes Präfix 'prog'
, weil PLC_PRG nicht das geforderte Präfix hat -
Das erste Zeichen nach dem Präfix soll ein Großbuchstabe sein: 'ivar_fb1in2'
, wegenivar_fb1in2 : INT;
infb1
. -
NC0014: Ungültiger Variablenname P_fSampleProperty: Erwartetes Präfis 'i'
, weil diese Integervariable nicht das geforderte Präfix hat
-
Symbole auf Zulässigkeit prüfen
-
Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Unzulässige Symbole“.
Ein Zeileneditor ermöglicht das Eintragen von Zeichenfolgen, die im Code nicht verwendet werden sollen.
-
Doppelklicken Sie in die leere Zeile und tragen Sie als Beispiel die unzulässige Zeichenfolge
PRO
direkt ein. Doppelklicken Sie in die nächste leere Zeile und öffnen Sie über die Schaltflächedie Eingabehilfe. Wählen Sie aus „Standardtypen“ den Typ „REAL“ aus. Schließen Sie den Dialog mit „OK“.
-
Wählen Sie den Befehl „Erstellen Statische Analyse Statische Analyse durchführen“.
Im Meldungsfenster erscheinen die Fehlermeldungen
Verbotenes Symbol 'REAL'
undVerbotenes Symbol 'PRO'
und Sie können mit Doppelklick auf den Meldungstext zur betreffenden Codestelle springen.
Metriken anzeigen lassen
CODESYS Static Analysis nimmt von Ihnen ausgewählte Messungen am Code vor, und Sie können die Ergebnisse in einer Ansicht darstellen lassen.
-
Wählen Sie den Befehl „Erstellen Statische Analyse Einstellungen“. Wechseln Sie zur Registerkarte „Metriken“.
In einer Tabelle sehen Sie die von CODESYS Static Analysis auf den Code anwendbaren Metriken.
-
Aktivieren Sie für unser Beispiel die Metrik „Anzahl Eingabevariablen“ und geben Sie den zulässigen Wertebereich an: Untergrenze
1
, Obergrenze2
. Aktivieren Sie noch einige zusätzliche Metriken, wie beispielsweise „Codegröße“, „Anzahl Aufrufe“ etc. -
Wählen Sie den Befehl „Erstellen Statische Analyse Standard-Metriken anzeigen“.
Die Ansicht zeigt eine Tabelle mit je einer Zeile für jede „Programmeinheit“ des Beispielprogramms. Für jede aktivierte Metrik gibt es eine Spalte, die die gemessenen Werte zeigt. Werte, die außerhalb des in den Einstellungen definierten Wertebereichs liegen, sind rot hinterlegt. Im Fall unseres konkreten Beispiels ist dies mindestens das Feld „PLC_PRG/Eingänge“, weil in diesem Baustein die Anzahl der Eingabevariablen größer ist als die definierte Obergrenze
2
.
Siehe auch