首页 > 解决方案 > 如果函数被指针调用,则 CallEvent::isCalled() 替代

问题描述

我正在尝试编写一个检查器来捕获潜在的句柄泄漏(它在 Windows 上:即句柄应该由 关闭CloseHandle)。

所以checkPreCall()检查是否CloseHandle被调用。

Call.isCalled()效果很好,除了一种情况下CloseHandle被指针调用。这是因为使用了一个模板类,该类将关闭函数的指针作为模板参数(用于通过适当的函数关闭不同类型的句柄:FindCloseCloseHandle)。

Call.dump()在这种情况下打印“&CloseHandle(this->m_h)”,因此 clang 正确理解 this 是一个指针并且 this 是CloseHandle. 但是如何在代码中“提取”指针调用的函数的标识符?

标签: clangclang-static-analyzer

解决方案


推荐阅读