Cppcheck是否可以检查互斥锁的锁定/解锁功能?
一个示例(有错误):
void foo() {
mutex_lock();
if (condition) { // condition is true
return;
}
mutex_unlock();
}
Cppcheck是否可以检测到此类问题(互斥锁保持锁定状态)?
答案 0 :(得分:0)
否,当前不支持检查锁定/解锁功能。
似乎您也在Cppcheck论坛中提出了已经存在反馈的问题: https://sourceforge.net/p/cppcheck/discussion/development/thread/a7b82c3e/
DanielMarjamäki的答案描述了当前可以使用的最佳解决方法: https://sourceforge.net/p/cppcheck/discussion/development/thread/a7b82c3e/#f237 建议使用包装函数和Cppcheck已支持的分配/取消分配检查。
答案 1 :(得分:0)
您可以使用PVS-Studio分析仪检测到此错误。将为此代码发出V1020诊断:V1020该函数退出而未调用'mutex_unlock'函数。检查行:20、18。test.cpp。
这是一种经验诊断,试图根据函数名称确定代码的工作方式。