2015-01-10 31 views
5

Kodumda, işlevlerimin düzgün çalıştığından ve veri yapıları için bazı değişmez testler yaptığından emin olmak için bazı assert çağrıları var.Doxygen oluşturulmuş referans grafiklerdeki 'assert'leri göz ardı etmek mümkün mü?

Bazen assert argümanında işlevler kullanır ve bu işlevler o işlevin Doxygens call grafiğindedir. Bazı büyük invarianttests için bu gerçekten grafiğini polize eder…

Aşağıdaki snippet'teki list_isSorted callgraph'da nasıl meydana gelebilir?

int list_isElem (List l, Element e) { 
    assert(list_isSorted(l)); 
    { 
    if (list_isEmpty(l)) { return 0; } 
    switch (compare(e, list_getValue(l))) { 
    case -1: return 0; 
    case 0: return 1; 
    case 1: return list_isElem (list_getTail(l), e); 
    default: exit(ERR_UNKNOWN); 
    } 
    } 
} 

Zaten Doxyfile içinde PREDEFINED = NDEBUG ayarlamak çalıştı, ancak bu işe yaramadı.

cevap

1

sadece savcıyı atla?

http://www.stack.nl/~dimitri/doxygen/manual/faq.html

bir makro ile otomatik hale "yeni ve kolay yolu \ endcond ile başlangıç ​​ve bir açıklama bloğu bir \ koşul komutuyla bir yorum bloğu eklemektir" bakın:

#define DAssert(x) /** \cond */ assert(x) /** \endcond */ 
+1

Bu, çok fazla manüel çalışma olmadan çalışmayı tercih ederim. Doxygen'in bu somonu otomatik olarak halledebileceğini veya en azından birinin zaten mevcut bir filtreye yönlendirebileceğini umuyorum. – NobbZ

+1

'assert()' çağrısını '\ cond' ve' \ endcond' komutlarıyla saran bir makro tanımlayın. –

+0

@NobbZ, –

İlgili konular