JavaScript 및 QML 검사
프로젝트의 QML 및 자바스크립트 코드에 대해 정적 검사를 실행하여 일반적인 문제를 찾아보세요.
정적 검사를 실행하려면 Tools > QML/JS > Run Checks 로 이동하거나 Ctrl+Shift+C를 누르세요.
이슈(Issues)의 ‘ QML ’ 및 ‘ QML Analysis ’ 필터에서 결과를 확인하세요.
참고: 프로젝트에대해 ‘ QML Language Server ’를활성화하면 qmllint를 사용하여 QML 및 JavaScript 코드를 검사하고 경고를 생성하므로, 오류 코드와 메시지는 JavaScript 및 QML 오류 코드와 다릅니다.
메시지 활성화 및 비활성화
정적 분석기의 QML 및 JavaScript 메시지를 활성화하거나 비활성화하려면:
- Preferences > Qt Quick > ‘ QML/JS Editing ’로 이동합니다.
- Use customized static analyzer 을 선택합니다.

- ' Enabled'에서 표시할 메시지를 선택합니다.
- Qt Quick UI 파일에 대해서만 특정 메시지를 표시하려면, 해당 파일에서 메시지를 선택하십시오 Only for Qt Quick UI에서 해당 메시지를 선택하십시오.Qt Quick UI 파일이 아닌 파일에 대한 메시지만 활성화할 수는 없습니다.
JavaScript 및 QML 오류 코드
많은 오류 메시지는 Douglas Crockford의 JSLint 도구에 있는 메시지와 유사합니다. JSLint 오류에 대한 자세한 내용은 JSLint 오류 설명을 참조하십시오.
| ID | 중요도 | 메시지 | 설명 |
|---|---|---|---|
| M1 | 오류 | 열거형 값이 유효하지 않습니다. | |
| M2 | 오류 | 열거형 값은 문자열 또는 숫자여야 합니다. | |
| M3 | 오류 | 숫자 값이어야 합니다. | |
| M4 | 오류 | 부울 값이 예상됨 | |
| M5 | 오류 | 문자열 값이어야 함 | |
| M6 | 오류 | 잘못된 URL입니다. | |
| M7 | 경고 | 파일 또는 디렉터리가 존재하지 않습니다. | |
| M8 | 오류 | 잘못된 색상 | |
| M9 | 오류 | 앵커 라인이 필요합니다 | |
| M10 | 오류 | 속성 바인딩 중복 | 자세한 내용은 JSLint 오류 설명의 '{a}' 키 중복 항목을 참조하십시오. |
| M11 | 오류 | ID가 예상됨 | 자세한 내용은 JSLint 오류 설명의 '식별자가 예상되었으나 '{a}'(예약어)가 발견됨'을 참조하십시오. |
| M14 | 오류 | 유효하지 않은 ID | 자세한 내용은 식별자가 예상되었으나 '{a}'(예약어)가 발견됨을 참조하십시오. |
| M15 | 오류 | ID 중복 | 파일 내의 ID는 고유해야 합니다. 자세한 내용은 '{a}' 키 중복 항목을 참조하십시오. |
| M16 | 오류 | 유효하지 않은 속성 이름 name | |
| M17 | 오류 | Name 멤버가 없습니다 | |
| M18 | 오류 | Field 의 구성원이 아닙니다 object | |
| M19 | 경고 | 조건 내의 할당 | 입력 오류일 수 있습니다. 의도적인 것이라면 할당식을 괄호로 묶으십시오. |
| M20 | 경고 | 종료되지 않은 비어 있지 않은 case 블록 | case 블록은 비어 있거나, ` break`, ` return ` 또는 ` continue`과 같은 흐름 제어 문으로 끝나야 합니다. 또는 ` // fall through ` 주석으로 끝맺어 의도적인 다음 case로 넘어감을 나타낼 수도 있습니다. |
| M23 | 경고 | 다음은 사용하지 마십시오 eval | 자세한 내용은 JSLint 오류 설명의 “eval is evil”을 참조하십시오. |
| M23 | 경고 | 도달 불가능 | 밑줄이 그어진 문장이 절대 실행되지 않음을 나타냅니다. |
| M29 | 경고 | 사용하지 마십시오 with | 자세한 내용은 JSLint 오류 설명의 'with'가 예기치 않게 사용됨을 참조하십시오. |
| M30 | 경고 | 쉼표 표현식을 사용하지 마십시오 | |
| M31 | 경고 | 불필요한 메시지 숨기기 | |
| M103 | 경고 | Name 이미 형식 매개변수입니다 | |
| M104 | 경고 | Name 는 이미 함수입니다 | |
| M105 | 경고 | name 변수가 선언되기 전에 사용되었습니다 | |
| M106 | 경고 | Name already는 변수입니다 | |
| M107 | 경고 | Name 이 변수가 두 번 이상 선언되었습니다 | 함수 내에서 선언된 변수는 중첩된 블록이나 ` for ` 문 조건 내에서 선언된 경우라도 함수 내 어디에서나 항상 접근 가능합니다. 변수를 다시 선언해도 아무런 효과가 없습니다. |
| M108 | 경고 | name 함수가 선언되기 전에 사용되었습니다 | 자세한 내용은 JSLint 오류 설명의 {a}가 정의되기 전에 사용되었습니다 항목을 참조하십시오. |
| M109 | 경고 | Boolean 를 생성자로 사용하지 마십시오 | 자세한 내용은 JSLint 오류 설명의 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M110 | 경고 | String 를 생성자로 사용하지 마십시오 | 자세한 내용은 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M111 | 경고 | Object 를 생성자로 사용하지 마십시오 | 자세한 내용은 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M112 | 경고 | Array 를 생성자로 사용하지 마십시오 | 자세한 내용은 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M113 | 경고 | Function 를 생성자로 사용하지 마십시오 | 자세한 내용은 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M114 | 힌트 | function 키워드와 여는 괄호 사이에는 공백 하나만 있어야 합니다. | 자세한 내용은 JSLint 오류 설명의 {a}와 {b} 사이에 정확히 하나의 공백이 있어야 함을 참조하십시오. |
| M115 | 경고 | 독립된 블록을 사용하지 마십시오 | 블록은 변수 범위에 영향을 미치지 않습니다. 따라서 if, while 등과 관련이 없는 블록은 아무런 효과가 없으므로 사용하지 않아야 합니다. |
| M116 | 경고 | void 표현식을 사용하지 마십시오 | |
| M117 | 경고 | 혼동되기 쉬운 더하기 기호 | 자세한 내용은 JSLint 오류 설명의 ‘혼동되기 쉬운 더하기 기호 ’를 참조하십시오. |
| M119 | 경고 | 혼동하기 쉬운 마이너스 기호 | 자세한 내용은 JSLint 오류 설명의 ‘혼동되기 쉬운 마이너스 기호’를 참조하십시오. |
| M121 | 힌트 | 모든 함수 변수를 한 줄에 선언하십시오 | |
| M123 | 힌트 | 불필요한 괄호 | |
| M126 | 경고 | == != 는 형 변환을 수행할 수 있으므로, 이를 방지하려면 또는 를 사용하십시오 === !== | 비엄격한 등가 비교는 인수를 공통 유형으로 변환할 수 있습니다. 이로 인해 ' \t\r\n' == 0 이 true와 같이 예상치 못한 결과가 발생할 수 있습니다. 엄격한 등가 연산자인 === 및 !== 을 사용하고, 필요한 변환을 명시적으로 지정하십시오. |
| M127 | 경고 | 식 문은 할당문, 호출문 또는 삭제식이어야 합니다. | |
| M128 | 오류 | 상태에는 지정된 하위 항목을 가질 수 없습니다. | |
| M129 | 오류 | 유형을 재귀적으로 인스턴스화할 수 없습니다. | |
| M201 | 힌트 | var 선언을 함수 시작 부분에 배치하십시오 | 자세한 내용은 JSLint 오류 설명의 ‘var’ 선언을 함수 맨 위로 이동하기를 참조하십시오. |
| M202 | 힌트 | 한 줄에 하나의 문장만 사용하십시오 | |
| M203 | 경고 | Qt Quick Designer에서는 명령형 코드가 지원되지 않습니다. | |
| M204 | 경고 | Qt Quick Designer에서는 이 QML 유형을 지원하지 않습니다. | |
| M205 | 경고 | Qt Quick Designer에서 상위 QML 유형에 대한 참조를 올바르게 해결할 수 없습니다. | |
| M206 | 경고 | 이 시각적 속성 바인딩은 로컬 컨텍스트에서 평가할 수 없으며, Qt Quick Designer에서 예상대로 표시되지 않을 수 있습니다. | |
| M207 | 경고 | Qt Quick 디자이너는 루트 QML 유형의 상태만 지원합니다. | |
| M208 | 오류 | 이 ID는 모호할 수 있으며, Qt Quick Designer에서는 지원되지 않습니다. | |
| M209 | 오류 | 이 유형(유형 이름)은 Qt Quick Designer에서 루트 요소로 지원되지 않습니다. | |
| M220 | 오류 | 이 유형(유형 이름)은 UI 파일(.ui.qml)의 루트 요소로 지원되지 않습니다. | 지원되는 QML 유형에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M221 | 오류 | 이 유형(유형 이름)은 UI 파일에서 지원되지 않습니다(.ui.qml). | 지원되는 QML 유형에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M222 | 오류 | UI 파일에서는 함수가 지원되지 않습니다(.ui.qml). | 지원되는 JavaScript 함수 목록은 지원되는 메서드를 참조하십시오. |
| M223 | 오류 | UI 파일에서는 JavaScript 블록을 지원하지 않습니다(.ui.qml) | 지원되는 기능에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M224 | 오류 | UI 파일에서 동작 유형이 지원되지 않습니다(.ui.qml) | 지원되는 QML 유형에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M225 | 오류 | 상태는 UI 파일의 루트 항목에서만 지원됩니다(.ui.qml) | 지원되는 기능에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M226 | 오류 | UI 파일에서는 루트 항목의 상위 항목을 참조할 수 없습니다(.ui.qml). | 지원되는 기능에 대한 자세한 내용은 UI 파일을 참조하십시오. |
| M227 | 오류 | UI 파일에서 번역 함수를 혼합하여 사용해서는 안 됩니다(.ui.qml) | qsTr 및 qsTrId 와 같은 여러 가지 번역 함수가 지원되지만, UI 파일 내에서 하나를 선택하여 일관되게 사용해야 합니다. 자세한 내용은 Qt Qml 메서드를 참조하십시오. |
| M300 | 오류 | 알 수 없는 컴포넌트 | |
| M301 | 오류 | name 의 프로토타입을 해결할 수 없습니다. object | |
| M302 | 오류 | 프로토타입을 확인할 수 없습니다 name | |
| M303 | 오류 | 프로토타입 사이클에서, 마지막으로 반복되지 않는 구성 요소는 name | |
| M304 | 오류 | 유효하지 않은 속성 유형 name | |
| M305 | 경고 | == != 는 형 변환을 수행하므로, 이를 방지하려면 또는 를 사용하십시오 === !== | M126을 참조하십시오. |
| M306 | 경고 | 대문자로 시작하는 함수를 호출할 때는 new | 관례에 따라, 대문자로 시작하는 함수는 new 와 함께만 사용해야 하는 생성자 함수입니다. |
| M307 | 경고 | new 는 대문자로 시작하는 함수에서만 사용하십시오. | 자세한 내용은 JSLint 오류 설명의 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M308 | 경고 | Number 를 생성자로 사용하지 마십시오 | 자세한 내용은 {a}를 생성자로 사용하지 마십시오를 참조하십시오. |
| M309 | 힌트 | 이항 연산자 앞뒤에 공백을 넣으십시오 | |
| M310 | 경고 | 의도하지 않은 빈 블록, 빈 객체 리터럴에는 ({})를 사용하십시오 | |
| M311 | 힌트 | 성능 향상을 위해 var 또는 variant 대신 type 을 사용하십시오. | |
| M312 | 오류 | 속성이 누락되었습니다. number | |
| M313 | 오류 | 객체 값이 필요합니다 | |
| M314 | 오류 | 배열 값이 예상됨 | |
| M315 | 오류 | Value 값이 필요합니다 | |
| M316 | 오류 | 최대 숫자 값은 number | |
| M317 | 오류 | 최소 숫자 값은 number | |
| M318 | 오류 | 최대 숫자 값은 (해당 값 제외)입니다. | |
| M319 | 오류 | 최소 숫자 값은 제외됩니다. | |
| M320 | 오류 | 문자열 값이 필수 패턴과 일치하지 않습니다. | |
| M321 | 오류 | 문자열 값의 최소 길이는 number | |
| M322 | 오류 | 최대 문자열 값 길이는 다음과 같습니다. number | |
| M323 | 오류 | Number 배열 값에 요소가 있어야 합니다 | 자세한 내용은 JSLint 오류 설명의 “배열 리터럴 표기법 []을 사용하는 것이 바람직합니다”를 참조하십시오. |
| M324 | 오류 | AST를 탐색하는 과정에서 최대 재귀 한도에 도달했습니다. 코드 모델은 신뢰할 수 없으며, 대부분 유효하지 않을 가능성이 높습니다. | |
| M326 | 오류 | 구성 요소는 하나의 자식 요소만 가질 수 있습니다. | 자세한 내용은 Component 을 참조하십시오. |
| M327 | 경고 | 컴포넌트에는 자식 요소가 필요합니다. | 자세한 내용은 Component 을 참조하십시오. |
| M400 | 경고 | 중복 임포트 | import 문이 두 번 추가되었습니다. 자세한 내용은 Import 문에서 확인하십시오. |
| M401 | 오류 | 루트 항목을 별칭으로 참조하지 마십시오 | alias 속성은 루트 컴포넌트를 직접 참조할 수 없습니다. 대신 해당 컴포넌트의 인스턴스를 생성하십시오. |
| M402 | 경고 | 계층 구조에서 루트 항목을 참조하지 마십시오 | alias 속성은 계층 구조의 루트 컴포넌트를 참조할 수 없습니다. 대신 해당 컴포넌트의 인스턴스를 생성하십시오. |
| M403 | 오류 | 'when' 조건에 객체를 포함할 수 없습니다 | when 조건을, 조건이 충족될 때 true 로 평가되는 표현식으로 설정하십시오. |
코드 모델 재설정
새 QML 모듈을 추가한 후 다음 오류 메시지가 표시되면, 프로젝트를 빌드한 다음 코드 모델을 재설정해 보십시오:
- QML 모듈을 찾을 수 없습니다.
- 알 수 없는 컴포넌트 (M300).
오류 메시지를 확인하려면, 코드 편집기에서 ‘ Qt Creator ’가 밑줄을 그은 코드 부분 위로 마우스 포인터를 올리거나, ‘ Qt Quick Designer’에서 QML 파일을 열 때 해당 부분을 확인하십시오.
코드 모델을 재설정하려면 ‘ Tools ’ > ‘ QML/JS ’ > ‘ Reset Code Model ’을 선택하십시오.
‘코드 구문 확인’, ‘코드 분석’ 및 ‘플러그인과 함께 QML 모듈 사용하기’항목도 참조하십시오 .
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.