首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >开源静态代码分析模型

开源静态代码分析模型
EN

Stack Overflow用户
提问于 2016-02-11 19:31:49
回答 3查看 149关注 0票数 3

我正在做一个项目,在那里我想开发一些静态源代码分析工具。源代码将使用多个相互交互的专有语言。因此,我正在寻找一个项目,它定义了一个抽象的Model/AST,可以为语言做一些数据流分析,在这些语言中,我可以将每种专有语言转换成模型,并能够分析数据流/树。

这样的项目存在吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-13 10:48:07

不是开源的,而是设计和证明了用于构建工具来处理多个复杂的语言:我们的DMS软件重组工具包

DMS包含强大的解析机制(能够处理困难的语言,如C++),它仅从语法描述中自动构建AST,以及支持构造符号表的库,以及各种控制和数据流分析。

OP将必须提供他的专有语言的语法和语义描述,但我认为他正在期待这一点。如果他想对跨语言的流进行建模,他将不得不组织他的流分析,以使各个语言兼容。DMS使用统一的基础结构/数据结构来支持所有这些活动,即使在不同的语言中也是如此,这将使这更容易。

他不应该期望一个涉及多种语言的项目是容易的或快速的,不管他发现什么框架。我们与DMS的目的是使这一做法切实可行。

票数 2
EN

Stack Overflow用户

发布于 2016-02-11 19:43:05

我认为对象管理组(OMG)对知识发现元模型(KDM)的规范是在您正在寻找的空间中的。(见http://www.omg.org/spec/KDM/)。它是OMG架构驱动现代化(ADM)活动的一部分。KDM已被国际标准化组织重新发布为ISO/IEC 19506:2012(E)。

在导言中:

本国际标准定义了用于表示现有软件资产、它们的关联和操作环境的元模型,称为知识发现元模型(KDM)。

您可能需要自己完成大部分繁重的工作,但至少已经提供了元模型。

票数 0
EN

Stack Overflow用户

发布于 2016-02-16 13:12:41

更重要的是,如果您对语法细节不太感兴趣,并且可以自由选择平台,那么您最好分析VM的代码,比如.Net字节码。C#和F#的编译器还有C++(/CLI)和Visual (当然其中大多数来自知名的大型软件公司:-),它们都编译成字节码程序,例如,可以通过Mono.Cecil之类的工具来检查这些程序,这些工具允许构造控制流图等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35348418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档