C++ C+中的异常传播分析+;
我们的准则有特定的指导原则,以确定哪些例外情况是正确的C++ C+中的异常传播分析+;,c++,exception,static-analysis,C++,Exception,Static Analysis,我们的准则有特定的指导原则,以确定哪些例外情况是正确的 ad-hoc——函数边界——用于处理单个函数中的罕见错误情况,其中其他流量控制方法不可行 内部——库边界——用于在库中的多个组件之间传递错误情况 external--mainboundary--用于跨库边界向外部代码传达错误情况 为了确保编写的库/外部代码符合要求,我通过以下方式对异常传播进行了半自动分析: 使用grep筛选感兴趣的抛出语句 为每个函数创建一个潜在的调用树(使用Eclipse/CDT),该函数不会立即处理上面标识的抛出异
——函数边界——用于处理单个函数中的罕见错误情况,其中其他流量控制方法不可行ad-hoc
——库边界——用于在库中的多个组件之间传递错误情况内部
--external
boundary--用于跨库边界向外部代码传达错误情况main
grep
筛选感兴趣的抛出语句
但您对异常的捕获点感兴趣。根据我的经验,静态分析器只会让您知道未捕获的异常。我认为无论您看什么,它都是定制的。我不知道商业工具是否是一种选择,但我相信可能适合 但这需要使用他们称之为KAST的东西。用于以XPath类型格式创建自定义规则的工具。非常容易创建和强大
然而,尽管如此,仅仅为了这个目的而使用Klocwork还是有点过头了。值得一看。我在问这个问题之前已经看过了,但是没有用。原则上,如果静态分析可以告诉我哪个异常可能会从每个函数中传播出去——这个问题会问什么——我可以过滤这些信息来回答我的问题,但即使回答得不令人满意。我觉得仅仅从描述上看,这也太过分了。从你的说法来看,听起来我得在卡斯特把我的手弄脏,看看这对我是否有帮助。。。我的意思是感谢您提供了指向Klocwork的指针,但没有回答:)KAST使用XPath。你的权利,如果你对XPath不太了解,那就不用麻烦了。