Модули и библиотеки системы, Средства разработки, Javaparser - Система автоматизированного разделения кода прикладных программ

Средства разработки

В качестве целевого языка программирования была выбрана Java из-за ее распространенности.

Данная система разделения кода также написана на Java.

Для семантического разбора исходного кода была выбрана библиотека Javaparser, особенности которой описаны в разделе 3.2.

Сборка клиентского и серверного приложения будут осуществляться с помощью Apache Maven, так как данная система умеет обрабатывать зависимости и может загрузить недостающие библиотеки из центрального репозитория.

В качестве БД для тестирования системы была выбрана СУБД PostgreSQL. Данная система является свободно распространяемой и обладает большим функционалом, в том числе поддержкой процедур на высокоуровневых языках программирования.

Javaparser

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

Как было описано в предыдущей главе, наиболее крупной обрабатываемой структурой является единица компиляции, которая выстраивается на основе .java-Файла.

Парсер содержит классы для обработки всех конструкций языка, а также классы-визитеры (Visitor), в которых присутствуют методы для просмотра различных типов узлов (Node). Классы, представляющие конструкции языка, являются наследниками класса Node. Прямой переход между узлами невозможен, что в некоторых случаях осложняло задачу. Так, например, если в данный момент просматривается метод, то нельзя получить узел уровнем выше - то есть класс, в котором он содержится.

Для того, чтобы посетить узел какого-либо типа, необходимо создать класс-наследник одного из Visitor'ов и переопределить метод для соответствующего типа узлов.

Существуют несколько основных видов конструкций:

    - Объявление (Declaration) - для выражений import, объявления классов, полей, методов. - Выражение-конструкция (Statement) используется для условных операторов, блоков Try-catch, циклов и блоков выражений. Блоком выражений является, например, тело метода - Простое выражение (Expression) - бинарные и унарные операторы, вызов метода, доступ к полю, присваивание. Также, одно из наиболее полезных при генерации кода Name expression. В случае, когда часть какой-либо конструкции компоновать из объектов было достаточно сложно, часть выражения можно было заменить подобной конструкцией, использовав ее как выражение-строку.

Если в одном из методов, просматривающих узел, есть обработка конструкций какого-то вида, то переопределенные методы для этих конструкций не буду вызываться, если вызов не задан явно.

Javaparser изначально написан для версии языка 1.5, но также совместим с 1.6, грамматика Java 7 не поддерживается, это накладывает ограничение на код программы, которую необходимо разделить.

Похожие статьи




Модули и библиотеки системы, Средства разработки, Javaparser - Система автоматизированного разделения кода прикладных программ

Предыдущая | Следующая