다음을 통해 공유


Visual Basic에서 경고 구성

Visual Basic 컴파일러에는 런타임 오류를 일으킬 수 있는 코드에 대한 경고 집합이 포함되어 있습니다. 이 정보를 사용하여 더 적은 버그로 더 깨끗하고 빠르고 더 나은 코드를 작성할 수 있습니다. 예를 들어 컴파일러는 사용자가 할당되지 않은 개체 변수의 멤버를 호출하거나, 반환 값을 설정하지 않고 함수에서 반환하거나, 논리에서 오류가 있는 Try 블록을 실행하여 예외를 catch하려고 할 때 경고를 생성합니다.

경우에 따라 컴파일러는 사용자가 가능한 오류를 예측하는 대신 현재 작업에 집중할 수 있도록 사용자를 대신하여 추가 논리를 제공합니다. 이전 버전의 Visual Basic에서는 Option Strict 사용하여 Visual Basic 컴파일러가 제공하는 추가 논리를 제한했습니다. 경고를 구성하면 개별 경고 수준에서 보다 세분화된 방식으로 이 논리를 제한할 수 있습니다.

다른 경고를 오류로 전환하는 동안 프로젝트를 사용자 지정하고 애플리케이션과 관련이 없는 일부 경고를 해제할 수 있습니다. 이 페이지에서는 개별 경고를 켜고 끄는 방법을 설명합니다.

경고 해제 및 켜기

경고를 구성하는 방법에는 여러 가지가 있습니다. 프로젝트 디자이너사용하여 경고를 구성하거나, /warnaserror/nowarn 컴파일러 옵션을 사용하거나, 프로젝트 파일(vbproj 파일)을 편집하고 NoWarn MSBuild 속성을 사용할 수 있습니다. MSBuild 속성을 사용하려면 전체 Visual Basic 프로젝트 대한 특정 경고 표시 안 함참조하세요.

프로젝트 디자이너 환경은 .NET Framework 프로젝트 또는 .NET Core(또는 .NET 5 이상) 프로젝트로 작업하는지 여부에 따라 다릅니다.

.NET Core(또는 .NET 5 이상) 프로젝트에서 프로젝트 디자이너컴파일 섹션에는 모든 경고를 사용하지 않도록 설정하거나, 모든 경고를 오류로 승격하거나, 각 경고 범주(기본값)를 별도로 제어하는 데 사용할 수 있는 경고 심각도 설정이 포함되어 있습니다. 경고 범주 설정은 프로젝트 디자이너동일한 영역에 표시됩니다.

.NET Framework 프로젝트의 프로젝트 디자이너컴파일 탭에서 모든 경고 사용 안 함 확인란을 선택하여 모든 경고를 사용하지 않도록 설정합니다. 모든 경고를 오류로 처리하려면 모든 경고를 오류 처리합니다. 일부 개별 경고는 표시된 테이블에서 원하는 대로 오류 또는 경고로 전환할 수 있습니다.

프로젝트 디자이너 페이지의 컴파일 탭을 사용하면 경고를 켜고 끌 수 있습니다. 모든 경고를 해제하려면 모든 경고 해제 확인란을 선택하십시오; 모든 경고를 오류로 처리하려면 모든 경고를 오류로 처리 확인란을 선택하십시오. 일부 개별 경고는 표시된 테이블에서 원하는 대로 오류 또는 경고로 전환할 수 있습니다.

Option StrictOff설정되면, Option Strict 관련 경고들은 독립적으로 처리할 수 없습니다. Option StrictOn설정하면 관련 경고는 상태에 관계없이 오류로 처리됩니다. 명령줄 컴파일러에서 /optionstrict:custom를 지정하여 Option StrictCustom으로 설정되면, Option Strict 경고를 독립적으로 켜거나 끌 수 있습니다.

컴파일러의 /warnaserror 명령줄 옵션을 사용하여 경고가 오류로 처리되는지 여부를 지정할 수도 있습니다. 이 옵션에 쉼표로 구분된 목록을 추가하여 + 또는 -를 사용하여 오류 또는 경고로 처리해야 하는 경고를 지정할 수 있습니다. 다음 표에서는 가능한 옵션에 대해 자세히 설명합니다.

명령줄 옵션 명시
/warnaserror+ 또는 /warnaserror 모든 경고를 오류로 처리
/warnsaserror- 경고를 오류로 처리하지 마세요. 이 설정은 기본값입니다.
/warnaserror+:<warning list > 쉼표로 구분된 목록 r에서 오류 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를 보고하지 않도록 지정합니다.

경고 유형

다음은 오류로 처리할 수 있는 경고 목록입니다.

암시적 변환 경고

암시적 변환 인스턴스에 대해 생성됩니다. & 연산자를 사용하는 경우 내장 숫자 형식에서 문자열로의 암시적 변환은 포함되지 않습니다. 새 프로젝트의 기본값이 꺼져 있습니다.

ID: 42016

늦게 바인딩된 메서드 호출 및 오버로드 해석 경고

지연 바인딩 인스턴스에 대해 생성됩니다. 새 프로젝트의 기본값은 꺼져 있습니다.

ID: 42017

'Object' 경고 형식의 피연산자

Option Strict On에서는 Object 형식의 피연산자가 발생할 경우 오류가 발생합니다. 새 프로젝트의 기본값은 활성화되어 있습니다.

ID: 42018 및 42019

선언에는 'As' 절에 대한 경고 메시지가 필요합니다.

As 절이 없는 변수, 함수 또는 속성 선언에서 Option Strict On오류가 발생할 때 생성됩니다. 할당된 형식이 없는 변수는 Object형식으로 간주됩니다. 새 프로젝트의 기본값은 켜져 있습니다.

ID: 42020(변수 선언), 42021(함수 선언) 및 42022(속성 선언).

null 참조 예외 경고가 있을 수 있음

값이 할당되기 전에 변수를 사용할 때 생성됩니다. 새 프로젝트의 기본값은 활성화되어 있습니다.

ID: 42104, 42030

사용되지 않는 지역 변수 경고

지역 변수가 선언되었지만 참조되지 않을 때 생성됩니다. 기본 설정이 켜져 있습니다.

ID: 42024

인스턴스 변수 경고를 통해 공유 멤버 액세스

인스턴스를 통해 공유 멤버에 액세스할 때 생성되는 부작용이 있거나 인스턴스 변수를 통해 공유 멤버에 액세스하는 경우 식의 오른쪽이 아니거나 매개 변수로 전달됩니다. 새 프로젝트의 기본값은 활성화되어 있습니다.

ID: 42025

재귀적 연산자 또는 속성 액세스 경고

루틴의 본문이 정의된 것과 동일한 연산자 또는 속성을 사용할 때 생성됩니다. 새 프로젝트의 기본값은 켜져 있습니다.

ID: 42004(연산자), 42026(속성)

반환 값 경고가 없는 함수 또는 연산자

함수 또는 연산자에 반환 값이 지정되지 않은 경우 생성됩니다. 여기에는 함수와 이름이 같은 암시적 지역 변수에 대한 Set 생략하는 것이 포함됩니다. 새 프로젝트의 기본값은 활성화되어 있습니다.

ID: 42105(함수), 42016(연산자)

모듈 경고에 사용되는 오버로드 한정자

OverloadsModule에서 사용될 경우 생성됩니다. 새 프로젝트의 기본값은 켜짐입니다.

ID: 42028

중복 또는 겹치는 catch 블록 경고

다른 정의된 Catch 블록과의 관계 때문에 Catch 블록에 도달하지 않을 때 생성됩니다. 새 프로젝트의 기본 설정은 켜져 있습니다.

ID: 42029, 42031