Vera ++规则实施

时间:2012-11-21 08:13:18

标签: c++ static-analysis clang-static-analyzer vera++

如果有人了解Vera ++或静态分析仪,请通过。

如何将复杂的C ++规则验证机器作为静态分析器实现?我想在基类中实现复杂的规则,比如虚函数,类,结构等用户定义的变量。变量范围如全局,局部,静态等。我非常了解Vera ++,根据我的理解,它只做令牌解析,语言的上下文需要通过脚本来实现(如果语言类似于C ++,实现的上下文可能会过于复杂);因为区分a * b; (可以是类类型a的指针b)或a * b;(可能只是变量中两个之间的乘法);

我甚至认为复杂规则的实现可能需要像State Machines这样的编译器,以便脚本可以理解语言的上下文。

我的问题只是问:

  1. 我的理解在静态分析器规则实施方面是否正确。

  2. 你能指导一下我如何才能完成这项任务。

  3. 这些任务可以通过tcl。的REGEXP简化。

  4. 您是否有任何具体的设计方法可以为Solid C ++代码分析器的良好实施提出建议。

1 个答案:

答案 0 :(得分:3)

我建议改用完整的c ++解析器。

Clang是一套完全理解C ++的库,因为您可以用于分析的库是编译器使用的库(谈论狗食)。您可以访问多个“层”:抽象语法树,控制流图。并且已经有一个静态分析器框架,您可以为其实现传递。

最后,也许是最有趣的事情,你可以从C ++ OR C进行交互,甚至在C接口之上甚至还有Python绑定(尽管特别不完整)。

老实说,考虑到C ++语法的神圣复杂性,现在需要一个受虐狂来使用真正的语义解析器。

其他解析器(由Ira Baxter提供)包括:

  • Elsa(开源)
  • DMS(商业)
  • EDG(商业,C ++前端用于实现编译器)