Skip to main content

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

  1. 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.

  2. 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.

  3. 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.

  4. Wählen Sie den Befehl Erstellen → Statische Analyse → Statische Analyse durchführen.

    Im Meldungsfenster werden Fehler ausgegeben. Die Meldungstexte sind mit einem sa_icon_message.png gekennzeichnet und beginnen mit der Fehlernummer „SA<Regelnummer>“.

  5. 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.

  6. 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 Codenalyse automatisch nach dem Kompilieren ausführen. Schließen Sie den Dialog mit OK.

  7. 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.

  8. 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.

  9. Wählen Sie den Befehl Erstellen → Code erzeugen.

    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

  10. 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

  1. 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.

  2. 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.

  3. Aktivieren Sie die Option Erstes Zeichen nach Präfix soll ein Großbuchstabe sein. Deaktivieren Sie alle anderen Optionen.

  4. 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', wegen ivar_fb1in2 : INT; in fb1.

    • 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

  1. 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.

  2. 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äche _cds_icon_three_dots.png die Eingabehilfe. Wählen Sie aus Standardtypen den Typ REAL aus. Schließen Sie den Dialog mit OK.

  3. Wählen Sie den Befehl Erstellen → Statische Analyse → Statische Analyse durchführen.

    Im Meldungsfenster erscheinen die Fehlermeldungen Verbotenes Symbol 'REAL' und Verbotenes 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.

  1. 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.

  2. Aktivieren Sie für unser Beispiel die Metrik Anzahl Eingabevariablen und geben Sie den zulässigen Wertebereich an: Untergrenze 1, Obergrenze 2.

    Aktivieren Sie noch einige zusätzliche Metriken, wie beispielsweise Codegröße, Anzahl Aufrufe etc.

  3. 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.