Opal-revarding实现opal中的构造呼叫图



在纸上[用于静态分析的软件产品线(2014)],有一个相关的插图构造呼叫图(listing7)。

在此示例中,Line14与构造呼叫图有关。当我检查SRC代码和API时,我可以找到的是DefaultchacallGraphDomain.scala,它没有实现构造呼叫图。

我的目的是使用蛋白石来构建呼叫图。是否有任何演示或文档有助于我了解蛋白石中现有的呼叫图?目前,我只能找到一些类声明。

如果有人可以给我一些有关此主题的建议,我将非常感谢。

预先感谢。

本文中显示的接口不再存在,因此您完全可以忘记它。

加载字节码Java项目时,您检索到的Project对象提供了CallGraph类的默认接口。

一般代码示例:

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

计算的呼叫图包含几件事。它包含入口点,未解决的方法调用,当施工时间出现问题和实际调用图时的例外。

opal为您提供多种调用图算法,您可以通过将相应的调用图键传递到Projectget方法来检索每个算法。

当前,可以使用以下两个键,可以将其传递给Project.get(此类文档中提供更多信息):

  • CHACallGraphKey
  • VTACallGraphKey

分析模式 - 库与应用程序

要为软件项目构建有效的呼叫图,取决于选择的分析模式。尽管应用程序提供完整的信息(除了不完整的项目,集体加载等),但软件库旨在由其他项目使用。但是,当施工呼叫图表时,必须牢记这两种不同的情况。可以在此处找到更多详细信息:org.opalj.AnalysisModes

OPAL提供以下分析模式:

  • desktopapplication(安全申请通话图)
  • LibraryWithClosePackagesAssumpation(可用于安全不敏感分析的呼叫图)
  • LibraryWithopenPackagesAssumpose(非常保守/安全分析)

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

所有这些分析模式均由CHACallGraphKey支持,而VTACallGraphKey仅支持应用程序。

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

最新更新