CodeKitHub
Narzędzia tekstowe

Sprawdzanie Nawiasów i Parentez

Ostatnia aktualizacja:

Wklej kod lub tekst, a narzędzie przeskanuje każdą parę ( ) [ ] { }, wskazując dokładnie, które nawiasy są niedomknięte, niepoprzedzone otwarciem lub niedopasowane — wraz z numerem linii i kolumny każdego problemu.

Czym jest to narzędzie?

Narzędzie do sprawdzania nawiasów skanuje tekst znak po znaku, śledząc każdy nawias otwierający ( [ { na stosie i dopasowując go do kolejnego napotkanego nawiasu zamykającego ) ] }. Jeśli nawias zamykający nie pasuje do ostatniego niedomkniętego nawiasu otwierającego, jeśli nawias otwierający nigdy nie zostaje zamknięty, albo jeśli nawias zamykający pojawia się bez niczego do zamknięcia, zostaje to oznaczone jako problem wraz z dokładną pozycją.

To zwykłe skanowanie tekstu, a nie pełny parser języka — działa tak samo niezależnie od tego, czy wklejona treść to JavaScript, Python, JSON, czy zwykły tekst, co czyni je przydatnym w dowolnym języku lub formacie wykorzystującym nawiasy.

Dlaczego warto go używać?

  • Linter zgłasza „Unexpected end of input” bez numeru linii, a przewijanie 400-liniowego pliku w poszukiwaniu jednej brakującej klamry to strata dziesięciu minut — wklej plik tutaj, a dokładna linia i kolumna pojawią się od razu.
  • Piszesz ręcznie plik konfiguracyjny JSON o 23:00, a aplikacja bez wyraźnego powodu odmawia jego wczytania — sprawdź go tutaj, zanim zaczniesz podejrzewać każdą wartość w pliku.
  • Wyrażenie regularne albo wzór matematyczny ma sześć poziomów zagnieżdżonych nawiasów i straciłeś rachubę, który z nich jest niedomknięty — narzędzie samo śledzi stos, więc nie musisz liczyć ich na oko.
  • Wkleiłeś blok kodu z czatu albo forum i się nie kompiluje — szybkie sprawdzenie od razu mówi, czy podczas kopiowania zgubił się nawias, zanim zaczniesz szukać dalej.
  • Przeglądasz pull requesta kolegi i coś w wcięciach wygląda podejrzanie — przepuszczenie zmienionego fragmentu przez narzędzie potwierdza, czy to prawdziwe niedopasowanie nawiasów, czy tylko kwestia formatowania.
  • Musisz sprawdzić fragment, który nie jest JavaScriptem, Pythonem ani JSON-em — to zwykła skanowanie znaków, więc działa tak samo na CSS, LaTeX-u czy dowolnym tekście z nawiasami, bez potrzeby instalowania lintera dla konkretnego języka.

Jak używać

  1. Wklej swój kod lub tekst do pola wejściowego.
  2. Kliknij Sprawdź nawiasy.
  3. Przejrzyj listę problemów wraz z numerem linii i kolumny, lub zobacz potwierdzenie, że wszystko się zgadza.

Przykład

Wejście

function foo() {
  return [1, 2, (3];
}

Wynik

Niedopasowanie typu nawiasu: ] w linii 2, kol. 18; Niedopasowanie typu nawiasu: } w linii 3, kol. 1; Niedomknięty nawias otwierający: { w linii 1, kol. 17

Nawias ] w linii 2 miał zamykać ( otwarty w kol. 15, a nie wcześniejszy [ — to dokładnie taki błąd (nawias zamykający złego typu), który łatwo przeoczyć gołym okiem w dłuższym pliku.

Typy nawiasów i co wywołuje który błąd

Narzędzie śledzi tylko trzy pary. Wiedza, która etykieta błędu odpowiada jakiemu rodzajowi pomyłki, przyspiesza reakcję na raport.

Para nawiasówTypowe zastosowanieTypowy błąd, który powoduje
( )Wywołania funkcji, grupowanie wyrażeń, wzory matematyczneNiedomknięty nawias otwierający, gdy brakuje ) po długiej liście argumentów
[ ]Tablice, indeksowanie list, klasy znaków w regexNiedopasowanie typu nawiasu, gdy ] przez pomyłkę zamyka { lub (
{ }Obiekty, bloki kodu, ciała funkcjiNiedomknięty nawias otwierający na końcu pliku, gdy zapomniano o } po zagnieżdżonym bloku

Typowe zastosowania

  • Debugowanie błędu „Unexpected token” lub „Unexpected end of input” w JavaScript, JSON lub Pythonie bez konieczności dokładnego przeczytania całego pliku.
  • Sprawdzanie ręcznie napisanego fragmentu JSON pod kątem zbędnej lub brakującej klamry przed wklejeniem do pliku konfiguracyjnego.
  • Weryfikacja zagnieżdżonych nawiasów w długim wyrażeniu matematycznym lub wzorze.
  • Wykrycie przypadkowo pozostawionego nawiasu po edycji metodą kopiuj-wklej podczas przeglądu kodu.

Najczęściej zadawane pytania

Czy narzędzie sprawdza też cudzysłowy lub znaczniki, czy tylko nawiasy?

Tylko trzy pary nawiasów: okrągłe ( ), kwadratowe [ ] i klamrowe { }. Cudzysłowy oraz znaczniki HTML/XML nie są śledzone.

Jaka jest różnica między trzema typami problemów?

„Niedomknięty nawias otwierający” oznacza, że nawias otwierający nie został zamknięty do końca tekstu. „Niedopasowany nawias zamykający” oznacza, że nawias zamykający pojawił się bez odpowiadającego mu wcześniejszego nawiasu otwierającego. „Niedopasowanie typu nawiasu” oznacza, że nawias zamykający pojawił się, ale jest niewłaściwego typu dla ostatnio otwartego nawiasu — np. zamknięcie [ za pomocą ).

Czy narzędzie wie, że nawiasy w łańcuchu znaków lub komentarzu nie powinny się liczyć?

Nie — to zwykłe skanowanie znaków, a nie parser świadomy składni języka, więc nie rozpoznaje literałów tekstowych ani komentarzy. Znak nawiasu wewnątrz cytowanego łańcucha lub komentarza nadal jest liczony. Aby uzyskać w pełni dokładne wyniki dla prawdziwych plików źródłowych, usuń najpierw łańcuchy/komentarze lub użyj wbudowanego, świadomego składni dopasowywania nawiasów w swoim edytorze.

Czy mój kod jest gdziekolwiek przesyłany?

Nie. Sprawdzanie odbywa się jako lokalny kod JavaScript w Twojej przeglądarce; nic nie jest wysyłane na serwer.

Czy poprawnie obsługuje głęboko zagnieżdżone nawiasy, np. ((([{...}])))?

Tak — narzędzie używa stosu, który śledzi nawiasy w kolejności ich otwarcia, więc poprawnie dopasowuje dowolnie głębokie zagnieżdżenie. Nie ma sztucznego limitu głębokości, jedynym ograniczeniem jest pamięć Twojej przeglądarki.

Co się stanie, jeśli wklejam tekst bez żadnych nawiasów?

Narzędzie zgłasza, że wszystko się zgadza, ponieważ nie ma nawiasów otwierających ani zamykających do oznaczenia jako problem — pusty wynik oznacza brak problemów, a nie że kontrola się nie powiodła.

Czy narzędzie powie mi, czy mam za dużo nawiasów zamykających względem otwierających?

Tak, pośrednio: nadmiarowe nawiasy zamykające bez niczego do zamknięcia są zgłaszane jako „niedopasowany nawias zamykający”, a nawiasy otwarte i nigdy niezamknięte do końca tekstu jako „niedomknięty nawias otwierający” — dzięki temu widzisz, po której stronie leży problem.

Czy działa na zminifikowanym kodzie, gdzie wszystko jest w jednej linii?

Tak — skanowanie działa znak po znaku niezależnie od podziałów linii, choć w takim przypadku podana kolumna staje się bardziej przydatna niż numer linii, bo zminifikowany kod to zwykle jedna bardzo długa linia.

Czy to zastępuje dopasowywanie nawiasów w moim edytorze kodu?

Niezupełnie — dopasowywanie w edytorze jest zwykle świadome składni i podświetla pary na bieżąco, podczas gdy to narzędzie to jednorazowe skanowanie wklejonego tekstu, przydatne gdy nie masz pliku otwartego w edytorze albo chcesz jeden zbiorczy raport tekstowy wszystkich problemów.

Powiązane narzędzia