Библиотека или фреймворк для тестирования структуры классов Java - PullRequest
3 голосов
/ 28 июня 2011

У меня есть этот ... набор классов, которые я использую, чтобы увидеть, соответствует ли созданный класс заданной структуре.Я читаю файл свойств, а затем сравниваю его с классом.

, т. Е.

className: demo.HelloWorld
classFile: demo/HelloWorld.class
methods:   public static main(java/lang.String[]) : void 
attributes: name : java.lang.String

И так далее.

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

Ответы [ 4 ]

1 голос
/ 28 июня 2011

Чтобы сделать это хорошо, вам понадобится синтаксический анализатор Java, который сможет анализировать «структуры» (фрагменты Java) и, вероятно, сможет искать соответствующие типы.(Скорее всего, вы могли бы сделать это плохо с помощью некоторого языка сценариев, но он был бы чрезвычайно хрупким и склонным к созданию ложных негативов, что могло бы съесть то самое время, когда вы надеетесь, что этот инструмент может вас спасти).

Наш DMS Software Reengineering Toolkit с Java Front End - это инфраструктура, которая обладает этими возможностями.DMS позволяет создавать произвольные пользовательские инструменты для анализа или преобразования исходного кода.DMS предоставляет синтаксические анализаторы (которые определяются выбранным внешним интерфейсом), конструкторы AST, конструирование таблиц символов для языков, таких как C, C ++, Java и COBOL, инструменты для проверки деревьев как процедурно, так и с использованием шаблонов синтаксиса поверхности, которые позволяют вамнапрямую выражать фрагменты кода (как определено синтаксическим анализом) для генерации кода или для сопоставления с образцом.

Для задачи, которую вы хотите выполнить, вам нужно, чтобы DMS проанализировал интересующее программное обеспечение и назвали разрешение типов (создание таблиц символов).Затем вы захотите использовать синтаксический анализатор шаблонов DMS для чтения вашего «файла спецификации» в виде набора сигнатур методов и т. Д., А также с помощью распознавателя имен для поиска / поиска идентификаторов (например, «demo.Helloworld»), поиска соответствующих классов изатем сопоставьте анализируемый шаблон с сигнатурами метода. А несоответствия сообщат о несоответствии, что, как я думаю, вы ищете.

0 голосов
/ 28 июня 2011

Я когда-то пользовался хорошей библиотекой под названием clapper: http://software.clapper.org/javautil/#documentation

В вашем случае - найдите пакет "classutil" - он обеспечивает простое и полезное обнаружение классов и фильтры, возможно, это будет полезно.

0 голосов
/ 28 июня 2011

См. http://innig.net/macker/

Хотя это не совсем то, что вы хотите, и больше основано на правилах.

0 голосов
/ 28 июня 2011

У меня есть хорошая библиотека, построенная с большим количеством инструментов отражения, но я не могу выпустить ее из-за проблем с лицензированием (тизер!) проверьте это или здесь .Как только вы создадите некоторые базовые инструменты отражения, вещи начинают собираться довольно быстро.

...