공개적으로 보이는 유형 또는 멤버에 대한 XML 주석이 없습니다.


381

"공개적으로 보이는 유형 또는 멤버에 대한 XML 주석 누락"경고가 표시됩니다.

이것을 해결하는 방법?


8
Visual Studio에서도 이것을 봅니다. 이 경고가 어떤 소프트웨어인지 알 수 있습니까? 스타일 경찰? Fx 경찰? 코드 분석? 어떻게 끌 수 있습니까?
Colonic Panic

답변:


668

5 가지 옵션 :

  • 문서 주석을 작성하십시오 (시간이 많이 걸리지 만 훌륭합니다)
  • 주석 생성 끄기 (프로젝트 속성에서)
  • 프로젝트 속성에서 경고를 비활성화하십시오 ( '프로젝트 속성'에서 프로젝트 속성-> 빌드> "오류 및 경고"(섹션), 경고 억제 (텍스트 상자), 1591 (쉼표로 구분 된 목록) 추가). 기본적으로 활성 구성이 변경됩니다. 구성을 모두로 변경하십시오.
  • 사용 #pragma warning disable 1591단지 코드의 일부 비트에 대한 경고를 비활성화 (및 #pragma warning restore 1591이후)
  • 경고를 무시하십시오 (나쁜 생각-새로운 "실제"경고를 놓치게됩니다)

5
@Jon, 해결책을 찾았습니다. 부분 클래스가있는 잘못된 코드에 대해이 경고가 표시되면 생성되지 않은 부분 클래스의 "다른 절반"을 찾으십시오. XML 주석을 추가하면 생성 된 코드 디스 패퍼에 대한 경고가 표시됩니다. WP7 프로젝트의 XAML 코드에서 생성 된 App.gics 파일의 App 클래스에 대해이 경고가 발생했습니다. 이를 해결하기 위해 App.xaml.cs 파일 (생성되지 않음)에 XML 주석을 추가해야했습니다.
Marcel W

@MarcelW : 아, 생성 된 멤버가 아닌가? 아니면 어쨌든 모두 내부입니까? 그 ... 감각을 만들 것
존 소총을

7
또한 서비스 참조 자동 생성 코드 에서이 경고가 표시되면 서비스 참조 를 마우스 오른쪽 단추로 클릭하고 "서비스 참조 구성 ..."을 선택한 다음 "생성 된 클래스의 액세스 레벨"을 내부로 변경하십시오.
Lee Grissom

9
@NickJ가 설명한대로 경고를 비활성화하는 경우 디버그 \ 릴리스뿐만 아니라 모든 구성에 대해 경고를 변경하십시오.
Avital

5
전체 클래스에 대한 코드를 표시하지 않으려면이 속성을 클래스 특성으로 추가 할 수도 있습니다. [System.Diagnostics.CodeAnalysis.SuppressMessage ( "Microsoft.Usage", "CS1591")]
cr1pto

92

공개적으로 볼 수있는 유형과 물론 구성원에 XML 주석 추가 :)

///<Summary>
/// Gets the answer
///</Summary>
public int MyMethod()
{
   return 42;
}

<summary>모든 멤버에 대해 이러한 유형 주석 이 필요합니다.이 주석도 인텔리전스 팝업 메뉴에 표시됩니다.

이 경고가 표시 되는 이유 는 프로젝트 설정에서 문서 xml 파일을 출력하도록 프로젝트를 설정했기 때문입니다. 이것은 클래스 라이브러리 (.dll 어셈블리)에 유용합니다. 즉, .dll 사용자가 Visual Studio에서 API에 대한 인텔리전스 문서를 받고 있음을 의미합니다.

GhostDoc Visual Studio AddIn 의 사본을 구하는 것이 좋습니다 . 문서화가 훨씬 쉬워집니다.


8
GhostDoc에 대해 +1 그것에 대해 전혀 몰랐습니다. 확실히 문서화가 쉬워졌습니다.
Vivelin

7
경고 사유를 제공 한 +1 프로젝트 속성 (VS 2008)의 빌드에서 설정을 찾은 후 아무런 이유없이 신비하게 확인한 10 개 중 하나의 프로젝트에서 설정을 해제했습니다.
척 윌버

30
-1 추천을 위해 GhostDoc-내가 본 것 중 가장 어리석은 AddOn. 문서를 생성합니다. 이제 생각을 잠시 멈추십시오. 메소드 이름 및 인수 유형만을 기반으로 문서를 생성하는 도구를 사용하도록 코드를보다 이해하기 쉽기를 원합니다. 당신에게 이치에 맞습니까? 사용자는 인수의 이름과 유형을보고 주석을 추가 할 수 있습니다 DateTime date- 날짜가 정말 도움이되지 않습니다.
gdoron 모니카 지원하고있다

4
@gdoron, 그것은 당신에게 발생하지 않았지만 GhostDoc이 생성 한 문서를 편집 할 수 있으므로 전체 문서를 처음부터 작성하는 것보다 많은 시간을 절약 할 수 있습니다.
Joel McBeth

3
GhostDoc은 주석의 내용을 추측하는 것 이상을 수행합니다. 대부분의 경우 거의 가깝고 전체 내용을 입력하는 대신 몇 단어를 편집하면됩니다. 문서를 올바르게 작성하고 있다면 아마도 그렇지 않을 것입니다), 대부분의 것들에 대한 템플릿이 있으며, 속성, 생성자 등을 위해 표현 해야하는 방법이 있으며 GhostDoc은 그것들을 더 멋지게 넣습니다. 기본 클래스의 문서를 직접 복사하는 대신 작업 할 템플리트로 문서를 작성하십시오. 예외
블러

41

XML 주석에 대한 경고 억제

(내 작품이 아니지만 유용하다는 것을 알았으므로 기사 및 링크를 포함 시켰습니다)

http://bernhardelbl.wordpress.com/2009/02/23/suppress-warnings-for-xml-comments/

여기에서는 Visual Studio 빌드 후 XML 주석에 대한 경고를 표시하지 않는 방법을 보여줍니다.

배경

Visual Studio 프로젝트 설정에서 "XML 문서 파일"표시를 확인한 경우 모든 XML 주석이 포함 된 XML 파일이 생성됩니다. 또한 XML 주석이 없거나 잘못되어 디자이너가 생성 한 파일에도 많은 경고가 표시됩니다. 경고가 코드를 개선하고 안정화시키는 데 도움이되는 경우도 있지만 수백 개의 XML 주석 경고를받는 것은 쉽지 않습니다. 경고

공개적으로 표시되는 형식 또는 멤버에 대한 XML 주석이 없습니다. XML 주석에…에는 '…'에 대한 param 태그가 있지만 해당 이름의 매개 변수가 없습니다. 매개 변수 '…'에는 '…'에 대한 XML 주석에 param 태그와 일치하지 않습니다. 다른 매개 변수는) 솔루션

Visual Studio에서 모든 경고를 표시하지 않을 수 있습니다.

  • Visual Studio 프로젝트 / 속성 / 빌드 탭을 마우스 오른쪽 버튼으로 클릭하십시오.

  • "억제 경고"에 다음 경고 번호를 입력하십시오. 1591,1572,1571,1573,1587,1570


6
Xml 주석 경고를 표시하지 않으려면 1591 만 추가하면됩니다.
Brian Behm

코드 목록에 감사드립니다! 나는 그것들을 하나씩 수집하기 시작했고 경고와 함께 세 번째 빌드에서 나는 어딘가에서 그것을
가져와야

1591도 "폐기 됨"경고를 제거하지만 MS는 설명에 대해서만 msdn.microsoft.com/en-us/library/zk18c1w9.aspx
Pawel Cioch

나는 또한 MS에서 모든 1572,1571,1573,1587,1570을 확인했으며, 설정하지 않았으며, 더 구체적인 오류입니다. 경고해야합니다
Pawel Cioch

26

코드 변경이나 pragma 블록 없이도 이러한 메시지를 억제 할 수있는 또 다른 방법이 있습니다. Visual Studio 사용-프로젝트 속성> 빌드> 오류 및 경고> 경고 표시 안함-경고 코드 목록에 1591을 추가하십시오.

여기에 이미지 설명을 입력하십시오


이것은 지금까지 본 문제에 대해 지금까지 본 답변 중 가장 쉽고, 가장 쉽고, 가장 빠른 답변입니다. 그것은 위의 다른 대답의 반복이지만, 이것은 훨씬 시각적으로 설명 적이며 빠른 즉각적인 대답을 제공합니다. 대단히 감사합니다.
David Covey

가장 좋은 답변은 여기입니다. #pragma warning disable어디에서나 코드베이스를 흩어 버릴 수 없습니다.
RoadRunner-MSFT

23

XML 주석을 삽입하십시오. ;-)

/// <summary>
/// Describe your member here.
/// </summary>
public string Something
{
    get;
    set;
}

언뜻보기에 농담처럼 보일 수 있지만 실제로 유용 할 있습니다. 나에게 개인적인 방법으로도 어떤 방법을 사용하는지 생각하는 것이 도움이되는 것으로 판명되었습니다 (물론 사소한 것이 아니라면).


5
필자는 항상 메서드에 주석을 달지만 속성 (테 헤닉 방식이지만 일반적으로 사소한 구현 및 자명 한 이름이있는 속성 )에 대해서는 불필요한 XML 주석을 추가하는 데 지루한 반복을 피하는 것을 선호합니다.
Peter Gluck

15

XML 문서 파일이 프로젝트 속성에 지정되어 있고 메서드 / 클래스가 공개되어 문서가 없기 때문입니다.
다음 중 하나를 수행 할 수 있습니다.

  1. XML 문서를 비활성화하십시오.

    프로젝트-> 속성-> '빌드'탭을 마우스 오른쪽 버튼으로 클릭하고 XML 문서 파일을 선택 취소하십시오.

  2. 앉아서 직접 문서를 작성하십시오!

XML 문서 요약은 다음과 같습니다.

/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..

감사합니다. 이 방법은 경고를 비활성화하는 가장 좋은 방법이라고 생각합니다
Ramil Aliyev

8

여기에 나열된 답변에 무언가를 추가하고 싶었습니다.

Isak이 지적했듯이 XML 설명서는 Visual Studio 내의 모든 소비자에게 인텔리전스를 제공하므로 클래스 라이브러리에 유용합니다. 따라서 쉽고 정확한 솔루션은 자체 프로젝트 외부에서 구현되지 않는 최상위 프로젝트 (UI 등)의 문서를 간단히 끄는 것입니다.

또한 경고는 공개적으로 보이는 회원 에게만 표시됩니다 . 따라서 필요한 것만 공개하도록 클래스 라이브러리를 설정하면 문서화 privateinternal멤버 없이도 얻을 수 있습니다 .


8

나는 이것이 정말로 오래된 스레드라는 것을 알고 있지만 Google의 첫 번째 반응 이므로이 정보를 추가 할 것이라고 생각했습니다.

이 동작은 "프로젝트 속성"-> "빌드"에서 경고 수준이 4로 설정된 경우에만 발생합니다 . 실제로 많은 정보가 필요하지 않은 경우 3으로 설정할 수 있으며 이러한 경고를 제거 할 수 있습니다. 물론 경고 수준을 변경하면 주석 이상의 내용에 영향을 미치므로 누락 될 내용이 확실하지 않은 경우 설명서를 참조하십시오.
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx


7

솔루션에서 XML 문서 파일을 생성하는 옵션을 확인하면 XMLDoc이 있는지 여부에 대한 공개 멤버 확인이 시작됩니다. 그렇지 않은 경우 각 요소마다 경고가 표시됩니다. 실제로 DLL을 해제하고 싶지 않고 설명서가 필요하지 않은 경우 솔루션으로 이동하여 섹션을 작성하고 끄십시오. 필요한 경우 채우십시오. 중요하지 않은 경우 속성과 필드, 사전 컴파일러 지시 사항 #pragma warning disable 1591 을 능가 하여 경고를 복원 할 수도 있습니다. #pragma warning restore 1591

pragma 사용법 : 컴파일러 경고를 받기 전에 코드의 어느 위치에 있는지 ... (파일의 경우 헤더에 넣고 다시 클래스를 감싸거나 클래스를 감싸는 단일 클래스 또는 메소드 랩을 위해 다시 활성화 할 필요가 없습니다. 메소드 또는 ... 당신은 그것을 감쌀 필요가 없으며, 그것을 호출하고 우연히 복원 할 수 있습니다 (파일 시작에서 시작하여 메소드 내부에서 끝남))이 코드를 작성하십시오 :

#pragma warning disable 1591 복원해야 할 경우 다음을 사용하십시오. #pragma warning restore 1591

예를 들면 다음과 같습니다.

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using RealEstate.Entity.Models.Base;

namespace RealEstate.Models.Base
{
    public class CityVM
    {

#pragma warning disable 1591

        [Required]
        public string Id { get; set; }

        [Required]
        public string Name { get; set; }

        public List<LanguageBasedName> LanguageBasedNames { get; set; }

        [Required]
        public string CountryId { get; set; }

#pragma warning restore 1591

        /// <summary>
        /// Some countries do not have neither a State, nor a Province
        /// </summary>
        public string StateOrProvinceId { get; set; }
    }
}

참고 상기에서 Pragma 지시자의 시작은 라인의 시작 있음


2
#pragma warning disable 1591
#pragma warning disable 1591
#pragma warning disable 1572
#pragma warning disable 1571
#pragma warning disable 1573
#pragma warning disable 1587
#pragma warning disable 1570

2

경고 수준을 2로 설정하면이 메시지가 표시되지 않습니다. 유용한 경고를 표시하지 않으므로 최상의 솔루션인지 알 수 없습니다.


이것을 선택하기보다는 XML 문서를 비활성화하면 위험이 줄어 듭니다.
Ajay Aradhya

2

Jon Skeet의 답변은 VisualStudio로 구축 할 때 유용합니다. 그러나 명령 줄 (내 경우에는 Ant를 통해)을 통해 sln을 작성하는 경우 msbuild가 sln supression 요청을 무시한다는 것을 알 수 있습니다.

이것을 msbuild 명령 줄에 추가하면 문제가 해결되었습니다.

/p:NoWarn=1591

1

파일 > 편집 > 프로젝트보기 (클릭)

드롭 다운 보우의 맨 아래 ( 열기 / 현재 작업 > 속성 클릭 )의 "출력"아래 "빌드"에서 프로젝트 속성 페이지를여십시오. XML 문서 확인란을 "선택 취소하십시오" .

재 구축 및 경고 없음.


모든 빌드 구성도 확인하십시오. 디버그에서는 체크하지 않았지만 릴리스에서는 체크하지 않았고 매우 혼란 스러웠습니다.
MattM

1
이 솔루션은 WebAPI 설명서의 경우 솔루션이 아닙니다. 이 옵션은 켜져 있지만 경고는 표시하지 마십시오.
Pawel Cioch

1

경고가 표시되는 멤버에 대해 /// 주석을 추가해야합니다.

아래 코드를 참조하십시오

public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

공개적으로 보이는 유형 또는 멤버 '.EventLogger ()'에 대한 XML 주석 누락 경고를 표시합니다.

나는 회원에 대한 의견을 추가하고 경고가 사라졌습니다.

///<Summary>
/// To write a log <Anycomment as per your code>
///</Summary>
public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

-5

메소드에 속성을 첨부 한 후 해당 메시지를 받았습니다

[webMethod]
public void DoSomething()
{
}

그러나 올바른 방법은 다음과 같습니다.

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.