Fehler

Reiter ab Version 3.2.0 (Beta) von Grund auf überarbeitet. In Version 3.1.2 listet er nur die Kompilierungsfehler und die doppelten Bezeichner auf.

Der Reiter Fehler analysiert die gesamte Datenbank und listet die Fehler und Warnungen ihres Codes auf: Felder, Trigger, Spalten der Ansichten, Druckberichte, globaler Code und Trigger „After Open“. Die Analyse übernimmt ein Analysator, der aus dem von Ninox übertragen wurde: Was er meldet, entspricht dem, was Ninox sagen würde. Jede Zeile führt direkt zum betroffenen Code.

Der Reiter ist den Administratoren vorbehalten. Er zeigt nur sein Symbol, ein Warndreieck; sein Name erscheint, wenn Sie mit der Maus darüberfahren, und ein rotes Badge nennt die Anzahl der angezeigten Diagnosen.

Die Bilanz und die Filter

Filter der Registerkarte Fehler

Die Kopfzeile zieht Bilanz: „Kein Fehler“, „3 Fehler“, „3 Fehler, 12 Warnung(en)“, „36 Warnung(en)“ …

Die Schaltfläche Filter öffnet das Fenster Angezeigte Diagnosen: ein Schalter pro Diagnosetyp, in zwei Gruppen geordnet, Fehler und Warnungen. Jede Zeile nennt die Anzahl der Diagnosen dieses Typs in der Datenbank – auch wenn der Typ ausgeblendet ist: Sie sehen, was Sie ausblenden, ebenso wie das, was Sie anzeigen. Sind Typen ausgeblendet, erinnert die Schaltfläche daran („2 Typ(en) ausgeblendet“); Alle anzeigen blendet sie wieder ein. Die Filter werden vom Browser gespeichert und gelten für alle Datenbanken.

Was gemeldet wird

Fehler verhindern, dass der Code funktioniert:

FilterWas gemeldet wird
KompilierungsfehlerCode, den Ninox ablehnt: Die Formel wird nicht ausgeführt.
Doppelte IDsMehrere Felder derselben Tabelle teilen sich denselben internen Bezeichner (zum Beispiel ein Eingabefeld und ein visuelles Element): Die Verweise werden mehrdeutig.
Fehler des AnalysatorsFehler, die der Analysator von Ninext findet und die Ninox nicht gemeldet hat.
Fehler in eingebetteten InhaltenEin JavaScript-Syntaxfehler in einem nativen Block #{ … }#.

Warnungen melden Code, der funktioniert, aber vermutlich nicht so, wie Sie denken:

FilterWas gemeldet wird
AnalysatorDie Warnungen von Ninox sowie fehlerhafte NativeJS-Annotationen (unbekannter Typ, Tabelle nicht gefunden).
ServerkontextCode ohne Wirkung dort, wo er ausgeführt wird: eine Oberflächenfunktion wie alert() oder openRecord() oder ein nativer Block #{ … }# in einem Tabellen-Trigger (bei neuem Datensatz, nach Änderung) oder in einem do as server. Auf dem Server werden sie stillschweigend ignoriert.
Eingefrorene FehlerFehler, die Ninox noch anzeigt, obwohl die Formel in Ordnung ist (siehe unten).
Nicht aufgelöste ReferenzenDas Lesen eines Referenzfeldes, dessen Zieltabelle nicht mehr existiert (gelöschte Tabelle, fehlende externe Datenbank): Es liefert „void“, und jeder Zugriff über einen Punkt schlägt fehl.
Eingebettete InhalteEin typisierter JavaScript-Block, der nichts zurückgibt, auf allen oder auf einigen seiner Pfade; ein asynchroner Block, der nie callback aufruft; unausgeglichenes HTML, das an html() übergeben wird (nie geschlossenes Tag, schließendes Tag ohne Gegenstück); CSS mit unausgeglichenen geschweiften Klammern oder mit Regeln, die der Browser verwerfen wird.
Toter Code in SkriptenMit var oder let deklarierte Variablen, die danach nie gelesen werden.
Unbenutzte globale FunktionenGlobale Funktionen, die kein Element der Datenbank aufruft.
Unbenutzte FormelnFormeln, auf die kein Code verweist.

Unbenutzte Funktionen und Formeln sind nur Kandidaten für das Löschen: Ein dynamisch zusammengesetzter oder aus JavaScript heraus erfolgter Aufruf entgeht der Analyse, und eine Formel, die in einem Formular oder einer Ansicht angezeigt wird, bleibt nützlich, auch wenn kein Code sie liest. Prüfen Sie vor dem Löschen.

Eine Zeile lesen

Diagnosen in der Registerkarte Fehler

Die Diagnosen sind nach Kategorien geordnet. Der Titel jeder Kategorie trägt ein Badge, das ihre Anzahl angibt: rot für Fehler, orange für Warnungen. Gibt es mehrere Kategorien, sind sie eingeklappt, und ein Klick auf einen Titel klappt die zugehörige auf; eine einzelne Kategorie wird aufgeklappt angezeigt.

Die Kategorien tragen den Namen ihres Filters, mit Ausnahme der folgenden:

FilterKategorie in der Liste
Fehler des AnalysatorsZusätzliche Fehler des Ninext-Analysators
AnalysatorWarnungen des Analysators
ServerkontextCode außerhalb seines Ausführungskontexts
Eingefrorene FehlerEingefrorene Fehler (die Formel ist in Ordnung)
Fehler in eingebetteten Inhalten und Eingebettete InhalteEine einzige Kategorie, Eingebettetes JS / HTML / CSS, die bis zu zwei Badges trägt: eines für ihre Fehler, eines für ihre Warnungen.

Jede Zeile zeigt:

  • kursiv die Meldung – grau bei einem Fehler, bernsteinfarben bei einer Warnung –, gefolgt vom betroffenen Codeausschnitt; passen zwei Typen nicht zusammen, nennt ein Satz, welche es sind;
  • das betroffene Element, dargestellt wie in Felder & Formeln: Typsymbol, Abhängigkeits-Badge, „Fx“, Breadcrumb-Navigation.

Wenn Sie mit der Maus über den fett gedruckten Teil der Breadcrumb-Navigation fahren (die Formel, den Trigger oder die globale Funktion), wird der Code angezeigt, die Fehler unterstrichen.

Zum Code springen

Klicken Sie auf den fett gedruckten Teil der Breadcrumb-Navigation: Ninext öffnet den Editor an der richtigen Stelle. Beim globalen Code wird die Diagnose der Funktion zugeordnet, die sie enthält – „Globale Funktionen › funktionsName“ –, und der Editor des globalen Codes öffnet sich bei dieser Funktion. Der Trigger „After Open“ öffnet sich auf dieselbe Weise.

Die rote Schaltfläche, die beim Überfahren rechts in der Zeile erscheint, im Bearbeitungsmodus („Edit mode“), wählt bei einer Zeile, die ein Feld betrifft, das Feld in seinem Formular aus und öffnet bei den übrigen Zeilen den Code-Editor.

Unten, in der Demo-Datenbank, ein Klick auf den fett gedruckten Teil einer Zeile, die die Formel eines Feldes betrifft: Ninext öffnet einen Datensatz der Tabelle, das Fenster des Feldes und dann den großen Formeleditor, in dem die betroffene Stelle unterstrichen ist; wenn Sie mit der Maus darüberfahren, erscheint die Meldung. Die übrigen Elemente der Breadcrumb-Navigation öffnen ihre eigene Ebene: Ein Klick auf den Namen des Feldes öffnet den Datensatz und das Fenster des Feldes, ohne den Editor.

Aus der Registerkarte Fehler öffnet ein Klick auf den fett gedruckten Teil den Editor der betroffenen Formel, die fehlerhafte Stelle unterstrichen

Eine Analyse im Hintergrund

Die Analyse arbeitet in kleinen Portionen und gibt dazwischen die Kontrolle an den Browser zurück: Selbst bei einer großen Datenbank friert nichts ein. Nach jeder Änderung des Schemas startet sie von selbst neu. Es gibt keine Fortschrittsanzeige: Die vorherige Liste bleibt sichtbar, bis die neue sie ersetzt.

Eingefrorene Fehler

Es kommt vor, dass Ninox ein Formelfeld während eines Neuladens des Schemas kompiliert, bevor dieses vollständig ist, und es danach nicht mehr neu kompiliert: Das Feld zeigt dann während der gesamten Sitzung Fehler an, obwohl seine Formel korrekt ist. Ninext kompiliert die Formel selbst neu; treten die Fehler dabei nicht auf, ordnet es sie unter Eingefrorene Fehler ein.

Abhilfe: Laden Sie die Datenbank neu, oder speichern Sie eine beliebige Änderung am Schema.

Beim Tippen, in den Editoren von Ninox

Fehler und Warnungen werden auch beim Tippen in den Skripteditoren von Ninox unterstrichen (großer Formeleditor, Panel eines Feldes oder einer Tabelle):

  • rote Wellenlinie für einen Fehler, bernsteinfarbene gepunktete Linie für eine Warnung;
  • wenn Sie mit der Maus über die unterstrichene Stelle fahren, erklärt ein Tooltip den Befund und nennt die Typen, die nicht zusammenpassen;
  • unterstrichen wird nur, wenn Ninext mit Sicherheit weiß, in welcher Tabelle der Code ausgeführt wird;
  • die Autovervollständigungsliste hat Vorrang: Solange sie angezeigt wird, öffnet sich kein Tooltip.

Das Markieren eines Wortes hebt seine anderen Vorkommen hervor – in den Editoren von Ninox, in der Konsole und in den Codeblöcken von Ninext. Wenn Sie mit der Maus über den Editor fahren, erscheinen oben rechts zwei Schaltflächen: Formatieren und In der Konsole debuggen (siehe Konsole).

Verbliebene Spalten in Tabellenansichten

Ein Kompilierungsfehler kann von einer Spalte einer Tabellenansicht stammen, die noch ein gelöschtes Feld verwendet. Ninox meldet nichts, da das Feld schlicht aus dem Schema entfernt wurde: Es handelt sich um einen verbliebenen Verweis in der Spaltenkonfiguration der Ansicht.

So beheben Sie ihn:

  1. Klicken Sie auf Formel, fett gedruckt am Ende der Breadcrumb-Navigation („Tabelle › Ansicht › … › Formel“).
  2. Ninext öffnet die Ansicht, den Spalteneditor und dann den Editor ihrer Formel.
  3. Klicken Sie im Formeleditor auf OK, dann im Spalteneditor.

Beim Speichern frischt Ninox die Konfiguration der Ansicht auf und entfernt die Verweise auf nicht mehr vorhandene Felder. Der Fehler verschwindet aus Ninext.