Я сделал ветку no-factory, убрал оттуда фабрики и статические методы, т.к. Тимуру они не понравились, да и нам они не нужны.
Реализацию интерфейсов я заменил на наследование (Checker и Inspector теперь классы, а не интерфейсы). Это потребовалось, чтобы была возможность добавлять инспекторы в CodeAnalyzer извне. При этом они передаются неинициализированными, в них нет Parser и ParseTree, т.к. Parser и ParseTree создаются внутри CodeAnalyzer, и теперь инициализация происходит внутри CodeAnalyzer. Parser и ParseTree - необходимая часть любого инспектора, поэтому я вынес это в базовый класс Inspector, от которого наследуются все инспекторы.
Теперь все, что нужно, чтобы добавить инспектор в анализатор - добавить этот инспектор в массив в Main и передать массив в конструктор CodeAnalyzer.
Я предлагаю внести эти изменения в основную ветвь, жду ваших комментариев.
UPDATE
Сделал мердж, надо проверить все ли работает, были конфликты при слиянии.
Я сделал ветку no-factory, убрал оттуда фабрики и статические методы, т.к. Тимуру они не понравились, да и нам они не нужны.
Реализацию интерфейсов я заменил на наследование (Checker и Inspector теперь классы, а не интерфейсы). Это потребовалось, чтобы была возможность добавлять инспекторы в CodeAnalyzer извне. При этом они передаются неинициализированными, в них нет Parser и ParseTree, т.к. Parser и ParseTree создаются внутри CodeAnalyzer, и теперь инициализация происходит внутри CodeAnalyzer. Parser и ParseTree - необходимая часть любого инспектора, поэтому я вынес это в базовый класс Inspector, от которого наследуются все инспекторы.
Теперь все, что нужно, чтобы добавить инспектор в анализатор - добавить этот инспектор в массив в Main и передать массив в конструктор CodeAnalyzer.
Я предлагаю внести эти изменения в основную ветвь, жду ваших комментариев.
UPDATE
Сделал мердж, надо проверить все ли работает, были конфликты при слиянии.