2017-08-25 68 views
8

C++ kod tabanımı belgelemenin bir parçası olarak, tüm Doxygen kapsama alanına girmeye çalışıyorum - yani, tüm (yüzlerce) başlık dosyalarının, herkese açık API'leri için iyi oluşturulmuş Doxygen yorumlarına sahip olmasını istiyorum. Böylece Doxygen'i kod tabanında çalıştırabilirim ve "uyarı: blah belgelenmemiş" uyarılarını göremiyorum.Tam Doxygen kapsamı için gerekli olan gereksiz yorum miktarını azaltmak için bir hile var mı?

Genel olarak bu sadece bir şeyleri incelemek ve belgelemek meselesidir, ancak her bir sınıf için aynı metni tekrar tekrar girmeye devam ettiğimi fark ettim.

/** The Foo class represents blah blah blah */ 
class Foo 
{ 
public: 
    /** Default constructor */ 
    Foo(); 

    /** Copy constructor 
     * @param rhs the object to make this object a copy of. 
     */ 
    Foo(const Foo & rhs); 

    /** Destructor */ 
    ~Foo(); 

    /** Equality operator. 
     * @param rhs the object to compare against. 
     * @returns true iff this object and (rhs) are equal. 
     */ 
    bool operator == (const Foo & rhs) const; 

    /** Inequality operator. 
     * @param rhs the object to compare against. 
     * @returns true iff this object and (rhs) are not equal. 
     */ 
    bool operator != (const Foo & rhs) const; 

    /** Assignment operator 
     * @param rhs the object we should copy our state from 
     * @returns a reference to *this 
     */ 
    Foo & operator = (const Foo & rhs); 

[...] 
} 

her sınıf için Bu yorumlar vardır (genellikle) daha fazla veya daha az tam olarak aynı, bu işlevler nedeniyle/operatörler hemen hemen her zaman her ötürü tam olarak aynı şekilde çalışır: Örneğin, ben aslında bunun birçok örneğini var sınıf. Aslında, C++ programcıları genellikle operatörlerin her sınıf için aynı şekilde çalışmasını beklediklerinden, operatörlerin veya başka bir şekilde davranan kurucuların kopyalanması şüpheli bir tasarım modeli olacaktır.

Sorularım, bu metni el ile tekrar tekrar girmek zorunda kalmadan, bu şeyler için (örneğin, bir çeşit şablon veya makro aracılığıyla) makul belgeleri otomatik olarak oluşturmak için Doxygen'e söyleyeceğim bazı hileler var mı? Bu, girmek ve sürdürmek zorunda olduğum metin miktarını büyük ölçüde azaltacaktı ve aynı zamanda "no duh" çeşitliliğinin yorumlarını kaldırmama izin vererek başlık dosyalarınımı dağıtacaktır, böylece okuyucu yorumları daha kolay bulabilir Bu gerçek bir anlayış sunar. Bu veriyor

/*! @copydoc MyClass::myfunction() 
* More documentation. 
*/ 

birinden diğerine sınıftan belgeleri kopyalamak için:

\copydoc \copybrief \copydetails

Doxygen yardım aşağıdaki sözdizimini göstermektedir:

+0

Oldukça geniş bir sınıf kütüphanesinin tam ortasındaki yazıyorum. Sınıflarımın çoğu için ortak tasarım deseni ile robo tarafından oluşturulan iskelet kodunu dağıtan kısa bir senaryo yazdım. Arama/değiştirmeyle manuel olarak düzelttiğim birkaç anahtar kelime ile Doxygen yorumlarını dahil ediyorum. Ben de daha iyi bir yaklaşım bulamadım. –

+0

@JeremyFriesner: "* uyarı: blah belgelenmemiş" Bu uyarıları kapatmayı düşündünüz mü? Özellikle parametreler ve dönüş çeşitleri etrafında; Onları belgelemek için bir sebep yok. –

+0

@NicolBolas diğer (daha ilginç) işlevler ve yöntemler için genellikle bunları belgelemek için bir sebeptir. Uyarıları yalnızca belirli tipte bir sınıf üyesi için kapatabilirsem, bu yararlı olurdu, ama ben o seviyede kontrol sahibi olduğumu düşünmüyorum. –

cevap

1

kopyalama belgeleri için çeşitli komutlar vardır . Bazen, projenin geri kalanından belge çizmek için standart bir yer olarak derlenmeyen bir belge sınıfı üretiyorum.

+0

İlginç - her bir atama/karşılaştırma operatörünün, kopya yapıcısını, varsayılan kurucuyu, vb. Beyanlarının üstüne tek bir @copydoc satırı ekler misiniz? –

+0

Evet, sınıf şablonumun bir parçası. –

İlgili konular