2013-10-11 6 views
2

Я ищу механизм в java (возможно, как Reflection) для доступа к операторам в программе. например, я обращаюсь к операторам функции, а затем прохожу по дереву операторов, чтобы иметь анализ на Java-программах.Отражение уровня этажа в java

В .Net Microsoft предоставляет Extended Reflection. Какая альтернатива в java?


Для файлов C, CIL процесса в .c исходные файлы и позволяют получить доступ к отчетности и ходить бросить дерево (даже изменения и вставки кодов) статически. если есть инструмент, который обрабатывает коды .java и выполняет подобные работы, может решить мою проблему.

+0

Я не уверен, что это возможно без доступа к исходному коду. Исходный код Java скомпилирован в байт-код, который запускается JVM, и я подозреваю, что файлы .class не будут содержать информацию об исходном коде, из которого они созданы. Вы могли бы почти думать об этом как стирание стилей с помощью дженериков, что-то вроде этой концепции. –

+1

Не сейчас, если это соответствует вашим потребностям, но вы можете попробовать Thread.currentThread(). GetStackTrace() –

+0

@JoaoPereira Это даст вам стек вызовов, но откроет ли он такие вещи, как назначения? ОО заботится о них? –

ответ

2

Если вы хотите проанализировать Java-код через приложение Java, вам понадобится копия исходного кода. .java файлы - это, по сути, текстовые файлы, поэтому с исходным кодом в вашей программе ваша программа может читать файлы, похожие на чтение любого текстового файла.

Существует несколько инструментов, таких как PMD и Clover, которые будут выполнять этот анализ для вас. Это может сэкономить время и ресурсы для использования установленного инструмента. Хотя Clover больше не является бесплатным инструментом, он предоставляет обширные показатели сложности кода. Я считаю, что PMD может предоставлять аналогичные показатели.

+0

Учитывая изменение, сделанное непосредственно перед этим сообщением, похоже, что у него есть исходный код – Cruncher

+1

Я думаю, вопрос возникает: «Что именно OP хочет анализировать?» –

+0

если инструмент существует для этой работы, его изобретать колесо. но если это не единственный вариант. –

Смежные вопросы