OPAL-关于在 OPAL 中实现构造调用图
OPAL-Regarding implementing construct call graph in OPAL
在论文[A Software Product Line for Static Analyses(2014)]中,有一个与构造调用图(Listing7)相关的插图。
在这个例子中,Line14与构造调用图有关。当我检查 src 代码和 API 时,我能找到的是 DefaultCHACallGraphDomain.scala,它没有实现构造调用图。
因为我的目的是使用 OPAL 来构建调用图。是否有任何演示或文档可以帮助我了解 OPAL 中现有的 CallGraphDomain?目前,我只能找到一些 class 声明。
如果有人能给我一些与此主题相关的建议,我将不胜感激。
提前致谢。
姜
论文中显示的界面已不存在,因此您可以完全忘记它。
获取 CallGraph
class 的默认接口由您在将字节码加载到 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
的 get
方法来检索每个算法。
目前,以下两个密钥可用并可以传递给 Project.get
(更多信息可在 classes 的文档中找到):
CHACallGraphKey
VTACallGraphKey
分析模式 - 库与应用程序
要为软件项目构建有效的调用图,取决于选择哪种分析模式的项目类型。虽然应用程序提供了完整的信息(不完整的项目、class 加载等除外),但软件库旨在供其他项目使用。但是,在构建调用图时,必须牢记这两种不同的场景。可以在此处找到更多详细信息:org.opalj.AnalysisModes
OPAL 提供以下分析模式:
- DesktopApplication(应用程序调用图安全)
- LibraryWithClosePackagesAssumption(对于用于安全不敏感分析的调用图是安全的)
- LibraryWithOpenPackagesAssumption(非常conservative/safe 用于安全分析)
分析模式可以在 OPAL 的配置文件中配置,也可以在运行时设置为项目设置。您可以在 /src/main/resources/reference.conf
下的 Common
项目中找到配置文件。
CHACallGraphKey
支持所有这些分析模式,而 VTACallGraphKey
目前仅支持应用程序。
注意:界面可能会在即将发布的版本中再次更改。
在论文[A Software Product Line for Static Analyses(2014)]中,有一个与构造调用图(Listing7)相关的插图。
在这个例子中,Line14与构造调用图有关。当我检查 src 代码和 API 时,我能找到的是 DefaultCHACallGraphDomain.scala,它没有实现构造调用图。
因为我的目的是使用 OPAL 来构建调用图。是否有任何演示或文档可以帮助我了解 OPAL 中现有的 CallGraphDomain?目前,我只能找到一些 class 声明。
如果有人能给我一些与此主题相关的建议,我将不胜感激。
提前致谢。
姜
论文中显示的界面已不存在,因此您可以完全忘记它。
获取 CallGraph
class 的默认接口由您在将字节码加载到 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
的 get
方法来检索每个算法。
目前,以下两个密钥可用并可以传递给 Project.get
(更多信息可在 classes 的文档中找到):
CHACallGraphKey
VTACallGraphKey
分析模式 - 库与应用程序
要为软件项目构建有效的调用图,取决于选择哪种分析模式的项目类型。虽然应用程序提供了完整的信息(不完整的项目、class 加载等除外),但软件库旨在供其他项目使用。但是,在构建调用图时,必须牢记这两种不同的场景。可以在此处找到更多详细信息:org.opalj.AnalysisModes
OPAL 提供以下分析模式:
- DesktopApplication(应用程序调用图安全)
- LibraryWithClosePackagesAssumption(对于用于安全不敏感分析的调用图是安全的)
- LibraryWithOpenPackagesAssumption(非常conservative/safe 用于安全分析)
分析模式可以在 OPAL 的配置文件中配置,也可以在运行时设置为项目设置。您可以在 /src/main/resources/reference.conf
下的 Common
项目中找到配置文件。
CHACallGraphKey
支持所有这些分析模式,而 VTACallGraphKey
目前仅支持应用程序。
注意:界面可能会在即将发布的版本中再次更改。