在论文[静态分析的软件产品线(2014)]中,有一个插图相关的构造调用图(清单7)。
在此示例中,Line14与构造调用图相关。当我检查src代码和API时,我能找到的是DefaultCHACallGraphDomain.scala,它没有构造调用图的实现。
因为我的目的是使用OPAL构建调用图。是否有任何演示或文档可以帮助我理解OPAL中现有的CallGraphDomain?目前,我只能找到一些班级声明。
如果有人能给我一些与此主题相关的建议,我将非常感激。
提前致谢。
江
答案 0 :(得分:0)
纸张中显示的界面不再存在,所以你完全可以忘掉它。
获取CallGraph
类的默认接口由您在加载Java项目的字节码时检索的Project
对象提供。
一般代码示例:
val project = ... // a java project
val computedCallGraph = project.get(/* Some call graph key */)
val callGraph = computedCallGraph.callGraph // the final call graph interface.
计算出的调用图包含几个内容。它包含入口点,未解析的方法调用,构造时出错的异常以及实际的调用图。
OPAL为您提供了几种调用图算法,您可以通过将相应的调用图键传递给Project
的{{1}}方法来检索每种算法。
目前,以下两个密钥可用,可以传递给get
(更多信息可在此类文档中找到):
Project.get
CHACallGraphKey
要为软件项目构建有效的调用图,它取决于要选择的分析模式的项目类型。虽然应用程序提供完整的信息(不完整的项目,类加载等),但软件库旨在供其他项目使用。但是,在构建调用图时,必须牢记这两种不同的场景。更多细节可以在这里找到:VTACallGraphKey
OPAL提供以下分析模式:
分析模式可以在OPAL的配置文件中配置,也可以在运行时设置为项目设置。您可以在org.opalj.AnalysisModes
下的Common
项目中找到配置文件。
/src/main/resources/reference.conf
支持所有这些分析模式,而CHACallGraphKey
目前仅支持应用程序。
注意:接口可能会在即将发布的版本中再次更改。