测试处理函数的 return 值
Test handling of return value of a function
我目前正在尝试与多个开发人员一起提高 C++ 项目(在 Linux 下)的质量。我们项目的几乎所有功能都执行 return 特定的 ErrorCode。我想强制处理(避免忘记)函数中的错误代码 return,因此我正在寻找一个开源工具/bash 脚本,它可以解析我的代码并识别函数是否存在在没有分配的情况下使用,如果是则发出警告。
例如
setMyVar(uint32_t bla); // Naughty
而不是
ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that
还必须是该过程适用于命名空间的使用,例如
ErrorCode currentError = PM::initialize();
最好是
if( PM::initialize() == PM::Init_Error)
也被认为是正确的用法。有什么建议可以解决此类问题而无需实施复杂的代码解析器吗?
编辑:我还想避免修改我的源代码,或者我希望有一个只读脚本来识别问题。
GCC 和 Clang 支持对未使用的 return 值发出警告。
static __attribute__((warn_unused_result)) int test() { /* code goes here */ }
当 return 值未被考虑在内时,任何调用现在都会产生警告。
test(); // WARNING: Ignoring return value of function declared with warn_unused_result attribute
我目前正在尝试与多个开发人员一起提高 C++ 项目(在 Linux 下)的质量。我们项目的几乎所有功能都执行 return 特定的 ErrorCode。我想强制处理(避免忘记)函数中的错误代码 return,因此我正在寻找一个开源工具/bash 脚本,它可以解析我的代码并识别函数是否存在在没有分配的情况下使用,如果是则发出警告。 例如
setMyVar(uint32_t bla); // Naughty
而不是
ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that
还必须是该过程适用于命名空间的使用,例如
ErrorCode currentError = PM::initialize();
最好是
if( PM::initialize() == PM::Init_Error)
也被认为是正确的用法。有什么建议可以解决此类问题而无需实施复杂的代码解析器吗?
编辑:我还想避免修改我的源代码,或者我希望有一个只读脚本来识别问题。
GCC 和 Clang 支持对未使用的 return 值发出警告。
static __attribute__((warn_unused_result)) int test() { /* code goes here */ }
当 return 值未被考虑在内时,任何调用现在都会产生警告。
test(); // WARNING: Ignoring return value of function declared with warn_unused_result attribute