2015-08-20 201 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甚至无法处理命名空间 –