带互斥锁的Cppcheck锁定/解锁

时间:2018-08-08 07:24:55

标签: mutex cppcheck

Cppcheck是否可以检查互斥锁的锁定/解锁功能?

一个示例(有错误):

void foo() {
    mutex_lock();
    if (condition) { // condition is true
        return;
    }
    mutex_unlock();
}

Cppcheck是否可以检测到此类问题(互斥锁保持锁定状态)?

2 个答案:

答案 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。

这是一种经验诊断,试图根据函数名称确定代码的工作方式。