0

在论文 [A Software Product Line for Static Analyses(2014)] 中,有一个与构建调用图相关的插图(清单 7)。

在此示例中,第 14 行与构造调用图有关。当我检查 src 代码和 API 时,我能找到的是 DefaultCHACallGraphDomain.scala,它没有实现构造调用图。

因为我的目的是使用 OPAL 来构建调用图。是否有任何演示或文档可以帮助我理解 OPAL 中现有的 CallGraphDomain?目前,我只能找到一些类声明。

如果有人能给我一些与此主题相关的建议,我将不胜感激。

提前致谢。

4

1 回答 1

0

论文中显示的界面不再存在,因此您可以完全忘记它。

获取CallGraph类的默认接口由Project您在将字节码加载到 Java 项目时检索的对象提供。

通用代码示例:

val project = ... // a java project
val computedCallGraph = project.get(/* Some call graph key */)
val callGraph = computedCallGraph.callGraph // the final call graph interface.

计算出的调用图包含几件事。它包含入口点、未解决的方法调用、构建时出现问题时的异常以及实际的调用图。

OPAL 为您提供了几种调用图算法,您可以通过将相应的调用图键传递给Project'get方法来检索每种算法。

目前,以下两个键可用并且可以传递给Project.get(更多信息可在此类的文档中获得):

  • CHACallGraphKey
  • VTACallGraphKey

分析模式 - 库与应用程序

要为软件项目构建有效的调用图,取决于项目类型选择哪种分析模式。虽然应用程序提供完整的信息(不完整的项目、类加载等除外),但软件库旨在供其他项目使用。但是,在构建调用图时,必须牢记这两种不同的场景。更多详情可在这找到:org.opalj.AnalysisModes

OPAL 提供以下分析模式:

  • DesktopApplication(对应用程序调用图安全)
  • LibraryWithClosePackagesAssumption(对于用于安全不敏感分析的调用图是安全的)
  • LibraryWithOpenPackagesAssumption(安全分析非常保守/安全)

分析模式可以在 OPAL 的配置文件中配置,也可以在运行时设置为项目设置。您可以在Common项目中的/src/main/resources/reference.conf.

所有这些分析模式都由CHACallGraphKeywhileVTACallGraphKey支持,目前只支持应用程序。

注意:该界面可能会在即将发布的版本中再次更改。

于 2016-12-12T14:10:27.043 回答