Herkese görünür tür veya üye için eksik XML yorumu


381

Şu uyarıyı alıyorum: "Herkes tarafından görülebilir tür veya üye için XML yorumu eksik".

Bunu nasıl çözebilirim?


8
Bunu Visual Studio'da da görüyorum. Bu uyarının hangi yazılımdan geldiğini bilen var mı? Stil Polis? Fx Polis? Kod Analizi? Nasıl kapatabilirim?
Albay Panik

Yanıtlar:


668

5 seçenek:

  • Doküman yorumlarını doldurun (harika, ancak zaman alıcı)
  • Yorum oluşturmayı kapatma (proje özelliklerinde)
  • Proje özelliklerinde uyarıyı devre dışı bırakın ('Proje özellikleri' bölümünde Proje özellikleri -> Derleme> "Hatalar ve uyarılar" (bölüm), Uyarıları Gizle (metin kutusu) bölümüne gidin, 1591 ekleyin (virgülle ayrılmış liste). Varsayılan olarak Aktif Yapılandırmayı değiştirir, yapılandırmayı Tümü olarak değiştirmeyi düşünün.
  • #pragma warning disable 1591Uyarıyı yalnızca bazı kod parçaları için (ve #pragma warning restore 1591daha sonra) devre dışı bırakmak için kullanın
  • Uyarıları yoksay (kötü fikir - yeni "gerçek" uyarıları kaçırırsınız)

5
@Jon, çözümü buldu: Kısmi bir sınıfla tekrar kod için bu uyarıyı alırsanız, üretilmeyen kısmi sınıfın "diğer yarısını" arayın. Buraya bir XML yorumu eklerseniz, oluşturulan kod için uyarı kaybolur. Bir WP7 projesinde XAML kodundan oluşturulan App.gics dosyasında App sınıfı için bu uyarı vardı. Bu sorunu çözmek için, App.xaml.cs dosyasına (oluşturulmamış olan) bir XML yorumu eklemek zorunda kaldım.
Marcel W

@MarcelW: Ah, yani oluşturulan üyeler için değil mi? Yoksa yine de hepsi dahili mi? Bu mantıklı olurdu ...
Jon Skeet

7
Ayrıca, bu uyarıyı Otomatik olarak oluşturulan bir Hizmet kodundan alıyorsanız , hizmet başvurusunu sağ tıklatıp, "Hizmet Başvurusunu Yapılandır ..." seçeneğini belirleyip "Oluşturulan sınıflar için erişim düzeyini" Dahili olarak değiştirebilirsiniz.
Lee Grissom

9
@NickJ'in açıkladığı gibi uyarıları devre dışı bırakıyorsanız, yalnızca hata ayıklama \ serbest bırakma için değil, tüm yapılandırmalar için değiştirdiğinizden emin olun.
Avital

5
Tüm bir sınıfın kodunu bastırmak istiyorsanız, bunu bir sınıf niteliği olarak da ekleyebilirsiniz: [System.Diagnostics.CodeAnalysis.SuppressMessage ("Microsoft.Usage", "CS1591")]
cr1pto 22:03

92

Herkes tarafından görülebilir türlere ve elbette üyelere XML yorumları ekleyin :)

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

<summary>Tüm üyeler için bu tür yorumlara ihtiyacınız vardır - bunlar da intellisense açılır menüsünde görünür.

Sebebi sen (proje ayarlarında) çıkış belgeleri xml dosyasına projenizi belirtmiş olduğunuz için bu uyarıyı almak olduğunu. Bu, sınıf kütüphaneleri (.dll montajları) için kullanışlıdır.

Kendinize GhostDoc Visual Studio AddIn'in bir kopyasını almanızı öneririm . Dokümantasyonu çok daha kolay hale getirir .


8
GhostDoc'dan bahsettiği için +1. Bunu hiç bilmiyordum, kesinlikle belgelemeyi kolaylaştırıyor.
Vivelin

7
Uyarının sebebini belirttiğiniz için +1. Proje özelliklerinde Build (VS 2008) altındaki ayarı buldum ve gizemli bir şekilde iyi bir sebep için kontrol etmediği on projeden birini kapattı.
Chuck Wilbur

30
-1 Tavsiye için GhostDoc- şimdiye kadar gördüğüm en aptal AddOn. Belgeler üretir. Şimdi düşünmek için bir saniye ara verin. Kodunuzun daha anlaşılır olmasını istersiniz, böylece yalnızca yöntem adı ve bağımsız değişken türlerine dayalı olarak belgeler üreten bir araç kullanırsınız. Sizin için bir anlam ifade ediyor mu? Kullanıcı argümanların adını ve türlerini görebilir, yorum ekleyebilir DateTime date- Tarih gerçekten yardımcı olmuyor.
gdoron Monica

4
@gdoron, bu sizin başınıza gelmemiş olabilir, ancak GhostDoc'un oluşturduğu belgeleri düzenleyebilirsiniz, bu da tüm belgeleri sıfırdan yazmaya karşı size çok zaman kazandıracaktır.
Joel McBeth

3
GhostDoc, yorumların ne olması gerektiğini tahmin etmekten daha fazlasını yapar - çoğu zaman oldukça yakındır ve her şeyi yazmak yerine birkaç kelimeyi düzenlemeniz yeterlidir - ve doğru bir şekilde belgeliyorsanız (ve siz muhtemelen değil), çoğu şey için bir şablon var, nasıl ifade edilmeleri gerekiyor (mülkler, inşaatçılar vb. için) ve GhostDoc bunları daha da serin hale getiriyor: Bir çocuk sınıfındaysanız, el ile kopyalamak yerine, çalışmak için bir şablon olarak temel sınıftan belgeleri doldurun - istisna
bulanıklık

41

XML yorumları için Uyarıları Gizle

(işim değil, ama yararlı buldum, bu yüzden makaleyi ve bağlantıyı ekledim)

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

Burada size bir Visual Studio derlemesinden sonra XML yorumları için uyarıları nasıl bastırabileceğinizi göstereceğim.

Arka fon

Visual Studio proje ayarlarında "XML belge dosyası" işaretini işaretlediyseniz, tüm XML yorumlarını içeren bir XML dosyası oluşturulur. Ayrıca, eksik veya yanlış XML yorumları nedeniyle tasarımcı tarafından oluşturulan dosyalarda da çok fazla uyarı alacaksınız. Bazen uyarılar kodumuzu geliştirmemize ve stabilize etmemize yardımcı olurken, yüzlerce XML yorum uyarısı almak sadece bir acıdır. Uyarılar

Herkese açık olarak görünen tür veya üye için XML yorumu eksik… XML açıklamasında…… için bir param etiketi var, ancak bu adda bir parametre yok Parametre '…' için XML yorumunda '…' için eşleşen param etiketi yok (ancak diğer parametreler)

Visual Studio'da her uyarıyı bastırabilirsiniz.

  • Visual Studio projesini / Özellikler / Derleme Sekmesini sağ tıklatın

  • "Uyarıları bastır" a aşağıdaki uyarı numaralarını girin: 1591,1572,1571,1573,1587,1570


6
Sadece Xml yorum uyarılarını bastırmak için 1591 eklemem gerekiyordu.
Brian Behm

Kod listesi için teşekkürler! Onları tek tek toplamaya başladım ve 3. yapıda uyarılarla olduğu gibi bir yerden almam gerektiğini düşündüm :)
sarh

Bir şey doğru değil, 1591 "Eski" uyarıları da kaldırır, ancak MS bunun yalnızca yorumlarla ilgili olduğunu belirtir msdn.microsoft.com/en-us/library/zk18c1w9.aspx
Pawel Cioch

Ayrıca MS 1572,1571,1573,1587,1570'in hepsini de kontrol ettim ve onları ayarlamazdım, daha spesifik hatalar, /// <summary> ayarladığınızı ve sonra parametrelerde bir hata yaptığınızı varsayalım, uyarı almalısınız
Pawel Cioch

26

Herhangi bir kod değişikliğine veya pragma bloğuna ihtiyaç duymadan bu mesajları bastırmanın başka bir yolu vardır. Visual Studio'yu kullanma - Proje özellikleri> Oluştur> Hatalar ve Uyarılar> Uyarıları Gizle - uyarı kodlarının listesine 1591 ekleyin.

resim açıklamasını buraya girin


Bu, bu konuda şimdiye kadar gördüğüm en iyi, en kolay ve en hızlı cevabı uygulamak. Bu, yukarıdaki başka bir cevabın tekrarıdır, ancak bu, anında anında cevap veren çok daha görsel olarak tanımlayıcıdır. Çok teşekkür ederim.
David Covey

En iyi cevap burada. Kod tabanımı #pragma warning disableher yere dağıtmamı engelliyor , bu sadece sinir bozucu.
RoadRunner - MSFT

23

Bir XML yorumu ekleyin. ;-)

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

Bu ilk bakışta bir şaka gibi görünebilir, ancak aslında yararlı olabilir . Benim için, özel yöntemler için bile hangi yöntemlerin ne yaptığını düşünmek yararlı oldu (gerçekten önemsiz olmadıkça, elbette).


5
Ben her zaman yöntemleri yorum, ama özellikleri için (bu teorik olarak yöntemler ama genellikle önemsiz uygulamaları ve kendinden belirgin isimleri var) Ben gereksiz XML yorum ekleyerek tedium ve tekrar önlemek için tercih ederim.
Peter Gluck

15

Bunun nedeni, Proje Özelliklerinizde bir XML dokümantasyon dosyasının belirtilmiş olması ve Yöntem / Sınıfınızın herkese açık olması ve doküman eksikliğinin olmasıdır.
Şunlardan birini yapabilirsiniz:

  1. XML belgelerini devre dışı bırak:

    Projenize sağ tıklayın -> Özellikler -> 'Oluştur' sekmesi -> XML Dokümantasyon Dosyasının işaretini kaldırın.

  2. Oturup belgeleri kendiniz yazın!

XML belgelerinin özeti şu şekildedir:

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

Teşekkürler. Bu yolun uyarıyı devre dışı bırakmak için en iyi yol olduğunu düşünüyor
Ramil Aliyev

8

Burada listelenen cevaplara bir şeyler eklemek istedim:

Isak'ın işaret ettiği gibi, XML belgeleri Visual Studio içindeki herhangi bir tüketiciye akıllıca sağladığı için Sınıf Kütüphaneleri için kullanışlıdır. Bu nedenle, kolay ve doğru bir çözüm, kendi projesi dışında uygulanmayacak olan herhangi bir üst düzey proje (UI, vb.) İçin belgeleri basitçe kapatmaktır.

Ayrıca, uyarının yalnızca herkese açık üyelerde ifade edildiğini belirtmek istedim . Bu nedenle, sınıf kitaplığınızı yalnızca ihtiyaç duydukları şeyleri ortaya çıkaracak şekilde ayarlarsanız, belgeleri privateve internalüyeleri olmadan alabilirsiniz .


8

Bu gerçekten eski bir iş parçacığı olduğunu biliyorum, ama bu bilgi ekledi düşündüm bu yüzden google ilk yanıt:

Bu davranış sadece uyarı düzeyi "Proje Özellikleri" - 4 "Build" altında 4 olarak ayarlandığında oluşur . Bu kadar fazla bilgiye gerçekten ihtiyacınız olmadığı sürece 3'e ayarlayabilirsiniz ve bu uyarılardan kurtulabilirsiniz. Elbette, uyarı düzeyini değiştirmek yalnızca yorumlardan daha fazlasını etkiler, bu yüzden neyi kaçırdığınızdan emin değilseniz lütfen belgelere bakın:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx


7

Çözümünüzde, XML Belgesi dosyası oluşturma seçeneğini işaretlediğinizde, genel üyelerinizi XMLDoc'a sahip olup olmadıklarını kontrol etmeye başlar, yoksa her öğe için bir uyarı alırsınız. Gerçekten DLL'nizi serbest bırakmak istemiyorsanız ve aynı zamanda belgelere ihtiyacınız yoksa, çözümünüze gidin, bölüm oluşturun ve kapatın, başka bir şeye ihtiyacınız varsa, onları doldurun ve önemsiz varsa özellikleri ve alanları, sadece derleyici öncesi talimat ile onları aşmak #pragma warning disable 1591 da uyarıyı geri yükleyebilirsiniz: #pragma warning restore 1591

pragma kullanımı: derleyici uyarı aldığınız yerden önceki herhangi bir yerde ... (dosya için, üstbilgiye koyun ve tekrar etkinleştirmeniz gerekmez, bir sınıfın etrafında tek sınıf sarması için veya yöntem sarması için bir yöntem veya ... etrafına sarmanıza gerek yok, onu çağırabilir ve rasgele geri yükleyebilirsiniz (dosyanın başlangıcında başlayın ve bir yöntemin içinde bitirin)), şu kodu yazın:

#pragma warning disable 1591 ve geri yüklemeniz gerekirse, şunu kullanın: #pragma warning restore 1591

İşte bir örnek:

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 yönergesinin satır başında başladığını unutmayın


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

Uyarı seviyesinin 2 olarak ayarlanması bu mesajları bastırır. En iyi çözüm olup olmadığını bilmiyorum çünkü yararlı uyarıları da bastırıyor.


Bunu tercih etmek yerine, sanırım, xml belgelerini devre dışı bırakmak riskleri azaltır.
Ajay Aradhya

2

Jon Skeet'in yanıtı, VisualStudio ile birlikte çalışırken çok işe yarar. Ancak, sln komut satırıyla (benim durumumda Ant aracılığıyla) oluşturuyorsanız, msbuild'in sln supresyon isteklerini yok saydığını görebilirsiniz.

Bunu msbuild komut satırına eklemek sorunu benim için çözdü:

/p:NoWarn=1591

1

Dosya > Düzenle > Projeyi Görüntüle (tıklayın)

Açılır yayın alt kısmı ( Açık / Mevcut çalışma > Özellikler'e tıklayın ), "Çıktı" altında "Derleme" de proje özellikleri sayfasını açtı. XML Belgeleri onay kutusunun "işaretini kaldırın" .

Yeniden oluştur ve uyarı yok.


Tüm yapı yapılandırmalarınızı da kontrol ettiğinizden emin olun. Debug için işaretini kaldırdım ama Release için değil ve çok karıştı.
MattM

1
Bu çözüm, WebAPI belgelerinde çözüm değildir. Bu seçeneğin açık olması gerekir, ancak uyarıları bastırın.
Pawel Cioch

1

Uyarının görüntülendiği üye için /// Yorum eklemeniz gerekir.

aşağıdaki koda bakınız

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

Herkese görünür tür veya üye için '.EventLogger ()' uyarısı eksik XML yorumu görüntüler

Üye için yorum ekledim ve uyarı gitti.

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

-5

Bir yönteme bir öznitelik ekledikten sonra bu mesajı aldım

[webMethod]
public void DoSomething()
{
}

Ancak doğru yol şuydu:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.