이 도구는 무엇인가요?
괄호 검사기는 텍스트를 한 글자씩 스캔하면서, 모든 여는 괄호 ( [ {를 스택에 추적하고 다음에 만나는 닫는 괄호 ) ] }와 짝을 맞춥니다. 닫는 괄호가 가장 최근의 닫히지 않은 여는 괄호와 일치하지 않거나, 여는 괄호가 끝내 닫히지 않거나, 닫을 대상이 없는데 닫는 괄호가 나타나면, 정확한 위치와 함께 문제로 표시됩니다.
이는 단순한 스캔 방식 검사이며, 완전한 언어 파서가 아닙니다—붙여넣은 내용이 JavaScript, Python, JSON, 또는 그냥 일반 텍스트든 상관없이 같은 방식으로 동작하므로, 괄호를 사용하는 모든 언어나 형식에서 유용합니다.
왜 사용해야 할까요?
- 린터가 줄 번호도 없이 "Unexpected end of input"만 던지는데, 누락된 중괄호 하나 찾으려고 400줄짜리 파일을 스크롤하는 건 10분 낭비일 때 — 여기 붙여넣으면 정확한 줄과 열이 바로 나옵니다.
- 밤 11시에 JSON 설정 파일을 손으로 작성하는데 앱이 아무 말 없이 로드를 거부할 때 — 파일의 값 하나하나를 의심하기 전에 먼저 이 검사기로 돌려봅니다.
- 정규식이나 수식에 괄호가 6단계로 중첩되어 있어 어느 것이 안 닫혔는지 세다가 놓쳤을 때 — 검사기가 스택을 대신 추적해주니 눈으로 세지 않아도 됩니다.
- 채팅이나 포럼 글에서 코드 블록을 붙여넣었는데 컴파일이 안 될 때 — 더 파고들기 전에 복사-붙여넣기 과정에서 괄호가 빠졌는지 빠르게 확인할 수 있습니다.
- 팀원의 diff를 리뷰하는데 들여쓰기가 뭔가 이상해 보일 때 — 바뀐 블록을 검사기에 돌려서 진짜 괄호 불일치인지 아니면 단순한 포맷 차이인지 확인합니다.
- JavaScript, Python, JSON이 아닌 스니펫을 확인해야 할 때 — 단순 문자 스캔 방식이라 언어별 린터를 설치할 필요 없이 CSS, LaTeX, 괄호를 쓰는 어떤 텍스트에도 똑같이 동작합니다.
사용 방법
- 코드나 텍스트를 입력란에 붙여넣습니다.
- '괄호 검사'를 클릭합니다.
- 각 문제의 행과 열 번호가 표시된 목록을 확인하거나, 모두 일치한다는 확인 메시지를 확인합니다.
예시
입력
function foo() {
return [1, 2, (3];
}결과
괄호 유형 불일치: 2행 18열의 ]; 괄호 유형 불일치: 3행 1열의 }; 닫히지 않은 여는 괄호: 1행 17열의 {2행의 ]는 15열에서 열린 (를 닫아야 했지만, 그보다 앞의 [를 닫고 있습니다—이는 긴 파일에서 눈으로 놓치기 쉬운 정확히 그런 유형의 버그(잘못된 유형의 닫는 괄호)입니다.
일반적인 활용
- 파일 전체를 꼼꼼히 다시 읽지 않고도 JavaScript, JSON, Python의 'Unexpected token' 또는 'Unexpected end of input' 오류를 디버깅.
- 설정 파일에 붙여넣기 전에 손으로 작성한 JSON 조각에서 남거나 빠진 중괄호가 있는지 확인.
- 긴 수식이나 공식에서 중첩된 소괄호의 정확성을 검증.
- 코드 리뷰 중 복사-붙여넣기 편집으로 우연히 남은 괄호를 발견.
괄호 유형과 각 오류가 발생하는 조건
이 검사기는 세 가지 쌍만 추적합니다. 어떤 오류 라벨이 어떤 실수에 해당하는지 알면 보고서를 보고 더 빠르게 대응할 수 있습니다.
| 괄호 쌍 | 일반적인 용도 | 흔히 발생하는 오류 |
|---|---|---|
| ( ) | 함수 호출, 표현식 그룹화, 수식 | 긴 인수 목록 뒤에 닫는 )가 빠졌을 때 발생하는 닫히지 않은 여는 괄호 |
| [ ] | 배열, 리스트 인덱싱, 정규식 문자 클래스 | 실수로 ]가 { 또는 (를 닫을 때 발생하는 괄호 유형 불일치 |
| { } | 객체, 코드 블록, 함수 본문 | 중첩된 블록 뒤에 닫는 }를 잊었을 때 파일 끝에서 발생하는 닫히지 않은 여는 괄호 |
자주 묻는 질문
이 도구는 따옴표나 태그도 검사하나요, 아니면 괄호만인가요?
세 가지 괄호 쌍만 검사합니다: 소괄호 ( ), 대괄호 [ ], 중괄호 { }. 따옴표나 HTML/XML 태그는 추적하지 않습니다.
세 가지 문제 유형의 차이는 무엇인가요?
'닫히지 않은 여는 괄호'는 텍스트 끝까지 여는 괄호가 한 번도 닫히지 않았다는 뜻입니다. '짝이 맞지 않는 닫는 괄호'는 대응하는 여는 괄호 없이 닫는 괄호가 나타났다는 뜻입니다. '괄호 유형 불일치'는 닫는 괄호가 나타났지만, 가장 최근에 열린 괄호와 유형이 맞지 않는다는 뜻입니다—예를 들어 [를 )로 닫는 경우입니다.
문자열이나 주석 안의 괄호는 세면 안 된다는 것을 이해하나요?
아니요—이는 단순한 문자 스캔이며 언어를 이해하는 파서가 아니므로, 문자열 리터럴이나 주석에 대해 알지 못합니다. 따옴표로 묶인 문자열이나 주석 안의 괄호 문자도 그대로 카운트됩니다. 실제 소스 파일에서 완전히 정확한 결과를 얻으려면 먼저 문자열/주석을 제거하거나, 에디터에 내장된 문법 인식 괄호 매칭 기능을 사용하세요.
제 코드가 어딘가로 업로드되나요?
아니요. 검사는 브라우저 안에서 로컬 JavaScript로 실행되며, 서버로 전송되는 것은 없습니다.
((([{...}]))) 처럼 깊게 중첩된 괄호도 제대로 처리하나요?
네 — 검사기는 괄호가 열린 순서를 추적하는 스택을 사용하므로 아무리 깊게 중첩되어도 정확히 매칭합니다. 인위적인 깊이 제한은 없으며, 실질적인 한계는 브라우저 메모리뿐입니다.
괄호가 전혀 없는 텍스트를 붙여넣으면 어떻게 되나요?
문제로 표시할 여는 괄호나 닫는 괄호가 없으므로 도구는 모두 일치한다고 보고합니다 — 결과가 비어 있다는 것은 문제가 발견되지 않았다는 뜻이지 검사가 실패했다는 뜻이 아닙니다.
여는 괄호보다 닫는 괄호가 너무 많은지 알려줄 수 있나요?
간접적으로 가능합니다. 짝지을 게 없는 여분의 닫는 괄호는 "짝이 맞지 않는 닫는 괄호"로, 열렸지만 텍스트 끝까지 닫히지 않은 괄호는 "닫히지 않은 여는 괄호"로 보고되므로, 불균형이 어느 쪽에 있는지 알 수 있습니다.
모든 코드가 한 줄에 있는 압축(minified) 코드에서도 작동하나요?
네 — 줄바꿈과 무관하게 한 글자씩 스캔하지만, 그런 경우 압축 코드는 보통 매우 긴 한 줄이기 때문에 보고되는 줄 번호보다 열 번호가 더 유용해집니다.
이 도구가 코드 에디터의 괄호 매칭 기능을 대체할 수 있나요?
정확히는 아닙니다 — 에디터의 괄호 매칭은 보통 언어를 인식하고 입력하는 동안 짝을 강조 표시하지만, 이 도구는 붙여넣은 텍스트에 대해 한 번 실행하는 스캔이라 에디터에 파일이 열려 있지 않거나 모든 문제를 한 번에 텍스트 보고서로 보고 싶을 때 유용합니다.