이 페이지에서

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 메시지를 활성화하거나 비활성화하려면:

  1. Preferences > Qt Quick > ‘ QML/JS Editing ’로 이동합니다.
  2. Use customized static analyzer 을 선택합니다.

    Qt Quick 환경 설정의 QML/JS 편집 탭

  3. ' Enabled'에서 표시할 메시지를 선택합니다.
  4. 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)qsTrqsTrId 와 같은 여러 가지 번역 함수가 지원되지만, 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.