Quality Gate

Add-ons werden von SloopTools einer eingehende Qualitätskontrolle unterzogen.

Das Quality Gate ist eine eigene Instanz von Servern, die die Add-ons heranziehen und diese durch verschiedenste Checks und Tests zu leiten um am Ende einen Quality Score zu berechnen. Dieser Score wird eine wichtige Bewertungsgrundlage im Store werden.

Ablauf des Quality Gates

Aktuell werden Checks und Tests des SloopTools Standard Quality Gate für jedes Add-on* durchgeführt. Später kann der Provider Premium-Checks wie zB. Unit-Tests oder Security-Tests aktivieren. Folgende Checks, Tests und Schritte sind im SloopTools Standard Quality Gate enthalten:

  1. Namensgebung - Subprojekt Name im hochgeladenen ZIP muss mit dem "Technical Name" übereinstimmen. Details dazu unter HowTo "Add-on erstellen"
  2. AddonInformation - Für die weitere Bearbeitung in der SCADA Software, wird ein eigenes File AddonInformation.json mit allen relevanten Daten erstellt.
  3. Bilder Check
  4. Script Check
  5. Bibliothek Check
  6. Panels Check
  7. Overloaded Files Check
  8. SloopTools Internal Check
  9. Lizenzaktivierung
  10. Syntax Check
  11. Verschlüsselung
  12. Rückmeldung an Store - Fertiges Pakets und Quality Score werden an den SloopTools Store übermittelt

Jeder Check kann einen Score zwischen 0 und 100 zurückliefern. Die Summe aller durchgeführten Checks, ergibt den Quality Score. Wenn mindestens eine Prüfung einen Score von 0 erreicht kann das Add-on nicht veröffentlicht werden. In diesem Fall muss bei dem Add-on nachgebessert werden und dieses erneut hochgeladen werden. Hierfür muss jedoch keine neue Version angelegt werden. Es ist möglich, bei der bestehenden Version, das vorhandene ZIP Paket zu löschen und die verbesserte Variante hochzuladen.

Im Fall, dass bei einem Add-on z.B. keine Panels mitgeliefert werden, wird bei der jeweiligen Prüfung ein Score von 1 zurückgeliefert. Dadurch ist es möglich auch Add-ons ohne Scripte oder Panels zu veröffentlichen.

*Wenn die Tests für dieses Add-on verfügbar sind. Z.B. wird der Panels-Check bei Add-ons ohne Panels nicht durchgeführt und mit Score = 1 bewertet.

Details zu den Quality Gate Checks

Jeder der aufgeschlüsselten Checks erzeugt einen Eintrag in der Quality Gate Tabelle unterhalb der Progress Tabelle. Jeder Test hat Spezialprüfungen, diese werden in diesem Kapitel erläutert. Um die Detailauswertung zu sehen um Verbesserungen ableiten zu können, kann über einen Doppelklick oder den „Info“-Button eines Checks, das Report/Log Fenster geöffnet werden. Das Fenster teilt sich in zwei Teile:

Detailauswertung des Tests

Hier werden alle Details des Checks dargestellt. Zusätzlich zu den Ergebnissen der Spezialprüfungen, wird auch der Score aufgeschlüsselt. Um Fehler schneller identifizieren zu können werden diese im Baum ausgeklappt. Zusehen sind hierbei folgende Spalten:

  • Source Tree
    • Score
      • "Total points" - Alle in diesem Check möglichen Punkte
      • "Error points" - Alle Fehler und damit abgezogenen Punkte
      • "%" - Der errechnete Prozentsatz dieses Checks
    • Überprüfte Files wie sie im ZIP File mitgegeben wurden
  • Value
    • Der berechnete Wert des einzelnen Checks
  • Good range
    • Der vorgegebene erlaubte Bereich, vorgegeben von SloopTools auf Basis internationaler Richtlinien
  • Error points
    • "1" - Der Wert des Checks ist nicht im Rahmen der Vorgaben und hat damit einen Abzug ergeben
    • "(SUMME)" - Die Abzüge der einzelnen Files werden über die Hierarchie der Files aggregiert um eine besser Übersichtlichkeit zu schaffen
  • Reason
    • Das Quality Gate gibt in der Zeile des Checks auch eine Begründung des Abzugs um daraus Verbesserungen ableiten zu können

Log Messages

Dieses Fenster ist per Default zugeklappt. Hier können alle Log Messages, die der Test erzeugt hat, angesehen werden. Debug-Informationen werden hier nicht dargestellt.

Allgemeiner statischer Check

Dieser Checks gibt eine erste Einschätzung über den gesamten Ordner und seine Files und wird daher für alle Checks mit Ordner durchgeführt.

Check pro Ordner Good range Begründung
is Empty - ohne Ordner & Files FALSE Ein leerer Ordner erschwert die Übersichtlichkeit
Count of sub directories - Anzahl Unterordner <= 5 Mehr als 5 Unterordner erschweren das Auffinden
Count of files recursive - Anzahl Files rekursiv über alle Unterordner >= 0 in leere Ordnerstrukturen erschweren die Übersichtlichkeit
Count of files - Anzahl Files in diesem Ordner <= 10 Mehr als 10 Dateien erschweren das Auffinden

Zusätzliche Informationen
Average CCN (Cyclomatic Complexity No. McCabe-Metric) - Durchschnittliche Komplexität
Average NLOC (No. Lines Of Code) Durchschnittliche Anzahl der Codezeilen
CCN (Cyclomatic Complexity No. McCabe-Metric) - Summe der Komplexität aller Files in diesem Ordner
NLOC (No. Lines Of Code) - Summe aller Codezeilen

Bilder Check - statisch (QgStaticCheck_Pictures)

Check pro File Good range
Size - Dateigröße 1 MB
Extention - Dateityp "bmp", "xpm", "jpg", "png", "svg", "jpeg", "gif", "mng", "ico", "wmf"

Script Check - statisch (QgStaticCheck_Scripts)

Check pro Script Good range Begründung
Is an example file - Bsp. File FALSE Bsp. Skripte (unter dem Ordner Examples) werden nicht in die Berechnung aufgenommen
Is calculated - Wird berechnet TRUE Es kann nicht berechnet werden, weil es zb. verschlüsselt ist.
NLOC - Codezeilen 4-600 Das gesamte Skript ist über 600 Zeilen schwer zu analysieren

Check pro Funktion Good range Begründung
NLOC (No. Lines Of Code) - Codezeilen 4-80 Mehr als 80 Codezeilen sind in einer Funktion schwer zu überblicken
Count of Parameter - Übergabeparameter der Funktion <= 10 Mehr als 10 Parameter machen eine Funktion schwer lesbar
Count of lines - Gesamtzeilen NA Diese Zahl im Vergleich zu den Codezeilen lässt auf den Kommentarstyle schließen
CCN (Cyclomatic Complexity No. McCabe-Metric) <= 15 Eine Komplexität größer als 15 macht eine Funktion später schwer zu analysieren

Bibliothek Check - statisch (QgStaticCheck_Libs)

Dieser Check ist ähnlich dem Skript Check, bezieht sich aber auf den Bibliotheks Ordner.

Panels Check - statisch (QgStaticCheck_Panels)

Check pro Panel Good range Begründung
Is an example file - Bsp. File FALSE Bsp. Panels (unter dem Ordner examples) werden nicht in die Berechnung aufgenommen
Is calculated - Wird berechnet TRUE Es kann nicht berechnet werden, weil es zb. verschlüsselt ist.
Is encrypted - Verschlüsselt FALSE Verschlüsselte Panels können nicht berechnet werden und daher kann auch keine Qualitätaussage durchgeführt werden
Backup panel (.bak) - Backup Panel vorhanden FALSE Backup Panel sollten vor Lieferung gelöscht werden
Properties NA Es werden wichtige Properties eines Panels mitgespeichert um eine spätere Funktion (Vergleich mit alter Version) zur Verfügung zu stellen
Count of Shapes - Anzahl der Grafikelemente <= 100 Mehr als 100 Elemente erschweren eine Analyse des Panels
Count of Properties - Anzahl der Properties NA
Count of Events - Anzahl der Events <= 100 Mehr als 100 Events erschweren eine Analyse des Panels

Check pro Event Good range Begründung
Count of functions - Anzahl der Funktionen 1-5 Mehr als 5 Funktionen in einem Event, sind schwer zu analysieren
NLOC (No. Lines Of Code) - Codezeilen 4-600 Mehr als 600 Codezeilen sind in einem Event schwer zu überblicken

Check pro Funktion Good range Begründung
NLOC (No. Lines Of Code) - Codezeilen 4-80 Mehr als 80 Codezeilen sind in einer Funktion schwer zu überblicken
Count of Parameter - Übergabeparameter der Funktion <= 10 Mehr als 10 Parameter machen eine Funktion schwer lesbar
Count of lines - Gesamtzeilen NA Diese Zahl im Vergleich zu den Codezeilen lässt auf den Kommentarstyle schließen
CCN (Cyclomatic Complexity No. McCabe-Metric) <= 15 Eine Komplexität größer als 15 macht eine Funktion später schwer zu analysieren

Overloaded Files Check - statisch (QgStaticCheck_OverloadedFiles)

Der Check Overloaded Files überprüft, ob Files aus dem Produkt im Add-on verwendet wurden. Dieses Überladen von Files ist generell möglich, birgt aber Gefahren bei Upgrade des Produktes und sollte daher genau bedacht sein. Es gibt jedoch einige Files, die dürfen bzw. sollen in bestimmten Fällen überladen werden. Diese Ausnahmen wurden im Check vorgesehen und sind daher erlaubt. Erlaubte Files sind:

  • CONFIG_REL_PATH + "powerconfig"
  • DATA_REL_PATH + "RDBSetup/ora/RDB_config_template.sql"
  • SCRIPTS_REL_PATH + "userDrivers.ctl"
  • SCRIPTS_REL_PATH + "userPara.ctl"
  • LIBS_REL_PATH + "aesuser.ctl"
  • LIBS_REL_PATH + "asModifyDisplay.ctl"
  • LIBS_REL_PATH + "driverSettings_HOOK.ctl"
  • PANELS_REL_PATH + "vision/aes/_AS_propFilterExtended.pnl"
  • PANELS_REL_PATH + "vision/aes/_ES_propFilterExtended.pnl"
Check Good range
Is file overloaded - File überladen FALSE

SloopTools Internal Check - statisch (QgStaticCheck_Internal)

Dieser Check überprüft ob bestimmte Files, für SloopTools interne Funktionen, zB. der Installationsabschluss des Add-ons, vorhanden sind.

Check Good range
File exists - File vorhanden TRUE

Lizenzaktivierung (QgApplyLicense)

Dieser Check überprüft, ob die Lizenzüberprüfung im Code vorgesehen wurde. Der Provider muss die Funktionen aus der SLTLicenseCtrlExt selbstständig und sinnvoll in seinem Code verwenden. Details zum Thema Lizensierung für das Add-on findsen Sie* unter Lizenzinfo für Provider. Gerne nehmen wir uns Zeit um gemeinsam zu überlegen an welchen Stellen welche Lizenzfunktion verwendet werden sollen.

Sollte in einem Add-on keine Lizenzüberprüfung eingebaut worden sein, wird dieser Check auf 0 gesetzt und das Add-on vor der Freigabe gesperrt. Damit soll verhindert werden, dass durch einen Fehler des Providers sein Add-ons ohne Lizenzüberprüfung im Store verfügbar ist. Ausnahmen sind folgende:

  • Add-ons ohne Panels, Skripte und Bibliotheken (z.B.: EWOs, API Manager, Bilder/Grafik Bibliotheken)
  • Add-ons der Kategorie "Demo"
Check pro File Good range
Count of implemented license check - Anzahl Lizenzchecks >=1

Syntax Check (QgSyntaxCheck)

Im Check Syntax, werden alle Syntax-Fehler der Files im Add-on aufgelistet. Es werden nur die Files mit Syntaxfehlern aufgelistet.

Check pro File Good range
Syntax is valid - Ohne Syntaxfehler TRUE

Verschlüsselung (QgEncryptSource)

Dieser Check, überprüft ob alle gelieferten Panels, Skripte und Bibliotheken verschlüsselt werden können. Es werden alle Files aus Gründen des Know-How Schutzes automatisch verschlüsselt. Das automatische Verschlüsseln kann verhindert werden, Details dazu unter Verschlüsselung verhindern. Sollte jedoch ein File nicht verschlüsselt werden, dieses aber eine Lizenzüberprüfung enthalten, erzeugt dies einen Eintrag in diesem Check. Das File wird trotzdem verschlüsselt, um einen Missbrauch zu verhindern.

Verschlüsselung verhindern

  • Alle Panels und Skripte die unter dem Ordner /examples abgelegt sind, werden automatisch nicht verschlüsselt.
  • Mit Hilfe des Kommentars
// SLT:NO_ENCRYPT

kann ein Panel oder ein Skript von der automatischen Verschlüsselung des Quality Gates ausgeschlossen werden.

  • Die Verhinderungsmechanismen sind unwirksam, sobald eine der Lizenzcheck-Funktionen der SLTLicenseCtrlExt in dieser Datei verwendet wird.

results matching ""

    No results matching ""