Mit automatischer Architektur validierung mit JUnit 5 Annotation @ArchTest von archunit kann leicht die Architektur vorgaben überprüft werden. Aber es kann auch leicht verhindert werden, das man z.B. System.out oder System.err verwendet. Oder das verhindert wird, das das interne Java Logging verwendet wird.
Was für mich auch wichtig ist, das der Logger immer LOG heißt, und nicht log oder logger.
Einfach diese JUnit-Test Klasse in alle Projekte einbinden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package de.wenzlaff.blockchain; import org.apache.logging.log4j.Logger; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.CompositeArchRule; import com.tngtech.archunit.library.GeneralCodingRules; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.fields; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; /** * Architektur vorgaben. * * @author Thomas Wenzlaff */ @AnalyzeClasses(packages = "de.wenzlaff") public class ArchitekturValidator { /** * Klasse hat kein Zugriff auf System.in, System.out or System.err * * Klasse soll kein java util logging nutzen * * Klasse soll kein joda time * * Methoden sollen keine Generic Exception werfen */ @ArchTest static final ArchRule Allgemeine_Regel = CompositeArchRule .of(GeneralCodingRules.NO_CLASSES_SHOULD_ACCESS_STANDARD_STREAMS) .and(GeneralCodingRules.NO_CLASSES_SHOULD_THROW_GENERIC_EXCEPTIONS) .and(GeneralCodingRules.NO_CLASSES_SHOULD_USE_JAVA_UTIL_LOGGING) .and(GeneralCodingRules.NO_CLASSES_SHOULD_USE_JODATIME) .because("Allgemeine Architektur Regel"); /** * Apache Log4J Logger nur private, final und static und Feldname LOG */ @ArchTest static final ArchRule Logger_Regel = fields().that() .haveRawType(Logger.class).should().bePrivate() .andShould().beStatic().andShould().beFinal() .andShould().haveName("LOG") .because("Eigene Architektur Regel"); } |