【问题标题】:Cppcheck with mutex locking / unlocking带互斥锁/解锁的 Cppcheck
【发布时间】:2019-01-15 08:57:00
【问题描述】:

Cppcheck 有没有办法检查互斥锁/解锁功能?

一个例子(有错误):

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

有没有办法 Cppcheck 可以检测到这样的问题(互斥锁保持锁定)?

【问题讨论】:

    标签: mutex cppcheck


    【解决方案1】:

    不,目前不支持检查锁定/解锁功能。

    您似乎也在 Cppcheck 论坛中提出了这个问题,那里已经有反馈: https://sourceforge.net/p/cppcheck/discussion/development/thread/a7b82c3e/

    Daniel Marjamäki 的回答中描述了当前可以使用的最佳解决方法: https://sourceforge.net/p/cppcheck/discussion/development/thread/a7b82c3e/#f237 它建议使用 Cppcheck 已经支持的包装函数和分配/释放检查。

    【讨论】:

    • 从 Cppcheck 2.2 开始,有一些与 std::mutex 相关的检查。
    【解决方案2】:

    您可以使用 PVS-Studio 分析器检测此错误。将针对以下代码发出V1020 诊断:V1020 函数退出而未调用“mutex_unlock”函数。检查行:20、18.test.cpp。

    这是一个经验诊断,它试图根据函数名称找出代码的工作方式。

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 2022-07-31
      • 2021-12-23
      • 2010-11-22
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 2015-09-26
      相关资源
      最近更新 更多