如何在特定代码路径上触发静态分析器警告?

时间:2018-12-19 21:56:09

标签: static-analysis clang-static-analyzer

我正在寻找一种在特定的代码路径上触发静态分析器警告的方法,该警告通常不会发生或指示未处理的错误情况。

例如,我想写这样的东西:

int err = some_internal_call(arg1, arg2);
if (err == errInternalError) {
    analyzer_assert(); 
}

然后,当我运行分析器并分析所有不同的代码路径时,会警告我已经调用了analyzer_assert()。

专门研究clang分析器,但我也很好奇其他分析器是否具有此功能。

看起来我可以通过编写自定义检查器将此功能添加到clang中,但我宁可不必自己做。

1 个答案:

答案 0 :(得分:0)

许多分析仪都有诊断功能,警告条件始终为假或真。要找到这种情况,您可以使用许多不同的工具。但是显然您需要另一件事。您想查找始终为真/错误的条件,因此总是/从不调用具有特定名称的函数,不是吗?

如果是,很可能没有现成的解决方案。您需要使用Clang自己实现此类功能,或者可以与可以为您提供此类自定义服务的人员联系。例如,我们的团队在PVS-Studio分析仪中实施类似的客户特定规则。此类诊断包含在单独的组中,默认情况下处于禁用状态。但是,您始终可以启用并开始使用此类诊断程序。