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