OPAL-Regarding implementing construct call graph in OPAL

In Paper [A Software Product Line for Static Analyses(2014)], there is an illustration related constructing call graph(Listing7).

In this example, Line14 is related to construct call graph. while i check the src code and API, what i could find is DefaultCHACallGraphDomain.scala which has no implementation of construct call graph.

As my purpose is using OPAL to construct call graph. Is there any demo or documents help me understanding existing CallGraphDomain in OPAL? currently, i can only find some class declaration.

I'll be really appreciated if anyone can give me some suggestions related this topic.

Thanks in advance.

Jiang

Answer1:

The interface that was shown in the paper doesn't exist anymore, so you can totally forget about it.

The default interface to get a CallGraph class is provided by the Project object you retrieve when you load the bytecode a Java project.

A general code Example:

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

The computed call graph contains several things. It contains the entry points, unresolved method calls, exceptions when something went wrong at the construction time and the actual call graph.

OPAL provides you several call graph algorithms, you can retrieve each by passing the corresponding call graph key to the Project's get method.

Currently, the following two keys are available and can be passed to Project.get (more information is available in the documentation of this classes):

    <li>CHACallGraphKey</li> <li>VTACallGraphKey</li> </ul>

    Analysis mode - Library vs Application

    To construct a valid call graph for a software project it depends on the project kind which analysis mode to chose. While applications provide complete information (except incomplete projects, class loading and so on), software libraries are intended to be used by other projects. However, those two different scenarios have to be kept in mind, when construction call graphs. More details can be found here: org.opalj.AnalysisModes

    OPAL offers the following analysis modes:

      <li>DesktopApplication (safe for application call graphs)</li> <li>LibraryWithClosePackagesAssumption (safe for call graphs that are used for security-insensitive analyses)</li> <li>LibraryWithOpenPackagesAssumption (very conservative/safe for security analyses)</li> </ul>

      The analysis mode can be either configured in OPAL's config file or set as project setting at runtime. You can find the config file in the Common project under /src/main/resources/reference.conf.

      All of those analysis modes are supported by the the CHACallGraphKey while VTACallGraphKey only supports applications so far.

      <strong>NOTE:</strong> The interface may change in upcoming versions again.

      人吐槽 人点赞

Recommend

Comment

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:OPAL-Regarding implementing construct call graph in OPAL