函数返回值的测试处理 我现在正在尝试用多个开发人员来提高C++项目(Linux下)的质量。几乎我们项目的所有函数都返回特定的错误代码。我希望强制处理(避免忘记)从函数返回的错误代码,因此我正在寻找一个开源工具/bash脚本,它解析我的代码并识别函数是否在没有赋值的情况下使用,如果是,则发出警告。 例如 setMyVar(uint32_t bla); // Naughty

函数返回值的测试处理 我现在正在尝试用多个开发人员来提高C++项目(Linux下)的质量。几乎我们项目的所有函数都返回特定的错误代码。我希望强制处理(避免忘记)从函数返回的错误代码,因此我正在寻找一个开源工具/bash脚本,它解析我的代码并识别函数是否在没有赋值的情况下使用,如果是,则发出警告。 例如 setMyVar(uint32_t bla); // Naughty,c++,bash,parsing,code-analysis,C++,Bash,Parsing,Code Analysis,而不是 ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that 还必须确保该过程适用于名称空间的使用,例如 ErrorCode currentError = PM::initialize(); 理想的情况是 if( PM::initialize() == PM::Init_Error) 也会被认为是正确的用法。有没有建议如何在不必实现复杂的代码解析器的情况下解

而不是

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支持对未使用的返回值发出警告

static __attribute__((warn_unused_result)) int test() { /* code goes here */ }
当不考虑返回值时,任何调用现在都会导致警告

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

您想验证您的代码是否注意到错误信号,对吗?@Beta我想确保我和我的开发人员处理函数返回的已定义错误代码。理想情况下,我希望运行一个脚本,输出如下内容:“Error:returnvalue of function bla()no treated”您是否考虑过使用异常而不是返回值?谢谢!不幸的是,我应该补充一点,我确实希望避免修改实际代码,特别是不通过任何类型的自动脚本。如果不修改您的代码,您可以尝试PVS Studio。警告V530看起来非常有希望。PVS Studio只能在Windows下运行,因此不相关。他们建议在Linux平台上使用cppcheck,但是cppcheck甚至不能处理NamespacesOkay,建议的方法似乎真的很适合。谢谢