测试函数返回值的处理

Flo*_*yan 2 c++ bash parsing code-analysis

我目前正在努力提高多个开发人员的C++项目(在Linux下)的质量.我们项目的几乎所有功能都返回一定的ErrorCode.我想强制执行从函数返回的错误代码的处理(避免忘记),因此我正在寻找一个开源工具/ bash脚本,它解析我的代码并确定是否在没有赋值的情况下使用函数并发出警告如果是这样.例如

setMyVar(uint32_t bla); // Naughty
Run Code Online (Sandbox Code Playgroud)

代替

ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that
Run Code Online (Sandbox Code Playgroud)

还必须是该过程适用于名称空间的使用,例如

ErrorCode currentError = PM::initialize();
Run Code Online (Sandbox Code Playgroud)

理想情况下

if( PM::initialize() == PM::Init_Error)
Run Code Online (Sandbox Code Playgroud)

也被认为是正确的用法.有什么建议如何解决这类问题,而无需实现复杂的代码解析器?

编辑:我也想避免修改我的源代码或我希望有一个只读脚本来识别问题.

Hel*_*rld 5

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

static __attribute__((warn_unused_result)) int test() { /* code goes here */ }
Run Code Online (Sandbox Code Playgroud)

如果不考虑返回值,任何调用现在都会出现警告.

test(); // WARNING: Ignoring return value of function declared with warn_unused_result attribute
Run Code Online (Sandbox Code Playgroud)