Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的异常传播分析+;_C++_Exception_Static Analysis - Fatal编程技术网

C++ C+中的异常传播分析+;

C++ C+中的异常传播分析+;,c++,exception,static-analysis,C++,Exception,Static Analysis,我们的准则有特定的指导原则,以确定哪些例外情况是正确的 ad-hoc——函数边界——用于处理单个函数中的罕见错误情况,其中其他流量控制方法不可行 内部——库边界——用于在库中的多个组件之间传递错误情况 external--mainboundary--用于跨库边界向外部代码传达错误情况 为了确保编写的库/外部代码符合要求,我通过以下方式对异常传播进行了半自动分析: 使用grep筛选感兴趣的抛出语句 为每个函数创建一个潜在的调用树(使用Eclipse/CDT),该函数不会立即处理上面标识的抛出异

我们的准则有特定的指导原则,以确定哪些例外情况是正确的

  • ad-hoc
    ——函数边界——用于处理单个函数中的罕见错误情况,其中其他流量控制方法不可行
  • 内部
    ——库边界——用于在库中的多个组件之间传递错误情况
  • external
    --
    main
    boundary--用于跨库边界向外部代码传达错误情况
为了确保编写的库/外部代码符合要求,我通过以下方式对异常传播进行了半自动分析:

  • 使用
    grep
    筛选感兴趣的
    抛出
    语句
  • 为每个函数创建一个潜在的调用树(使用Eclipse/CDT),该函数不会立即处理上面标识的抛出异常
  • 手动分析调用树并检查给定异常是否最终在相关边界之前得到处理
  • 我的问题是,有没有一个静态分析器可以做到这一点呢?

    这似乎是相关的


    但您对异常的捕获点感兴趣。根据我的经验,静态分析器只会让您知道未捕获的异常。

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

    但这需要使用他们称之为KAST的东西。用于以XPath类型格式创建自定义规则的工具。非常容易创建和强大


    然而,尽管如此,仅仅为了这个目的而使用Klocwork还是有点过头了。值得一看。

    我在问这个问题之前已经看过了,但是没有用。原则上,如果静态分析可以告诉我哪个异常可能会从每个函数中传播出去——这个问题会问什么——我可以过滤这些信息来回答我的问题,但即使回答得不令人满意。我觉得仅仅从描述上看,这也太过分了。从你的说法来看,听起来我得在卡斯特把我的手弄脏,看看这对我是否有帮助。。。我的意思是感谢您提供了指向Klocwork的指针,但没有回答:)KAST使用XPath。你的权利,如果你对XPath不太了解,那就不用麻烦了。