C ++中的异常传播分析

时间:2013-05-23 20:19:21

标签: c++ exception static-analysis

我们的代码有关于哪些例外

的某些指导原则
  • ad-hoc - 功能边界 - 用于处理单个函数中的罕见错误情况,其他流控制方法不切实际,
  • internal - 库边界 - 用于在库中的多个组件之间传达错误情况,
  • external - main boundary - 用于跨库边界传递错误情况,外部代码。

为了确保编写的库/外部代码符合,我已经通过以下方式对异常传播进行了半自动分析:

  1. 使用throw
  2. 过滤有趣的grep语句
  3. 为每个不立即处理上述抛出异常的函数创建一个潜在的调用树(使用Eclipse / CDT)
  4. 手动分析调用树并检查最终是否最终在相关边界处理给定的异常
  5. 我的问题是,是否有静态分析仪可以做到这一点?

2 个答案:

答案 0 :(得分:1)

我认为不管你看什么都是定制的。不知道商业工具是否是一种选择,但我相信Klocwork可能适合。

但这会涉及使用他们称之为KAST的东西。用于以XPath类型格式创建自定义规则的工具。很容易创造和强大。

然而,有人说,为此使用Klocwork是过分的。值得一看。

答案 1 :(得分:0)

这似乎很重要 Exception analysis tool for C++

但是你对异常的接收点很感兴趣。根据我的经验,静态分析器只会让您了解未捕获的异常。