2015-08-20 34 views
2

我目前正在嘗試改進具有多個開發人員的C++項目(在Linux下)的質量。幾乎我們項目的所有功能都會返回某個ErrorCode。我想強制執行處理(避免遺忘)從函數返回的錯誤代碼,因此我正在尋找一個開源工具/ bash腳本,它解析我的代碼並確定函數是否在沒有賦值的情況下使用併發出警告如果是這樣。 對於exanmple函數返回值的測試處理

setMyVar(uint32_t bla); // Naughty 

,而不是

ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that 

A必須也將這一程序適用於命名空間的使用,如

ErrorCode currentError = PM::initialize(); 

,理想之類的東西

if(PM::initialize() == PM::Init_Error) 

也被認爲是正確的用法。任何建議如何解決這種問題而無需實施複雜的代碼分析器?

編輯:我也想避免修改我的源代碼或分別我想有一個只讀的腳本,確定問題。

+0

您想驗證*您的*代碼是否注意到錯誤信號,是嗎? – Beta

+0

@ Beta我想確保我和我的開發人員處理我們定義的函數返回的錯誤代碼。理想情況下,我想運行一個輸出某個腳本的腳本。如:「錯誤:函數bla()的返回值沒有處理」 –

+0

您是否考慮過使用異常而不是返回值? – Beta

回答

5

GCC和Clang支持未使用的返回值的警告。

static __attribute__((warn_unused_result)) int test() { /* code goes here */ } 

當沒有考慮到返回值時,任何調用現在都會處於警告狀態。

test(); // WARNING: Ignoring return value of function declared with warn_unused_result attribute 
+0

謝謝!不幸的是,我應該補充說,我確實希望避免修改實際的代碼,特別是不要使用任何形式的自動化腳本。 –

+0

如果不修改代碼,你可以試試PVS Studio。警告V530看起來很有希望。 http://www.viva64.com/en/d/0119/ – HelloWorld

+0

PVS-Studio只能在Windows下運行,因此不相關。他們建議在Linux平臺上使用cppcheck,但是cppcheck甚至無法處理命名空間 –