<Property name="additionalAnnotations" value="org.faktorips.runtime.annotation.IpsGenerated"/>
Generatoroptionen
Annotations
Es gibt mehrere Generatoroptionen, die die Generierung von Annotations am generierten Code steuern. Wie im Kapitel Manuelle Anpassungen des generierten Codes beschrieben wird an allen von Faktor-IPS generierten Elementen das Javadoc-Tag @generated oder @restrainedmodifiable generiert. Sollen generierte Methoden zusätzlich auch über Annotations markiert werden, um sie z.B. von der Überprüfung durch Code-Quality-Tools auszunehmen, wird die Option additionalAnnotations genutzt, z.B.
Damit wird im generierten Javacode import org.faktorips.runtime.annotation.IpsGenerated und an jeder generierten Methode @IpsGenerated generiert.
Mehrere Annotations können durch Semikolon getrennt werden:
<Property name="additionalAnnotations" value="org.faktorips.runtime.annotation.IpsGenerated;edu.umd.cs.findbugs.annotations.SuppressFBWarnings"/>
Zusätzliche Annotations für Felder
Sollen zusätzlich auch an generierten Feldern und Konstanten Annotations generiert werden, wird die separate Option additionalAnnotationsForFields verwendet:
<Property name="additionalAnnotationsForFields" value="org.faktorips.runtime.annotation.IpsGenerated"/>
Diese Annotations werden an allen generierten Feldern und Konstanten generiert, die mit /* @generated */ markiert sind. Im Unterschied zu additionalAnnotations, das für Methoden, Klassen, Interfaces und Enum-Konstanten gilt, wirkt additionalAnnotationsForFields ausschließlich auf Felder und Konstanten.
Auch hier können mehrere Annotations durch Semikolon getrennt werden. Die Einstellung additionalAnnotationsLocation gilt auch für die mit additionalAnnotationsForFields konfigurierten Annotations.
Einschränkung auf @generated
Sollen die Annotations nur an mit @generated markierten Methoden generiert werden, nicht aber an solchen mit @restrainedmodifiable - die potentiell handgeschriebenen Code beinhalten können, welcher z.B. bei der Prüfung auf Codeabdeckung durch Testfälle mit betrachtet werden soll - kann dies über folgende Einstellung erreicht werden:
<Property name="additionalAnnotationsLocation" value="OnlyGenerated"/>
Werden dagegen öfter Annotations von Hand hinzugefügt ist es mühsam, jedes Mal @customizedAnnotations ADDED zu verwenden. Häufig verwendete Annotations können mit der Option retainAnnotations vom automatischen Entfernen aus dem generierten Code ausgenommen werden. Beispielsweise kann die @Override-Annotation verbleiben, wenn Interfaces Methoden definieren, die im generierten Code enthalten sind.
<Property name="retainAnnotations" value="Override"/>