选择AST来开发Elixir的静态代码分析器?核心Erlang还是扩展Elixir AST?

问题描述 投票:3回答:1

我们希望开发一个 static code analyser 以检测并发问题(主要是死锁和竞赛条件)。我们对分析器的结构有一些基本的想法,但我们的问题是哪种AST更适合这个任务。据我们了解,Elixir编译过程中会创建一个扩展的Elixir AST,抽象的Erlang格式和Core Erlang。

我的问题是,在这些AST中,到底是扩展Elixir AST还是Core Erlang更适合创建调用图和控制流图。如果我们使用Core Erlang,是否有可能从Core Erlang向后工作,在Elixir代码中找到分析器发现的问题的源头?

如果有人有这方面的想法,我们将非常感谢您的帮助。)

erlang elixir abstract-syntax-tree static-code-analysis coreerlang
1个回答
1
投票

如果目的是教育,我可能会选择erlang。将erlang编译成beam可能会更直接一些(如果不是很多的话),随着你开发工具,你可能会发现更多关于erlang AST的资源文档。这比大多数人做的都要低级,你会在erlang社区找到更多的答案(可能几年后就不会了)。总的来说,你的工具在erlang中会更简单,活动部件更少。

我还发现了那个项目。https:/github.comrrenecredo)。

更具体地说,我认为你要想回到灵药代码,实际上是很困难的。从你的角度来看,在实现了你的工具之后,这将是有意义的。但对于普通的 elixir 开发者来说,可能就不是这样了。elixir越是成熟,它就越是倾向于偏离核心的erlang概念。它在 erlang 的基础上构建了很多功能,以至于你可以在不懂一点 erlang 的情况下构建整个 web 应用。也许这不是最好的方法,但事实告诉你,这两种语言之间的差距有多大。

© www.soinside.com 2019 - 2024. All rights reserved.