한국어

개발자 도구 · 구문 변환기

YAML 들여쓰기 실수를 JSON로 변환하여 디버깅합니다.

· 그것이 중요한 이유

YAML JSON 디버깅

명시적인 JSON 중괄호 옆에 강조 표시된 잘못 배치된 YAML 행
원본 ToolAcre 벡터 일러스트레이션

YAML 들여쓰기 오류는 종종 구문 분석 오류가 아닌 잘못된 구조의 유효한 파일을 생성합니다. 이 게시물은 JSON로 변환하면 파서가 이해한 내용이 정확히 노출되어 잘못 배치된 키가 분명해지는 방법을 보여줍니다.

실행되지 않은 단계 - 정상적으로 구문 분석된 워크플로 파일과 한 수준 너무 높은 키로 종료됨

`with`을(를) 단계 내부가 아닌 옆에 배치하면 워크플로를 성공적으로 구문 분석할 수 있습니다. 그런 다음 러너는 나중에 모양을 무시하거나 거부하고 소스가 깔끔하게 유지되기 때문에 육안 검사에서는 교대를 놓칩니다. JSON로 변환하면 중괄호와 배열 경계를 통해 실제 상위 항목이 노출됩니다.

ToolAcre는 행과 열이 포함된 잘못된 형식의 YAML을(를) 보고하지만 유효한 잘못된 구조에서는 구문 오류가 발생하지 않습니다. 따라서 변환된 트리는 진단 뷰입니다. 이는 워크플로 스키마가 의도한 것이 아니라 이 파서가 허용한 것을 알려줍니다.

들여쓰기 실수가 종종 오류가 아닌 이유 — YAML의 구조는 공백이므로 일반적으로 이동된 줄은 유효하지만 다른 문서를 생성합니다.

공백은 YAML 계층 구조를 전달합니다. 줄을 왼쪽으로 이동하면 아이가 형제로 바뀔 수 있습니다. 대시를 이동하면 항목을 다른 순서로 배치할 수 있습니다. 두 문서 모두 YAML 문법을 충족할 수 있습니다. 구문 유효성 검사는 응용 프로그램과 일치하는 중첩을 결정할 수 없습니다.

들여쓰기된 탭은 파서에 의해 거부되고 위치를 받습니다. 잘못된 유효한 계층 구조를 생성하는 공간에는 대신 구조적 비교가 필요합니다. 이러한 차이점은 일부 들여쓰기 실수가 즉시 실패하는 반면 다른 들여쓰기 실수는 응용 프로그램 동작까지 유지되는 이유를 설명합니다.

JSON이 명시적으로 만드는 것 — 키가 속한 개체를 정확하게 보여주는 중괄호와 대괄호

JSON는 중괄호가 있는 객체 경계와 대괄호가 있는 배열 멤버를 씁니다. 잘못 배치된 YAML 키가 예상한 개체 외부에 나타나고 대시는 간과하기 어려운 배열 경계가 됩니다. 예쁜 JSON의 들여쓰기는 프레젠테이션입니다. 구두점은 구조를 정의합니다.

보기에는 해결된 유형도 표시됩니다. 따옴표가 없는 스칼라는 선택한 스키마에서 null, 숫자 또는 부울일 수 있습니다. 값을 확인하지 않고 계층 구조를 수정하면 두 번째 버그가 남을 수 있으므로 속성 경로와 JSON 유형을 모두 비교하세요.

일반적인 실수 형태 — 잘못된 상위 항목 아래에 있는 목록 항목, 하위 항목 대신 형제 항목이 된 키, 공백이 섞인 탭

일반적인 실수로는 잘못된 목록에 정렬된 시퀀스 항목, 형제로 내어쓰기된 매핑 키, 공백과 혼합된 탭 문자 등이 있습니다. 중복 키는 또 다른 함정입니다. ToolAcre는 마지막 값을 유지하고 위치로 경고하므로 JSON에는 살아남은 속성만 포함됩니다.

별칭이 반복되는 데이터로 확장되므로 앵커를 사용하면 결과가 더 크게 보일 수 있습니다. 이는 이번 변환에서 예상되는 것이며 실수로 들여쓰기한 것과 혼동되어서는 안 됩니다. 모든 구조적 차이를 공백에 기인하기 전에 경고를 읽어보세요.

작업 예: 잘못 들여쓰기된 'with' 블록이 하나 있는 CI 워크플로 — 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 형식을 테스트 오라클로 전환하는 것을 방지합니다.