我正在做一个项目,在那里我想开发一些静态源代码分析工具。源代码将使用多个相互交互的专有语言。因此,我正在寻找一个项目,它定义了一个抽象的Model/AST,可以为语言做一些数据流分析,在这些语言中,我可以将每种专有语言转换成模型,并能够分析数据流/树。
这样的项目存在吗?
发布于 2016-02-13 10:48:07
不是开源的,而是设计和证明了用于构建工具来处理多个复杂的语言:我们的DMS软件重组工具包。
DMS包含强大的解析机制(能够处理困难的语言,如C++),它仅从语法描述中自动构建AST,以及支持构造符号表的库,以及各种控制和数据流分析。
OP将必须提供他的专有语言的语法和语义描述,但我认为他正在期待这一点。如果他想对跨语言的流进行建模,他将不得不组织他的流分析,以使各个语言兼容。DMS使用统一的基础结构/数据结构来支持所有这些活动,即使在不同的语言中也是如此,这将使这更容易。
他不应该期望一个涉及多种语言的项目是容易的或快速的,不管他发现什么框架。我们与DMS的目的是使这一做法切实可行。
发布于 2016-02-11 19:43:05
我认为对象管理组(OMG)对知识发现元模型(KDM)的规范是在您正在寻找的空间中的。(见http://www.omg.org/spec/KDM/)。它是OMG架构驱动现代化(ADM)活动的一部分。KDM已被国际标准化组织重新发布为ISO/IEC 19506:2012(E)。
在导言中:
本国际标准定义了用于表示现有软件资产、它们的关联和操作环境的元模型,称为知识发现元模型(KDM)。
您可能需要自己完成大部分繁重的工作,但至少已经提供了元模型。
发布于 2016-02-16 13:12:41
更重要的是,如果您对语法细节不太感兴趣,并且可以自由选择平台,那么您最好分析VM的代码,比如.Net字节码。C#和F#的编译器还有C++(/CLI)和Visual (当然其中大多数来自知名的大型软件公司:-),它们都编译成字节码程序,例如,可以通过Mono.Cecil之类的工具来检查这些程序,这些工具允许构造控制流图等。
https://stackoverflow.com/questions/35348418
复制相似问题