Błędy

Karta całkowicie przebudowana od wersji 3.2.0 (beta). W wersji 3.1.2 wyświetla wyłącznie błędy kompilacji i zduplikowane identyfikatory.

Karta Błędy analizuje całą bazę i wyświetla listę błędów i ostrzeżeń w jej kodzie: w polach, wyzwalaczach, kolumnach widoków, raportach wydruku, kodzie globalnym i wyzwalaczu „After Open”. Analizę przeprowadza analizator przeniesiony z analizatora Ninox: to, co zgłasza, odpowiada temu, co powiedziałby Ninox. Każdy wiersz prowadzi bezpośrednio do kodu, którego dotyczy.

Karta jest zarezerwowana dla administratorów. Wyświetla wyłącznie swoją ikonę, trójkąt ostrzegawczy; jej nazwa pojawia się po najechaniu kursorem, a czerwona plakietka podaje liczbę wyświetlanych diagnostyk.

Podsumowanie i filtry

Filtry karty Błędy

Nagłówek podaje podsumowanie: „Brak błędów”, „3 błąd(ów)”, „3 błąd(y), 12 ostrzeżenie(a)”, „36 ostrzeżenie(a)”…

Przycisk Filtry otwiera panel Wyświetlane diagnostyki: jeden przełącznik na każdy typ diagnostyki, w dwóch grupach, Błędy i Ostrzeżenia. Każdy wiersz podaje liczbę diagnostyk danego typu w bazie — nawet gdy typ jest ukryty: widzą Państwo to, co ukrywają, tak samo jak to, co wyświetlają. Gdy jakieś typy są ukryte, przycisk o tym przypomina („Ukryte typy: 2”); Pokaż wszystko przywraca je. Filtry są zapamiętywane przez przeglądarkę i obowiązują dla wszystkich baz.

Co jest zgłaszane

Błędy uniemożliwiają działanie kodu:

FiltrCo jest zgłaszane
Błędy kompilacjiKod, który Ninox odrzuca: formuła się nie wykonuje.
Zduplikowane IDKilka pól tej samej tabeli ma ten sam identyfikator wewnętrzny (na przykład pole wejściowe i element wizualny): odwołania stają się niejednoznaczne.
Błędy analizatoraBłędy wykryte przez analizator Ninext, których Ninox nie zgłosił.
Błędy osadzonych treściBłąd składni JavaScriptu w bloku natywnym #{ … }#.

Ostrzeżenia wskazują kod, który działa, ale zapewne nie tak, jak Państwo sądzą:

FiltrCo jest zgłaszane
AnalizatorOstrzeżenia Ninox oraz błędnie zapisane adnotacje NativeJS (nieznany typ, nieistniejąca tabela).
Kontekst serweraKod bez efektu w miejscu wykonania: funkcja interfejsu, taka jak alert() czy openRecord(), lub blok natywny #{ … }#, umieszczone w wyzwalaczu tabeli (po utworzeniu, po modyfikacji) albo w do as server. Na serwerze są one po cichu ignorowane.
Zamrożone błędyBłędy, które Ninox nadal wyświetla, choć formuła jest poprawna (patrz niżej).
Nierozwiązane odwołaniaOdczyt pola referencyjnego, którego tabela docelowa już nie istnieje (tabela usunięta, brak bazy zewnętrznej): zwraca on „void”, a każde dalsze przejście przez kropkę kończy się błędem.
Treści osadzoneTypowany blok JavaScript, który nic nie zwraca, na wszystkich swoich ścieżkach lub na niektórych; blok asynchroniczny, który nigdy nie wywołuje callback; niezrównoważony HTML przekazany do html() (znacznik nigdy niezamknięty, osierocony znacznik zamykający); CSS z niezrównoważonymi nawiasami klamrowymi albo taki, którego reguły przeglądarka odrzuci.
Martwy kod w skryptachZmienne zadeklarowane przez var lub let, a potem nigdy nieodczytane.
Nieużywane funkcje globalneFunkcje globalne, których nie wywołuje żaden element bazy.
Nieużywane formułyFormuły, do których nie odwołuje się żaden kod.

Nieużywane funkcje i formuły to jedynie kandydaci do usunięcia: wywołanie budowane dynamicznie lub wykonywane z JavaScriptu umyka analizie, a formuła wyświetlana w formularzu lub widoku pozostaje przydatna, nawet jeśli żaden kod jej nie odczytuje. Przed usunięciem proszę to sprawdzić.

Jak czytać wiersz

Diagnostyka na karcie Błędy

Diagnostyki są pogrupowane w rodziny. Tytuł każdej rodziny ma plakietkę, która podaje ich liczbę: czerwoną dla błędów, pomarańczową dla ostrzeżeń. Gdy rodzin jest kilka, są one zwinięte, a kliknięcie tytułu rozwija daną rodzinę; pojedyncza rodzina wyświetla się rozwinięta.

Rodziny noszą nazwę swojego filtra, z wyjątkiem następujących:

FiltrRodzina na liście
Błędy analizatoraDodatkowe błędy analizatora Ninext
AnalizatorOstrzeżenia analizatora
Kontekst serweraKod poza swoim kontekstem wykonania
Zamrożone błędyZamrożone błędy (formuła jest poprawna)
Błędy osadzonych treści i Treści osadzoneJedna rodzina, Osadzony JS / HTML / CSS, która ma do dwóch plakietek: jedną dla swoich błędów, drugą dla swoich ostrzeżeń.

Każdy wiersz podaje:

  • kursywą komunikat — szary dla błędu, bursztynowy dla ostrzeżenia — a po nim fragment kodu, którego dotyczy; gdy dwa typy do siebie nie pasują, zdanie wyjaśnia, które;
  • element, którego dotyczy, przedstawiony tak jak w karcie Pola i formuły: ikona typu, plakietka zależności, „Fx”, ścieżka nawigacyjna.

Najechanie na pogrubiony fragment ścieżki nawigacyjnej (formułę, wyzwalacz lub funkcję globalną) pokazuje kod z podkreślonymi błędami.

Przejście do kodu

Kliknij pogrubiony fragment ścieżki nawigacyjnej: Ninext otwiera edytor we właściwym miejscu. W przypadku kodu globalnego diagnostyka jest przypisana do funkcji, która ją zawiera — „Funkcje globalne › nazwaFunkcji” — a edytor kodu globalnego otwiera się na tej funkcji. Wyzwalacz „After Open” otwiera się w ten sam sposób.

Czerwony przycisk, który pojawia się po najechaniu, po prawej stronie wiersza, w trybie edycji („Edit mode”), zaznacza pole w jego formularzu w przypadku wiersza dotyczącego pola, a w przypadku pozostałych wierszy otwiera edytor kodu.

Poniżej, w bazie demonstracyjnej, kliknięcie pogrubionego fragmentu wiersza dotyczącego formuły pola: Ninext otwiera rekord tabeli, okno pola, a następnie duży edytor formuł, w którym fragment, którego dotyczy błąd, jest podkreślony; najechanie na niego wyświetla komunikat. Pozostałe elementy ścieżki nawigacyjnej otwierają własny poziom: kliknięcie nazwy pola otwiera rekord i okno pola, bez edytora.

Z karty Błędy kliknięcie pogrubionego fragmentu otwiera edytor formuły, której dotyczy błąd, z podkreślonym błędnym fragmentem

Analiza w tle

Analiza pracuje małymi porcjami, oddając kontrolę przeglądarce: nawet w dużej bazie nic się nie zawiesza. Uruchamia się ponownie sama po każdej zmianie schematu. Nie ma wskaźnika postępu: poprzednia lista pozostaje wyświetlona, dopóki nie zastąpi jej nowa.

Zamrożone błędy

Zdarza się, że Ninox kompiluje pole formuły podczas ponownego wczytywania schematu, zanim schemat będzie kompletny, a potem już go ponownie nie kompiluje: pole wyświetla błędy przez całą sesję, choć jego formuła jest poprawna. Ninext kompiluje formułę ponownie po swojej stronie; jeśli błędy się przy tym nie pojawiają, zalicza je do kategorii Zamrożone błędy.

Rozwiązanie: proszę ponownie wczytać bazę albo zapisać dowolną zmianę schematu.

Podczas pisania, w edytorach Ninox

Błędy i ostrzeżenia są też podkreślane podczas pisania w edytorach skryptów Ninox (duży edytor formuł, panel pola lub tabeli):

  • czerwona falista linia oznacza błąd, bursztynowa kropkowana linia — ostrzeżenie;
  • po najechaniu na podkreślony fragment dymek podaje wyjaśnienie i wskazuje, które typy do siebie nie pasują;
  • podkreślanie działa tylko wtedy, gdy Ninext wie na pewno, w której tabeli wykonuje się kod;
  • pierwszeństwo ma lista autouzupełniania: żaden dymek nie otwiera się, dopóki jest ona wyświetlona.

Zaznaczenie słowa podświetla jego pozostałe wystąpienia — w edytorach Ninox, w Konsoli i w blokach kodu Ninext. Po najechaniu na edytor w prawym górnym rogu pojawiają się dwa przyciski: Formatuj i Debuguj w Konsoli (patrz Konsola).

Pozostałości po kolumnach w widokach tabeli

Błąd kompilacji może pochodzić z kolumny widoku tabeli, która nadal używa usuniętego pola. Ninox nic nie zgłasza, ponieważ pole zostało po prostu usunięte ze schematu: to szczątkowe odwołanie, które pozostało w konfiguracji kolumn widoku.

Aby to naprawić:

  1. Kliknij Formuła, pogrubione na końcu ścieżki nawigacyjnej („Tabela › Widok › … › Formuła”).
  2. Ninext otwiera widok, edytor kolumny, a następnie edytor jej formuły.
  3. Kliknij OK w edytorze formuły, a następnie w edytorze kolumny.

Po zapisaniu Ninox odświeża konfigurację widoku i usuwa odwołania do nieistniejących pól. Błąd znika z Ninext.