Erreurs
Onglet entièrement repensé à partir de la version 3.2.0 (bêta). En 3.1.2, il ne liste que les erreurs de compilation et les identifiants en double.
L'onglet Erreurs analyse toute la base et liste les erreurs et les avertissements de son code : champs, déclencheurs, colonnes des vues, rapports d'impression, code global et déclencheur « After Open ». L'analyse est faite par un analyseur transcrit de celui de Ninox : ce qu'il signale correspond à ce que Ninox dirait. Chaque ligne mène directement au code en cause.
L'onglet est réservé aux administrateurs. Il n'affiche que son icône, un triangle d'avertissement ; son nom apparaît au survol, et une pastille rouge donne le nombre de diagnostics affichés.
Le bilan et les filtres

L'en-tête donne le bilan : « Aucune erreur », « 3 erreur(s) », « 3 erreur(s), 12 avertissement(s) », « 36 avertissement(s) »…
Le bouton Filtres ouvre le panneau Diagnostics affichés : un interrupteur par type de diagnostic, rangés en deux groupes, Erreurs et Avertissements. Chaque ligne donne le nombre de diagnostics de ce type dans la base — même quand le type est masqué : vous voyez ce que vous masquez autant que ce que vous affichez. Quand des types sont masqués, le bouton le rappelle (« 2 type(s) masqué(s) ») ; Tout afficher les rétablit. Les filtres sont mémorisés par le navigateur et valent pour toutes les bases.
Ce qui est signalé
Les erreurs empêchent le code de fonctionner :
| Filtre | Ce qui est signalé |
|---|---|
| Erreurs de compilation | Le code que Ninox refuse : la formule ne s'exécute pas. |
| ID en doublon | Plusieurs champs d'une même table partagent le même identifiant interne (par exemple un champ de saisie et un élément visuel) : les références deviennent ambiguës. |
| Erreurs de l'analyseur | Les fautes que l'analyseur de Ninext repère et que Ninox n'a pas signalées. |
| Erreurs des contenus incorporés | Une faute de syntaxe JavaScript dans un bloc natif #{ … }#. |
Les avertissements signalent un code qui fonctionne, mais sans doute pas comme vous le pensez :
| Filtre | Ce qui est signalé |
|---|---|
| Analyseur | Les avertissements de Ninox, et les annotations NativeJS mal formées (type inconnu, table introuvable). |
| Contexte serveur | Un code sans effet là où il s'exécute : une fonction d'interface comme alert() ou openRecord(), ou un bloc natif #{ … }#, placés dans un déclencheur de table (après création, après modification) ou dans un do as server. Sur le serveur, ils sont ignorés sans bruit. |
| Erreurs figées | Des erreurs que Ninox affiche encore alors que la formule est saine (voir plus bas). |
| Références non résolues | La lecture d'un champ de référence dont la table cible n'existe plus (table supprimée, base externe absente) : elle vaut « void », et toute traversée par un point casse. |
| Contenus incorporés | Un bloc JavaScript typé qui ne renvoie rien, sur tous ses chemins ou sur certains ; un bloc asynchrone qui n'appelle jamais callback ; un HTML déséquilibré passé à html() (balise jamais fermée, balise fermante orpheline) ; un CSS aux accolades déséquilibrées, ou dont le navigateur écartera des règles. |
| Code mort dans le code | Des variables déclarées par var ou let, puis jamais lues. |
| Fonctions globales non utilisées | Des fonctions globales qu'aucun élément de la base n'appelle. |
| Formules non utilisées | Des formules qu'aucun code ne référence. |
Les fonctions et les formules non utilisées ne sont que des candidates à la suppression : un appel construit dynamiquement ou fait depuis du JavaScript échappe à l'analyse, et une formule affichée dans un formulaire ou une vue reste utile même si aucun code ne la lit. Vérifiez avant de supprimer.
Lire une ligne

Les diagnostics sont rangés par famille. Le titre de chaque famille porte une pastille qui en donne le nombre : rouge pour les erreurs, orangée pour les avertissements. Quand il y a plusieurs familles, elles sont repliées, et un clic sur un titre déplie la sienne ; une famille seule s'affiche dépliée.
Les familles portent le nom de leur filtre, sauf celles-ci :
| Filtre | Famille dans la liste |
|---|---|
| Erreurs de l'analyseur | Erreurs supplémentaires de l'analyseur Ninext |
| Analyseur | Avertissements de l'analyseur |
| Contexte serveur | Code hors de son contexte d'exécution |
| Erreurs figées | Erreurs figées (la formule est saine) |
| Erreurs des contenus incorporés et Contenus incorporés | Une seule famille, JS / HTML / CSS incorporés, qui porte jusqu'à deux pastilles : une pour ses erreurs, une pour ses avertissements. |
Chaque ligne donne :
- en italique, le message — gris pour une erreur, ambre pour un avertissement — suivi de l'extrait de code en cause ; quand deux types ne s'accordent pas, une phrase dit lesquels ;
- l'élément concerné, présenté comme dans Champs & Formules : icône de type, pastille des dépendances, « Fx », fil d'Ariane.
Le survol du passage en gras du fil d'Ariane (la formule, le déclencheur ou la fonction globale) montre le code, fautes soulignées.
Aller au code
Cliquez sur le passage en gras du fil d'Ariane : Ninext ouvre l'éditeur au bon endroit. Pour le code global, le diagnostic est rattaché à la fonction qui le contient — « Fonctions globales › nomDeLaFonction » — et l'éditeur du code global s'ouvre sur elle. Le déclencheur « After Open » s'ouvre de la même façon.
Le bouton rouge qui apparaît au survol, à droite de la ligne, en mode édition (« Edit mode »), sélectionne le champ sur son formulaire pour une ligne qui porte sur un champ, et ouvre l'éditeur du code pour les autres lignes.
Ci-dessous, dans la base de démonstration, un clic sur le passage en gras d'une ligne qui porte sur la formule d'un champ : Ninext ouvre une fiche de la table, la fenêtre du champ, puis le grand éditeur de formule, où le passage en cause est souligné ; son survol en donne le message. Les autres éléments du fil d'Ariane ouvrent leur propre niveau : un clic sur le nom du champ ouvre la fiche et la fenêtre du champ, sans l'éditeur.

Une analyse en tâche de fond
L'analyse travaille par petites tranches, en rendant la main au navigateur : même sur une grosse base, rien ne se fige. Elle se relance d'elle-même après chaque modification du schéma. Il n'y a pas d'indicateur de progression : la liste précédente reste affichée jusqu'à ce que la nouvelle la remplace.
Les erreurs figées
Il arrive que Ninox compile un champ formule pendant un rechargement du schéma, avant que celui-ci soit complet, puis ne le recompile plus : le champ affiche des erreurs pendant toute la session, alors que sa formule est juste. Ninext recompile la formule de son côté ; si les erreurs n'y apparaissent pas, il les classe dans Erreurs figées.
Remède : rechargez la base, ou enregistrez une modification quelconque du schéma.
Pendant la frappe, dans les éditeurs de Ninox
Les erreurs et les avertissements sont aussi soulignés pendant la frappe dans les éditeurs de script de Ninox (grand éditeur de formule, panneau d'un champ ou d'une table) :
- vaguelette rouge pour une erreur, pointillé ambre pour un avertissement ;
- au survol du passage souligné, une bulle en donne l'explication, et dit quels types ne s'accordent pas ;
- le soulignage n'a lieu que lorsque Ninext sait avec certitude dans quelle table le code s'exécute ;
- la liste d'autocomplétion a la priorité : aucune bulle ne s'ouvre tant qu'elle est affichée.
Sélectionner un mot surligne ses autres occurrences — dans les éditeurs de Ninox, dans la Console et dans les blocs de code de Ninext. Au survol de l'éditeur, deux boutons apparaissent en haut à droite : Mettre en forme et Déboguer dans la Console (voir Console).
Colonnes résiduelles dans les vues tableau
Une erreur de compilation peut venir d'une colonne de vue tableau qui utilise encore un champ supprimé. Ninox ne signale rien, puisque le champ a simplement été retiré du schéma : c'est une référence résiduelle, restée dans la configuration des colonnes de la vue.
Pour la corriger :
- Cliquez sur Formule, en gras à la fin du fil d'Ariane (« Table › Vue › … › Formule »).
- Ninext ouvre la vue, l'éditeur de la colonne, puis l'éditeur de sa formule.
- Cliquez sur OK dans l'éditeur de la formule, puis dans celui de la colonne.
À l'enregistrement, Ninox actualise la configuration de la vue et supprime les références aux champs inexistants. L'erreur disparaît de Ninext.
