Существуют ли библиотеки Java-анализа с открытым исходным кодом для зависимости от данных / контроля? - PullRequest
5 голосов
/ 15 февраля 2012

Я ищу библиотеку / API, которая имеет некоторые готовые данные и анализ зависимостей для программ Java.Это будет статический анализ на графике потока управления (CFG) данной программы для вычисления зависимостей данных и зависимостей управления.Я хотел бы избежать повторной реализации этих методов / алгоритмов, если они уже были сделаны.Был бы полезен межпроцедурный анализ, но я мог бы поработать с библиотекой, которая также выполняет внутрипроцедурный анализ.

Буду признателен за любые предложения.

Редактировать: Одна вещь, которую я нашел, это jChord , но я пока не смог определить, обладает ли она какой-либо из готовых функциональных возможностей, которые я ищу, или мне пришлось быреализовать его самостоятельно.

Другая возможность - это библиотека joeq , которая, по крайней мере, обладает необходимой для этого инфраструктурой, но документация (или ее отсутствие)из-за этого мне сложно сказать, на что он на самом деле способен.

Я уверен, что Eclipse много анализирует потоки данных под капотом, но я еще не видел ничего такого, что было бы общедоступным.Кто-нибудь знает, что в Eclipse API есть такие вещи?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2012

Попробуйте http://www.sable.mcgill.ca/soot/

2 голосов
/ 09 апреля 2012

ОП говорит, что он также интересуется системами с открытым исходным кодом.

Наш инструментарий реинжиниринга программного обеспечения DMS с внешним интерфейсом Java может анализировать исходный код Java ввсе диалекты 1.4-1.7, производящие полные AST, формирующие таблицы символов, вычисляющие типы выражений и определяющие элементы управления и потоки данных в методах, включая зависимость контроля явного соответствия в соответствии с запросом OP.

Обычно люди, которые заинтересованы в расширенном анализеиметь в виду нечто иное, чем необработанный анализ.DMS представляет собой экосистему инструментов анализа и преобразования программ, которые можно использовать для использования такого анализа в диагностике существующего кода с точки зрения местоположения источника (взятого непосредственно из AST) или исходного кода (довольно отпечатанного из интересующего поддерева), илигенерировать новые фрагменты кода (собирая AST и распечатывая их) или, наконец, фактически изменяя исходный код (изменяя AST, используя процедурные модификации или, еще лучше, преобразование исходного кода в исходное и просто печатая измененный AST).

0 голосов
/ 15 февраля 2012

Я обнаружил, что у JBoss Tattletale есть несколько полезных отчетов.

http://www.jboss.org/tattletale

...