CodeKitHub
Текстовые инструменты

Проверка скобок и круглых скобок

Последнее обновление:

Вставьте код или текст, и этот инструмент просканирует каждую пару ( ) [ ] { }, точно сообщая, какие скобки не закрыты, не открыты или несовместимы по типу — с указанием строки и столбца каждой проблемы.

Что это за инструмент?

Проверка скобок сканирует текст посимвольно, отслеживая каждую открывающую скобку ( [ { в стеке и сопоставляя её со следующей встреченной закрывающей скобкой ) ] }. Если закрывающая скобка не соответствует последней незакрытой открывающей скобке, или открывающая скобка так и не была закрыта, или закрывающая скобка появляется, когда закрывать уже нечего, это отмечается как проблема с точным указанием позиции.

Это простая сканирующая проверка, а не полноценный языковой парсер — она работает одинаково независимо от того, является ли вставленное содержимое JavaScript, Python, JSON или просто обычным текстом, что делает её полезной для любого языка или формата, использующего скобки.

Зачем его использовать?

  • Запустили Python-скрипт на 500 строк и получили только «SyntaxError: unexpected EOF while parsing» без единой подсказки, где искать — вставка кода сюда сразу показывает точную строку и столбец незакрытой скобки.
  • Скопировали вручную написанный JSON-конфиг перед деплоем и не уверены, что число фигурных скобок сходится — одна проверка снимает сомнения перед публикацией.
  • Работаете с длинной математической формулой или кодом статистической модели, где редактор ругается на нехватку скобки где-то во вложенной структуре, но глазами найти место не получается.
  • Проверяете фрагмент кода, присланный коллегой, и хотите убедиться, не осталась ли лишняя закрывающая скобка после неаккуратного копирования-вставки.
  • Нужно быстро проверить баланс скобок в регулярном выражении или конфигурационном файле — там, где обычный языковой парсер плохо справляется с обнаружением таких ошибок.
  • Работаете с закрытым кодом внутренней корпоративной системы — раз всё обрабатывается в браузере, не нужно отправлять этот код в сторонний сервис линтинга.

Как использовать

  1. Вставьте код или текст в поле ввода.
  2. Нажмите «Проверить скобки».
  3. Просмотрите список проблем с указанием строки и столбца каждой, либо получите подтверждение, что всё совпадает.

Пример

Ввод

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

Результат

Несоответствие типа скобки: ] на строке 2, столбце 18; Несоответствие типа скобки: } на строке 3, столбце 1; Незакрытая открывающая скобка: { на строке 1, столбце 17

Скобка ] на строке 2 должна была закрывать ( открытую в столбце 15, а не более раннюю [ — это именно тот тип ошибки (закрывающая скобка неправильного типа), который легко пропустить глазами в длинном файле.

Типичные сценарии использования

  • Отладка ошибки «Unexpected token» или «Unexpected end of input» в JavaScript, JSON или Python без внимательного перечитывания всего файла.
  • Проверка вручную написанного фрагмента JSON на лишнюю или отсутствующую фигурную скобку перед вставкой в конфигурационный файл.
  • Проверка вложенных круглых скобок в длинном математическом выражении или формуле.
  • Обнаружение случайной скобки, оставшейся после копирования-вставки при код-ревью.

Как отличить три типа ошибок

Сообщения об ошибках в результате делятся на три типа. У каждого своя причина, и таблица ниже помогает быстрее найти проблемное место.

Тип ошибкиЧто означаетЧастая причина
Незакрытая открывающая скобкаОткрывающая скобка так и не была закрыта до конца текстаЗабыли закрыть функцию или объект в конце
Несовпадающая закрывающая скобкаЗакрывающая скобка появилась без соответствующей открывающейПри копировании-вставке случайно удалили только открывающую скобку
Несоответствие типа скобкиЗакрывающая скобка есть, но не того типа, что последняя открытаяОткрыли через [, а закрыли по ошибке через ) или }

Часто задаваемые вопросы

Проверяет ли это кавычки или теги, или только скобки?

Только три пары скобок: круглые скобки ( ), квадратные скобки [ ], и фигурные скобки { }. Кавычки и HTML/XML-теги не отслеживаются.

В чём разница между тремя типами проблем?

«Незакрытая открывающая скобка» означает, что открывающая скобка так и не была закрыта до конца текста. «Несовпадающая закрывающая скобка» означает, что закрывающая скобка появилась без соответствующей открывающей скобки перед ней. «Несоответствие типа скобки» означает, что закрывающая скобка появилась, но она не того типа для последней открытой скобки — например, закрытие [ с помощью ).

Понимает ли инструмент, что скобки внутри строки или комментария не должны учитываться?

Нет — это простое посимвольное сканирование, а не языково-осведомлённый парсер, поэтому он ничего не знает о строковых литералах или комментариях. Символ скобки внутри строки в кавычках или комментария всё равно учитывается. Для полностью точных результатов на реальных исходных файлах сначала удалите строки/комментарии или используйте встроенное в редактор синтаксически-осведомлённое сопоставление скобок.

Загружается ли мой код куда-либо?

Нет. Проверка выполняется как локальный JavaScript в вашем браузере; ничего не отправляется на сервер.

Проверяются ли ёлочки-кавычки «» или HTML-теги?

Нет. Инструмент работает только с тремя стандартными парами скобок: ( ), [ ] и { }. Кавычки-ёлочки, обычные кавычки, HTML/XML-теги и любые другие разделители в проверку не входят — только буквальные символы скобок.

Если в списке несколько ошибок, с какой начинать исправление?

Обычно стоит исправлять сверху вниз, начиная с ошибки, ближайшей к началу текста. Исправление первого несоответствия часто цепочкой устраняет несколько последующих ошибок «несоответствие типа скобки».

Корректно ли работает с синтаксисом ссылок Markdown вида [текст](url)?

Да. Сочетание квадратных и круглых скобок, используемое в ссылках Markdown, распознаётся как обычная вложенность. Но, как и в случае со строками и комментариями, инструмент не понимает специфический синтаксис Markdown — он просто смотрит на символы скобок как таковые.

Обнаруживает ли инструмент проблемы, не связанные с несовпадением скобок?

Нет, инструмент проверяет только соответствие скобок. Опечатки в именах переменных, ошибки типов или логические ошибки, не связанные со скобками, вне его области действия. Для такой проверки используйте линтер или компилятор конкретного языка.

Похожие инструменты