Quality Check & CtrlPPCheck


Das Add-on Quality Check & CtrlPPCheck von SloopTools beschäftigt sich mit dem Thema Code Quality. Die Code Qualität ist für die Softwarequalität insgesamt wichtig. Und Qualität beeinflusst, wie sicher und zuverlässig Ihre Codebasis ist. Hohe Qualität ist heute für viele Entwicklungsteams von entscheidender Bedeutung. Besonders wichtig ist dies für diejenigen, die sicherheitskritische Applikationen, also SCADA oder HMI, entwickeln.

Das Add-on teilt sich in zwei große Teile:

  • Quality Check

    • Das SloopTools Quality Gate im GEDI
    • Folgende Checks sind, neben vielen anderen, enthalten:
      • Mc Cabe Komplexität
      • Codezeilen pro Skript / Lib
      • Codezeilen pro Funktion
      • Anzahl der Funktionen pro Skript / Lib
      • Anzahl der Funktionen pro Panel
      • Anzahl von Parameter pro Funktion
      • Anzahl von Properties pro Panel
      • Anzahl von Dateien pro Ordner
      • und andere ...
    • Des Weiteren wird die Integrität des Projektes mit folgenden Checks geprüft:
      • Bilder die im Projekt verwendet werden
      • Überladene Dateien aus der Version (Grund: Wartungszwecke)
  • CtrlPPCheck

    • Statische Code Analyse ala cppCheck für WinCC OA CTRL im GEDI
    • Enthalten sind, neben vielen anderen, diese Checks:
      • Undefinierte Variablen
      • Unbenutzte Variablen
      • Unbenutzte Funktions
      • Toter Code
      • Vergleich ist immer true/false
      • Rückgabewert einer bestimmten Funktion wird nicht verwendet
        • z.B. return von dpExists(), ...
      • und andere ...

Video Tutorial

Das Ziel der SloopTools Quality Checks ist es die Code Qualität von WinCC OA Projekten zu verbessern und ein umfangreiches Service zu bieten. Dazu war uns die nahtlose Integration in die Entwicklungsumgebung von WinCC OA (GEDI) sehr wichtig. Die Integration in den GEDI wurde an folgenden Stellen durchgeführt:

  • Drop-Down Menü in der GEDI Menüleiste
  • Dock-Modul für den GEDI mit Ergebnissen
  • Skript-Check über Button im Skript-Editor

Integration GEDI Drop-Down Menü in der GEDI Menüleiste - Dock-Modul für den GEDI mit Ergebnissen

Integration GEDI Skript-Check über Button im Skript-Editor

Quality Check

Mit den Quality Checks stellt SloopTools nun das Quality Gate (Qualitätskontrolle der Add-ons), welchen den Providern im SloopTools Store zur Verfügung steht, allen zur Verfügung. Einfach und übersichtlich dargestellt, um den Benutzern eine schnelle und einfache Möglichkeit zu geben um den Code zu prüfen.

Die einzelnen Checks sind wie folgt zu verwenden:

  • Check des gesamten Projekts
    • Drop-Down Menü - jeweilige Eintrag
    • Dock-Modul - jeweilige Start Button
  • Check pro Skript
    • CtrlPPCheck Button im Skript-Editor

Nachdem ein Check durchgelaufen ist (Die Dauer variert je nach Skriptlänge oder Dateianzahl), werden die Ergebnisse im jeweiligen Tab des Dock-Moduls aufgelistet oder diese sind über das Drop-Down Menü "Öffne Ergebnisse" zu finden. Die Ergebnisse werden in einem Tree übersichtlich für das gesamte Projekt ausgelistet. Der Tree repräsentiert die Ordnerstruktur des geprüften Projektes.

Diese Checks sind mit dem kostenlosen Add-on für jedes Projekt sofort verwendbar.

Mehr Details zu den einzelnen Checks im Kapitel Quality Gate

Voraussetzungen

Um diese Checks durchführen zu können, muss das Software python installiert sein. Benötigt wird die Version 3.6 oder höher.

CtrlPPCheck

Um einen Schritt weiter in der statischen Code-Analyse zu gehen, hat SloopTools den bekannten cppCheck modifiziert um die WinCC OA Scriptsprache CTRL & CTRL++ "anzulernen". Jetzt können Sie mit cppCheck in der WinCC OA-Entwicklungsumgebung eine statische Code-Analyse durchführen.

Der CtrlPPCheck ist wie folgt zu verwenden:

  • Check des gesamten Projektes
    • Drop-Down Menü - CtrlPPCheck
    • Dock-Modul - CtrlPPCheck
  • Check pro Skript
    • CtrlPPCheck Button im Skript-Editor

Lizensierung

Folgende 3 Stufen der Lizenzierung stehen den für den SloopTools Quality Check zu verfügung:

  • FREE Version
    • CtrlPPCheck für Skriptdateien sowie der rekursive Projektprüfung sind enthalten. Limitierung: Max. 1 Fehler pro Fehler ID wird angezeigt. Für die volle Funktionalität, kaufen Sie das Feature CtrlPPCheck im SloopTools Store
  • DEMO Version
    • CtrlPPCheck für Skriptdateien sowie der rekursive Projektprüfung sind enthalten. Limitierung: Max. 1 Fehler pro Fehler ID wird angezeigt. Für die volle Funktionalität, kaufen Sie das Feature CtrlPPCheck im SloopTools Store
  • FULL Version
    • Skriptdateien mit unbegrenzten Zeilen und einer unbegrenzten Anzahl von Dateien für die rekursive Projektprüfung sind enthalten. Es werden alle Fehler angezeigt.
    • Diese Version benötigt eine FREE Lizenz mit dem Zusatzfeature "CtrlPPCheck" vom SloopTools Store. Diese muss gekauft und über den Installer aktiviert werden.

Kommandozeile

Es ist ebenfalls möglich den CtrlPPCheck über Kommandozeile zu starten um z.B. diesen Check in ihre Build-Umgebung einzubinden. Mehr dazu unter CtrlPPCheck - command line.

Severities

Die möglichen Severities für Nachrichten sind:

Severity Beschreibung
error Wird verwendet, wenn Fehler gefunden werden
warning Vorschläge zur defensiven Programmierung, um Fehler zu vermeiden
style Stilprobleme im Zusammenhang mit der Codebereinigung (nicht verwendete Funktionen, redundanter Code, Konstanz usw.)
performance Vorschläge zur Beschleunigung des Codes. Diese Vorschläge basieren nur auf allgemein bekanntem Wissen. Es ist nicht sicher, ob Sie einen messbaren Geschwindigkeitsunterschied erzielen, wenn Sie diese Meldungen korrigieren.
portability Portabilitätswarnungen. 64-Bit-Portabilität. Der Code kann auf verschiedenen Compilern unterschiedlich funktionieren. usw.
information Konfigurationsprobleme. Es wird empfohlen, diese nur während der Konfiguration zu aktivieren.

Unterdrückung von Meldungen

Falls das gemeldete Problem aus eine bestimmten Grund in dieser Konstellation kein Problem ist, kann die Meldung unterdrückt werden. Aktivieren Sie diese Funktionalität über Settings - Inline Suppression.

Sie können festlegen, dass die Unterdrückung nur für ein bestimmtes Symbol gilt:

// ctrlppcheck-suppress undefinedVariable
  unknownVar = 3;

Sie können den Grund für die Unterdrückung mit einem Kommentar beschreiben. Hierfür kann ein Semikolon (;) oder zwei Slashes (//) zur Trennung verwendet werden.

// ctrlppcheck-suppress undefinedVariable ; some comment
// ctrlppcheck-suppress undefinedVariable // some comment

Roadmap

SloopTools hat für den CtrlPPCheck weitere Updates geplant. Folgende Features oder Erweiterungen sind für die Zukunft angedacht (siehe ChangeLog):

  • WinCC OA CTRL Library Check - Alle fehlenden CTRL Funktionen werden konfiguriert, um Anzahl der Argumente und Rückgabewert zu überprüfen (verfügbar seit Version 1.0.2)
  • Vollständiger Panel-Check - Einschließlich Strg + E und Scope-Lib (verfügbar seit Version 1.1.0)
  • Linux support - Auf Anfrage (verfügbar seit Version 1.1.0)
  • Platzlizenz - (verfügbar seit Version 1.1.0)
  • Grenzen für Qualitätskontrolle anpassbar - z.B. Zeilen pro Funktion, Anzahl der Dateien im Verzeichnis, …
  • Überprüfen Sie Ihre Codierungsrichtlinien - z.B. Variablen beginnen immer mit dem Präfix "xy_"
  • CtrlPPCheck für andere IDEs - z.B. Visual Studio um auch dort WinCC OA Code zu prüfen VSCode Marketpace
  • Eigene Bibliotheken Check - Argumente und Rückgabewerte von eigenen Bibliotheken konfigurieren und überprüfen können
  • Bericht erstellen - HTML oder PDF-Bericht für Ihre Qualitätssicherung
  • Vollständiger Projekt-Check - auch für Panels
  • Überprüfen Sie auch alle Subprojekte - Nicht nur das lokale Projekt
  • Prüfen Sie, ob eine Überladung vom lokalen Projekt zu einem bestimmten Subprojekt vorliegt - Vergleichen Sie detaillierter
  • Überprüfen Sie bestimmte Dateien oder Verzeichnisse aus dem Dateibaum - z.B. alle Skripte unter class (Rechte Maus im Dateibaum)
  • Rückgabewerte von Funktionen mit return prüfen - Beispiels:
int functionA()
{
  if (something)
  {  //do something
  return "something"; // Wrong return type int
  }
  else
  {  //do something
  return 1; // Right
  }
}
  • Rückgabewerte von Funktionen mit Zuweisung prüfen - Beispiel:
float st;
int i;

string rs = functionB(f,i) // Wrong return value type for rs (Casting not 100%)

int functionB(float f, int i)
{
  //do something
}
  • Aufruf von Funktionen mit Parameter prüfen - Beispiel:

string st;
int i;

int ri = functionB(st,i) // Wrong parameter type st

int functionB(float f, int i)
{
  //do something
}

Limitations

Software Limitations

  • WinCC OA 3.15 und 3.16
  • Linux support
    • Aktuell auf Anfrage

Check Limitations

  • WinCC OA CTRL Library Check ist nicht komplett
    • Es wurden noch nicht alle CTRL Funktionen komplett konfiguriert
  • Undefinierte Variablen werden in Funktionsaufrufen nicht gefunden
  • CtrlPPCheck merkt in Libraries definierte Funktionen als "not used" an
  • Checks laufen nur über unverschlüsselte Dateien
  • Kompletter Projekt Check für CtrlPPCheck nur für Skripts / Libs
  • Panel Skripte können nur einzeln geprüft werden
    • Strg + E funktioniert nicht und ScopeLib wird nicht eingebunden
  • Checks im GEDI funktionieren nur mit Event Verbindung
  • Alle Ergebnisse aus CtrlPPCheck werden in der Übersicht als Fehler angezeigt
  • Keine eigene (custom) cfg Dateien für die GEDI Integration verwendbar
  • Rückgabewerte von Funktionen mit return wird nicht geprüft
  • Rückgabewerte von Funktionen mit Zuweisung wird nicht geprüft
  • Aufruf von Funktionen mit Parameter wird nicht geprüft

Lizenz Limitations

  • Anzahl Fehlermeldungen ist abhängig von der Lizenz
  • '#uses' wird nur berücksichtigt, wenn eine CtrlPPCheck Lizenz vorhanden

results matching ""

    No results matching ""