Аннотации удаляются генератором кода Faktor-IPS

#code-generation #faktor-ips

#генерация кода #faktor-ips

Вопрос:

Мне нужно аннотировать некоторые методы, которые генерируются Faktor-IPS. Наиболее распространенным случаем является @Override-аннотация, потому что у меня есть дополнительные интерфейсы или базовый класс, который я реализую:

      * Gibt den Wert des Attributs beschreibung zurueck.
     * 
     * @generated
     */
    @IpsAttribute(name = "beschreibung", kind = AttributeKind.CHANGEABLE, valueSetKind = ValueSetKind.AllValues)
    @Override // <- manually added
    public String getBeschreibung() {
        return beschreibung;
    }
 

Проблема в том, что дополнительная аннотация удаляется генератором кода Faktor-IPS.

Я знаю о специальных тегах для использования в классе-comment ( «@implements a.b.c.MyInterface» ), чтобы класс продолжал реализовывать интерфейс a.b.c.MyInterface — есть ли что-то подобное для аннотаций, особенно для сгенерированных методов?

Ответ №1:

Faktor-IPS использует инструмент JMerge, созданный проектом Eclipse EMF, для объединения сгенерированного и рукописного кода. Существует (на немецком языке) описание способов, которыми вы можете управлять объединением кода в https://www.faktorzehn.org/de/en/dokumentation/manuelle-anpassungen-des-generieten-codes /.

Чтобы сохранить дополнительные аннотации, в то же время позволяя генератору кода обновлять остальную часть кода, добавьте тег Javadoc (внутри Javadoc, а не аннотации, хотя также начинающийся с ‘@’) ‘@customizedAnnotations ADDED’.

Если у вас есть определенные аннотации, которые вы хотите добавить во многих местах, этот обходной путь требует слишком много работы, поэтому Faktor-IPS позволяет вам определить список аннотаций, которые никогда не будут удалены в настройке генератора .ipsproject ‘retainAnnotations’: просто добавьте туда ‘Override’ и любое ‘@Override’аннотации, которые вы размещаете вручную, не будут удалены генератором.