您是否聽說過自動C代碼生成器?如何自動調用C源代碼中的所有函數
我必須做一種奇怪的API功能研究,其中至少包括每個函數執行的一次嘗試。它可能會導致粉碎,分段錯誤 - 無論如何。我只需要註冊每個函數調用。
,所以我就用
ctags -x --c-kinds=f *.c
我可以使用任何工具來生成代碼調用每個人的來源功能的長列表(幾百個)?非常感謝。
UPD:謝謝你所有的答案。
您是否聽說過自動C代碼生成器?如何自動調用C源代碼中的所有函數
我必須做一種奇怪的API功能研究,其中至少包括每個函數執行的一次嘗試。它可能會導致粉碎,分段錯誤 - 無論如何。我只需要註冊每個函數調用。
,所以我就用
ctags -x --c-kinds=f *.c
我可以使用任何工具來生成代碼調用每個人的來源功能的長列表(幾百個)?非常感謝。
UPD:謝謝你所有的答案。
您也可以考慮自定義GCC編譯器,例如與MELT擴展名(例如,將在一些定製編譯期間生成測試)。然後,您甚至可以定義自己的#pragma
或__attribute__
以對這些函數進行參數化(啓用它們的自動測試,爲測試等提供默認參數)。
但是,我不確定這是單元測試的正確方法。有很多單元測試框架(但我對它們不是很熟悉)。
也許類似autoconf可以幫助你:as described here。特別檢查AC_CHECK_FUNCS。 Autoconf創建小程序來測試註冊函數的存在。
謝謝你,好主意,但你確定Autoconf真的試圖調用函數,不僅檢查小程序是否剛建好? –
這些函數不會有一些參數,你將如何生成它們?看起來你想要自動化測試,但是試圖在沒有真正創建測試的情況下進行測試。 –
也許你可以編寫一些'awk'或Python腳本傳送到'ctags'輸出? –