论文中显示的界面不再存在,因此您可以完全忘记它。
获取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
.
所有这些分析模式都由CHACallGraphKey
whileVTACallGraphKey
支持,目前只支持应用程序。
注意:该界面可能会在即将发布的版本中再次更改。