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.
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:
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.
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:
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:
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.
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 |
Check pro File | Good range |
---|---|
Size - Dateigröße | 1 MB |
Extention - Dateityp | "bmp", "xpm", "jpg", "png", "svg", "jpeg", "gif", "mng", "ico", "wmf" |
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 |
Dieser Check ist ähnlich dem Skript Check, bezieht sich aber auf den Bibliotheks Ordner.
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 |
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:
Check | Good range |
---|---|
Is file overloaded - File überladen | FALSE |
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 |
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:
Check pro File | Good range |
---|---|
Count of implemented license check - Anzahl Lizenzchecks | >=1 |
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 |
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.
// SLT:NO_ENCRYPT
kann ein Panel oder ein Skript von der automatischen Verschlüsselung des Quality Gates ausgeschlossen werden.