Как проверить предоставленные пользователем файлы классов в черные списки пакетов, классов и методов - PullRequest
0 голосов
/ 23 июля 2011

Я работаю над приложением, в котором размещены пользовательские хранимые процедуры, которые предоставляются в виде файлов классов Java.Процедуры должны быть детерминированными, и я хочу внести в черный список различные пакеты и методы, которые являются источниками недетерминизма.Я посмотрел на то, что доступно в java.lang.Class и javax.tools. *.

Похоже, что я могу проверять члены, параметры метода и типы возврата, используя java.lang.Class.Однако, чтобы проверить содержимое метода, похоже, мне нужно было бы проанализировать необработанный файл класса.

Существуют также угловые случаи, такие как статические блоки инициализации и инициализация переменных-членов, которые мне нужно проверять.В некоторых случаях, например в java.util.Date, конструктор по умолчанию недетерминирован, но в других случаях все в порядке.

Существует ли инфраструктура или инструмент, упрощающий анализ этих аспектов файла класса?

1 Ответ

1 голос
/ 23 июля 2011

Да, есть. Как вы говорите, «проанализировать эти аспекты» используйте, например, AspectJ ;) Вы можете использовать ткачество во время загрузки с javaagent, например. Другой способ - загрузить пользовательские классы с помощью аспектного загрузчика классов. Вы можете объявить указатели в поисках заданных вызовов методов. Вы также можете включить метод пользователей и подсчитать время выполнения и т. Д.

...