2015-01-10 60 views
5

在我的代碼中有一些assert調用來確保我的函數正常工作,並對數據結構進行一些不變測試。是否可以忽略doxygen生成的參考圖中的斷言?

有時我使用assert參數中的函數,然後這個函數在該函數的Doxygens調用圖中。對於一些更大的不變測試,這真的會污染圖...

如何避免在調用圖中出現以下代碼段中的list_isSorted

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); 
    } 
    } 
} 

我已經嘗試在Doxyfile中設置PREDEFINED = NDEBUG,但那不起作用。

回答

1

只是跳過斷言?

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

「新的和最簡單的方法是用\ COND命令開始和一個註釋塊以\ ENDCOND加一個註釋塊」

與宏自動執行它:

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

我寧願如果這項工作沒有那麼多的手工工作。我希望Doxygen可以自動處理這個問題,或者至少有人可以將我指向一個已經存在的過濾器。 – NobbZ

+1

定義一個用'\ cond'和'\ endcond'命令封裝'assert()'調用的宏。 –

+0

@NobbZ添加了應該工作的宏 –