我目前正在努力提高多个开发人员的C ++项目(在Linux下)的质量。我们项目的几乎所有功能都返回一定的ErrorCode。我想强制执行从函数返回的错误代码的处理(避免忘记),因此我正在寻找一个开源工具/ 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)
也被认为是正确的用法。有什么建议如何解决这类问题,而不必实现复杂的代码解析器?
编辑:我也想避免修改我的源代码,或者我想要一个只读脚本来识别问题。
答案 0 :(得分: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