Statische Codeanalyse konfigurieren und durchführen
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.
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
iVar_fb2out:=iVar_fb2in - 1;
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 Registerkarte Regeln.
. Wechseln Sie zurSie 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 roten, orangen 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
.Im Meldungsfenster werden Fehler ausgegeben. Die Meldungstexte sind mit einem
gekennzeichnet und beginnen mit der Fehlernummer „SA<Regelnummer>“.
Doppelklicken Sie auf die 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 Einstellungen aktivieren Sie die Option Statische Codenalyse automatisch nach dem Kompilieren ausführen. Schließen Sie den Dialog mit OK.
. In der RegisterkarteWählen Sie den Befehl
.Eine Meldungsbox weist darauf hin, dass Übersetzungsfehler vorliegen. Im Meldungsfenster erscheinen wie vorher die von der Codeanalyse gemeldeten Fehler.
Wählen Sie den Befehl 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.
. Wechseln Sie zur RegisterkarteWählen Sie den Befehl
.Die Analyse wird automatisch ausgeführt. Im Meldungsfenster werden in der Kategorie Statische Analyse Meldungen 2 Fehler ausgegeben:
§ SA0035: Nicht verwendet: Eingang 'iVar_fb1in2
§ 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 Namenskonventionen.
. Wechseln Sie zur RegisterkarteSie 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
.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', wegen
ivar_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 Registerkarte Unzulässige Symbole.
. Wechseln Sie zurEin 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
.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 Registerkarte Metriken.
. Wechseln Sie zurIn 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
.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
.