Русский

Инструменты разработчика · Конвертеры синтаксиса

Устраните ошибку отступа YAML, преобразовав ее в JSON.

· Почему это важно

ямл JSON отладка

Неуместная строка YAML, выделенная рядом с явными фигурными скобками JSON.
Оригинальная векторная иллюстрация ToolAcre

Ошибки отступов YAML часто приводят к созданию действительного файла с неправильной структурой, а не к ошибке синтаксического анализа. В этом посте показано, как преобразование в JSON раскрывает именно то, что понял парсер, поэтому неуместный ключ становится очевидным.

Шаг, который так и не был выполнен — файл рабочего процесса, который был проанализирован нормально, и ключ, который оказался на один уровень выше.

Рабочий процесс может успешно анализироваться, если поместить `with` рядом с шагом, а не внутри него. Затем бегун позже игнорирует или отвергает форму, и визуальный осмотр пропускает сдвиг, потому что источник остается аккуратным. Преобразование в JSON раскрывает фактического родителя через фигурные скобки и границы массива.

ToolAcre сообщает о неправильном формате YAML со строкой и столбцом, но действительная неправильная структура не приводит к синтаксической ошибке. Таким образом, преобразованное дерево представляет собой диагностическое представление: оно сообщает вам, что принял этот синтаксический анализатор, а не то, что предполагала схема рабочего процесса.

Почему ошибки отступов часто не являются ошибками — структура YAML представляет собой пробелы, поэтому сдвиг строки обычно создает действительный, но другой документ.

Пробелы содержат иерархию YAML. Перемещение линии влево может превратить ребенка в брата или сестру; перемещение тире может поместить элемент в другую последовательность. Оба документа могут удовлетворять грамматике YAML. Проверка синтаксиса не может решить, какое вложение соответствует приложению.

Табуляции в отступах отклоняются парсером и получают позицию. Пространства, создающие неверную действительную иерархию, вместо этого требуют структурного сравнения. Эта разница объясняет, почему некоторые ошибки отступов терпят неудачу сразу же, тогда как другие сохраняются до тех пор, пока не изменится поведение приложения.

Что делает JSON явным — фигурные скобки и квадратные скобки, которые точно показывают, какому объекту принадлежит ключ.

JSON записывает границы объекта в фигурных скобках, а члены массива — в скобках. Неуместный ключ YAML появляется за пределами объекта, где вы его ожидали, а тире становится границей массива, которую трудно не заметить. Отступ в красивом JSON — презентационный; пунктуация определяет структуру.

В представлении также отображаются разрешенные типы. Скаляр без кавычек может быть нулевым, числовым или логическим в соответствии с выбранной схемой. Исправление иерархии без проверки значений может привести к второй ошибке, поэтому сравните путь к свойству и тип JSON.

Распространенные формы ошибки — элемент списка под неправильным родителем, ключ, который стал родственным, а не дочерним, и табуляция, смешанная с пробелами.

Распространенные ошибки включают в себя элемент последовательности, совмещенный с неправильным списком, ключ сопоставления, смещенный в одноуровневый элемент, а также символы табуляции, смешанные с пробелами. Дубликаты ключей — еще одна ловушка: ToolAcre сохраняет последнее значение и предупреждает о позиции, поэтому JSON содержит только сохранившееся свойство.

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

Рабочий пример: рабочий процесс CI с одним блоком «with» с неправильным отступом — преобразование в JSON, обнаружение неправильно расположенного ключа, исправление и повторное преобразование.

Создайте отредактированное задание с `steps`, одной записью `uses` и сопоставлением `with`. Удалите отступ `with`, чтобы он стал родственным `steps`, затем преобразуйте. Фигурные скобки JSON показывают, что `with` принадлежит заданию, а не объекту шага. Переместите его под элемент списка и выполните повторное преобразование, чтобы увидеть предполагаемое вложение.

В этом примере не указывается, как реагирует конкретная служба CI, поскольку преобразователь не загружает эту схему. Доказательством является разобранная иерархия. Должна последовать проверка схемы, после чего можно будет сообщить, принят ли `with` по исправленному пути.

Использование обратного преобразования — JSON в YAML для создания версии с правильным отступом, которую можно вставить обратно.

Если структура JSON правильна, преобразование ее обратно в YAML приводит к созданию последовательных отступов сериализатора. Неоднозначные строки могут заключаться в кавычки, а комментарии не восстанавливаются. Рассматривайте выходные данные как чистую сериализацию данных, а не как средство форматирования, сохраняющее исходный код.

Если исходные комментарии объясняют операционные варианты, скопируйте исправленную структуру в поддерживаемый файл, а не заменяйте ее вслепую. Сгенерированный файл может быть структурно правильным и редакционно неполным.

Чего это не касается — семантическая проверка на соответствие рабочему процессу или схеме манифеста, которая выявляет неизвестные ключи, а не неуместные.

Никакой рабочий процесс, Compose, Kubernetes или схема приложения не задействованы. Ключ может находиться под предполагаемым родителем и при этом быть написан с ошибкой или не поддерживаться. Преобразователи синтаксиса лишь доказывают, что YAML принят, и отображают результирующее значение в форме JSON.

Используйте валидатор платформы-владельца для неизвестных ключей, обязательных полей и семантических ограничений. Разделение проверок синтаксиса и схемы приводит к более явным ошибкам и позволяет избежать приписывания универсальному преобразователю знаний предметной области, которых у него нет.

Вывод: когда YAML выглядит правильно и ведет себя неправильно, рассматривайте его как JSON — и как панель преобразователей синтаксиса мгновенно это делает.

Если YAML выглядит правильно, но ведет себя неправильно, проверьте проанализированное дерево. Фигурные скобки JSON и скобки указывают на происхождение явным образом, а предупреждения ToolAcre выявляют дубликаты, потоки и изменения значений, которые могут усложнить картину.

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

При сравнении до и после сосредоточьтесь на путях к свойствам, а не на номерах строк, поскольку сериализация может изменить порядок представления или добавить кавычки. В полезном обзоре указан ожидаемый путь, его тип JSON и то, находится ли он внутри объекта или массива. Этот небольшой контрольный список выявляет второй неуместный ключ, даже если первый визуальный признак устранен, и позволяет избежать преобразования сгенерированного формата YAML в тестовый оракул.