如果有人了解Vera ++或静态分析仪,请通过。
如何将复杂的C ++规则验证机器作为静态分析器实现?我想在基类中实现复杂的规则,比如虚函数,类,结构等用户定义的变量。变量范围如全局,局部,静态等。我非常了解Vera ++,根据我的理解,它只做令牌解析,语言的上下文需要通过脚本来实现(如果语言类似于C ++,实现的上下文可能会过于复杂);因为区分a * b; (可以是类类型a的指针b)或a * b;(可能只是变量中两个之间的乘法);
我甚至认为复杂规则的实现可能需要像State Machines这样的编译器,以便脚本可以理解语言的上下文。
我的问题只是问:
我的理解在静态分析器规则实施方面是否正确。
你能指导一下我如何才能完成这项任务。
这些任务可以通过tcl。的REGEXP简化。
您是否有任何具体的设计方法可以为Solid C ++代码分析器的良好实施提出建议。
答案 0 :(得分:3)
我建议改用完整的c ++解析器。
Clang是一套完全理解C ++的库,因为您可以用于分析的库是编译器使用的库(谈论狗食)。您可以访问多个“层”:抽象语法树,控制流图。并且已经有一个静态分析器框架,您可以为其实现传递。
最后,也许是最有趣的事情,你可以从C ++ OR C进行交互,甚至在C接口之上甚至还有Python绑定(尽管特别不完整)。
老实说,考虑到C ++语法的神圣复杂性,现在需要一个受虐狂来使用真正的语义解析器。
其他解析器(由Ira Baxter提供)包括: