C #-사용자 지정 사용되지 않는 경고를 선택적으로 억제


212

내가 사용하고 Obsolete특정 방법을 사용하는 경우 경고를 표시하는 (처럼 동료 프로그래머들에 의해 제안) 속성을.

SuppressMessage사용이 정당한 지점에서 CodeAnalysis와 유사한 경고를 억제하는 방법 이 있습니까?

[Obsolete("Some message")]경고 618 [Obsolete]을 생성하는 메시지와 경고 612를 생성하는 메시지가없는 일반 속성 이 작동해야합니다 .

답변:


257

사용 #pragma warning disable:

using System;

class Test
{
    [Obsolete("Message")]
    static void Foo(string x)
    {
    }

    static void Main(string[] args)
    {
#pragma warning disable 0618
        // This one is okay
        Foo("Good");
#pragma warning restore 0618

        // This call is bad
        Foo("Bad");
    }
}

"나쁜"전화를 놓치지 않도록 나중에 경고를 복원하십시오.


1
사용하지 않는 속성이있는 메시지를 제공하지 않은 경우에만 작동합니다. 다음과 같은 메시지가 표시됩니다. [Obsolete ( "이것은 사용해서는 안되는 이유입니다. 대신 XYZ를 사용하십시오.")]. 메시지를 넣으면 pragma warning disable 612가 작동을 멈추고 관계없이 경고가 표시됩니다. 대신 다른 오류 ID가 필요합니까?
Alex

2
발견-사용되지 않는 속성에 메시지가있는 경우 올바른 경고 번호는 618입니다. 감사합니다!
Alex

2
Goodo-이 예제와 일치하도록 예제를 조정했습니다.
Jon Skeet

6
@George : 여기에서 찾을 수 있습니다 .
Jordão

3
먼저 경고 / 오류 번호를 얻는 방법에 대한 내 답변 을 참조하십시오 .
Aaron Thoma

131

의도는 쓸모에 대한 경고를 비활성화하는 것입니다 사용량 에 관계없이 구조가 표시되어 있는지 여부 [Obsolete][Obsolete("Message")]. 따라서 CS0612 CS0618을 모두 사용 하십시오 .

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

3
또한 더 이상 사용되지 않는 사용이 자체적으로 사용되지 않는 것으로 표시된 클래스에서는 경고가 발생하지 않습니다.
redcalx

3
오류로 Obsolete표시된 경우 오류를 비활성화하는 방법이 있습니까?
Shimmy Weitzhandler

2
@ Shimmy : 오류로 표시되면 수정해야하며 오류를 억제 할 수있는 방법이 없습니다. 구문 문제 일 수 있으며이 사이트에 질문으로 게시하면 좋은 답변을 얻을 수 있습니다.
Jordão

18

먼저 경고 / 오류 번호를 얻는 방법은 다음과 같습니다 .

  1. 프로젝트를 다시 빌드 하십시오.
  2. 출력 창으로 이동하십시오 .
  3. 억제하려는 경고 / 오류 줄을 찾으십시오.
    예를 들면 다음과 같습니다.
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. " " 뒤에 숫자 부분 복사하십시오 CS.
  5. 존 소총은 그런 다음 진행 말한다 .

( Jon Skeet의 말 대로 항상 진행하십시오 .)


9

#pragma경고 비활성화 지시문을 찾고 있습니다.

기본적으로 .cs 파일의 호출 사이트 위에 다음 명령을 추가하십시오.

#pragma warning disable 612
SomeMethodCall

612는 더 이상 사용되지 않는 메소드를 호출하기위한 오류 메시지 ID입니다.


사용하지 않는 속성이있는 메시지를 제공하지 않은 경우에만 작동합니다. 다음과 같은 메시지가 표시됩니다. [Obsolete ( "이것은 사용해서는 안되는 이유입니다. 대신 XYZ를 사용하십시오.")]. 메시지를 넣으면 pragma warning disable 612가 작동을 멈추고 관계없이 경고가 표시됩니다. 대신 다른 오류 ID가 필요합니까?
Alex

2
발견-사용되지 않는 속성에 메시지가있는 경우 올바른 경고 번호는 618입니다.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.