Visual Basic에서 경고 구성
Visual Basic 컴파일러에는 런타임 오류를 발생시킬 가능성이 있는 코드에 대한 경고 집합이 포함되어 있습니다.이 정보를 사용하면 버그를 줄이면서 더 명확하고 빠르고 우수한 코드를 작성할 수 있습니다.예를 들어, 사용자가 할당되지 않은 개체 변수의 멤버를 호출하려고 할 경우, 반환 값을 설정하지 않고 함수를 반환하려고 할 경우 또는 논리에 오류가 있는 Try 블록을 실행하여 예외를 catch하려고 할 경우 컴파일러에서는 경고를 생성합니다.
경우에 따라 컴파일러에서는 추가 논리를 제공하여 사용자가 가능한 오류에 대비하는 대신 현재 작업에 집중할 수 있도록 합니다.이전 버전의 Visual Basic에서는 Option Strict를 사용하여 Visual Basic 컴파일러에서 제공하는 추가 논리를 제한했습니다.경고를 구성하면 개별 경고의 수준에서 더 구체적으로 이 논리를 제한할 수 있습니다.
프로젝트를 사용자 지정하여 응용 프로그램에 적절하지 않은 경고는 끄고 다른 경고는 오류로 전환할 수 있습니다.이 페이지에서는 개별 경고를 켜고 끄는 방법을 설명합니다.
경고 켜고 끄기
경고를 구성하는 방법에는 두 가지가 있습니다. 프로젝트 디자이너를 사용하여 구성하거나 /warnaserror와 /nowarn 컴파일러 옵션을 사용할 수 있습니다.
프로젝트 디자이너 페이지의 컴파일 탭에서 경고를 켜거나 끌 수 있습니다.모든 경고를 비활성화하려면 모든 경고 사용 안 함 확인란을 선택하고 모든 경고를 오류로 처리하려면 모든 경고를 오류로 처리를 선택합니다.일부 개별 경고는 표시된 표에서 원하는 대로 오류 또는 경고로 전환할 수 있습니다.
Option Strict를 Off로 설정하면 Option Strict 관련 경고를 서로 독립적으로 처리할 수 없습니다.Option Strict를 On으로 설정하면 관련된 경고가 상태에 관계없이 오류로 처리됩니다.명령줄 컴파일러에서 /optionstrict:custom을 지정하여 Option Strict를 Custom으로 설정하면 Option Strict 경고를 독립적으로 켜거나 끌 수 있습니다.
컴파일러의 /warnaserror 명령줄 옵션을 사용하여 경고를 오류로 처리할 것인지 여부를 지정할 수도 있습니다.이 옵션에 쉼표로 구분된 목록을 추가함으로써 + 또는 - 기호를 사용하여 오류나 경고로 처리할 경고를 지정할 수 있습니다.다음 표에서는 가능한 옵션에 대해 자세히 설명합니다.
명령줄 옵션 |
설명 |
---|---|
/warnaserror+ |
모든 경고를 오류로 처리 |
/warnsaserror- |
경고를 오류로 처리하지 않습니다.이 값이 기본값입니다. |
/warnaserror+:<warning list> |
쉼표로 구분된 목록에 오류 ID 번호로 나열된 특정 경고를 오류로 처리합니다. |
/warnaserror-:<warning list> |
쉼표로 구분된 목록에 오류 ID 번호로 나열된 특정 경고를 오류로 처리하지 않습니다. |
/nowarn |
경고를 보고하지 않습니다. |
/nowarn:<warning list> |
쉼표로 구분된 목록에 오류 ID 번호로 나열된 특정 경고를 보고하지 않습니다. |
경고 목록에는 오류로 처리할 경고의 오류 ID 번호가 포함되어 있으며 이 목록을 명령줄 옵션과 함께 사용하여 특정 경고를 켜거나 끌 수 있습니다.경고 목록에 잘못된 번호가 있으면 오류가 보고됩니다.
예제
명령줄 인수 예제가 나와 있는 이 표에서는 각 인수의 역할을 설명합니다.
인수 |
설명 |
---|---|
vbc /warnaserror |
모든 경고를 오류로 처리하도록 지정합니다. |
vbc /warnaserror:42024 |
경고 42024를 오류로 처리하도록 지정합니다. |
vbc /warnaserror:42024,42025 |
경고 42024 및 42025를 오류로 처리하도록 지정합니다. |
vbc /nowarn |
경고를 보고하지 않도록 지정합니다. |
vbc /nowarn:42024 |
경고 42024를 보고하도록 지정합니다. |
vbc /nowarn:42024,42025 |
경고 42024 및 42025를 보고하지 않도록 지정합니다. |
경고 유형
다음은 오류로 처리할 수 있는 경고 목록입니다.
암시적 변환 경고
암시적 변환의 경우에 생성됩니다.& 연산자를 사용할 때 내장 숫자 형식을 문자열로 변환하는 암시적 변환은 여기에 포함되지 않습니다.새 프로젝트의 기본값은 off입니다.
ID: 42016
런타임에 바인딩되는 메서드 호출 및 오버로드 확인 경고
런타임에 바인딩하는 경우에 생성됩니다.새 프로젝트의 기본값은 off입니다.
ID: 42017
Object 형식의 피연산자 경고
Option Strict On을 함께 사용할 경우 오류가 발생하는 Object 형식의 피연산자가 있을 때 생성됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42018 및 42019
'As' 절이 필요한 선언 경고
변수, 함수 또는 속성 선언에 As 절이 없어서 Option Strict On에서 오류가 발생할 수 있는 경우에 생성됩니다.형식이 할당되지 않은 변수는 Object 형식으로 간주됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42020(변수 선언), 42021(함수 선언) 및 42022(속성 선언)
null 참조 예외 가능 경고
값이 할당되기 전에 변수를 사용한 경우 생성됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42104, 42030
사용되지 않는 지역 변수 경고
지역 변수가 선언되었으나 참조되지 않는 경우 생성됩니다.기본값은 on입니다.
ID: 42024
인스턴스 변수를 통해 공유 멤버 액세스 경고
인스턴스를 통해 공유 멤버에 액세스할 때 문제가 발생할 수 있거나, 인스턴스 변수를 통한 공유 멤버 액세스가 식의 오른쪽에 있지 않거나 매개 변수로 전달되는 경우에 생성됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42025
재귀 연산자 또는 속성 액세스 경고
루틴의 본문에서 해당 루틴에 정의되어 있는 것과 같은 연산자나 속성을 사용하는 경우 생성됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42004(연산자), 42026(속성)
반환 값 없는 함수 또는 연산자 경고
함수 또는 연산자에 반환 값이 지정되지 않은 경우에 발생합니다.여기에는 함수와 이름이 같은 암시적 지역 변수에 Set을 생략한 경우가 포함됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42105(함수), 42016(연산자)
모듈에 사용된 오버로드 한정자 경고
Module에 Overloads를 사용한 경우에 발생합니다.새 프로젝트의 기본값은 on입니다.
ID: 42028
중복되거나 겹치는 catch 블록 경고
정의된 다른 Catch 블록과의 관계 때문에 Catch 블록에 도달할 수 없는 경우에 생성됩니다.새 프로젝트의 기본값은 on입니다.
ID: 42029, 42031
참고 항목
참조
Try...Catch...Finally 문(Visual Basic)
프로젝트 디자이너, 컴파일 페이지(Visual Basic)