OPAL-Относительно реализации граф вызовов конструкции в OPAL
В статье [Линия программного продукта для статического анализа (2014)] приведена графическая схема построения вызовов, связанная с иллюстрацией (листинг 7).
В этом примере Line14 относится к построению графа вызовов. в то время как я проверяю код src и API, я могу найти DefaultCHACallGraphDomain.scala, у которого нет реализации графа вызовов конструкции.
Моя цель - использовать OPAL для построения графа вызовов. Существуют ли какие-либо демонстрационные материалы или документы, помогающие мне понять существующий CallGraphDomain в OPAL? В настоящее время я могу найти только объявление класса.
Я буду очень признателен, если кто-нибудь может дать мне несколько советов, связанных с этой темой.
Заранее спасибо.
Jiang
1 ответ
Интерфейс, который был показан в статье, больше не существует, так что вы можете полностью забыть об этом.
Интерфейс по умолчанию, чтобы получить 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
"s get
метод.
В настоящее время доступны следующие два ключа, которые можно передать Project.get
(дополнительная информация доступна в документации этих классов):
CHACallGraphKey
VTACallGraphKey
Режим анализа - библиотека против приложения
Чтобы построить правильный график вызовов для программного проекта, это зависит от вида проекта, какой режим анализа выбрать. В то время как приложения предоставляют полную информацию (кроме незавершенных проектов, загрузки классов и т. Д.), Библиотеки программного обеспечения предназначены для использования другими проектами. Тем не менее, эти два разных сценария должны быть приняты во внимание при построении графов вызовов. Более подробную информацию можно найти здесь: org.opalj.AnalysisModes
OPAL предлагает следующие режимы анализа:
- DesktopApplication (безопасно для графиков вызовов приложений)
- LibraryWithClosePackagesAssump (безопасно для графов вызовов, которые используются для анализа без учета безопасности)
- LibraryWithOpenPackagesAssump (очень консервативный / безопасный для анализа безопасности)
Режим анализа можно настроить в конфигурационном файле OPAL или установить в качестве параметра проекта во время выполнения. Вы можете найти файл конфигурации в Common
проект под /src/main/resources/reference.conf
,
Все эти режимы анализа поддерживаются CHACallGraphKey
в то время как VTACallGraphKey
пока поддерживает только приложения.
ПРИМЕЧАНИЕ. Интерфейс может снова измениться в следующих версиях.