2011-01-11 88 views

回答

4

我建議您查看現有編譯器並使用它們的解析能力。例如clang/LLVM已經實現了某種形式的靜態代碼分析。或者你可以使用GNU Compilers/g ++的內置解析器。 IIRC,新的Visual Studio 2010 SDK也允許您直接點擊在線編譯器(也用於新的intellisense)。

+0

+1,如果只是因爲clang被構建爲多個庫,並且因此如果您希望構建自己的代碼覆蓋率工具,那麼您可以讓庫完全代表代碼(AST)並自行利用它。 – 2011-01-11 13:51:59

0

請參閱我的論文Branch Coverage Branch Coverage for Arbitrary Languages Made Easy,其中介紹瞭如何使用程序轉換系統構建測試覆蓋率工具,解析源文本,構建AST並應用重寫規則插入測試覆蓋率探針,並對修改的源代碼進行漂亮的打印以編譯/執行/測試探針數據收集。

儘管該技術適用於任何可以解析和相容C++的系統,但作爲一般規則,這些很難找到,因爲解析C++很困難。本文特別關注我們的our DMS Software Reengineering Toolkit,它有完整的C++ Front End,併爲此我們構建了C++ Test Coverage tool