Java/JVM Architectural Support Tools

  • https://www.mojohaus.org/jdepend-maven-plugin/usage.html
  • https://www.archunit.org/
  • https://github.com/xmolecules/jmolecules

JUnit Check For Cycles

        val jdepend = JDepend()
        jdepend.addPackage("package.common")
        jdepend.addPackage("package.util")
        jdepend.addPackage("package.module1")
        jdepend.addPackage("package.module2")
        assertEquals(false, jdepend.also { it.analyze() }.containsCycles())

ArchUnit examples

        val importedClasses =
            ClassFileImporter().importPackages("com.example")

        val evaluation = noClasses()
            .that()
            .resideInAPackage("..util..")
            .should()
            .accessClassesThat().resideInAPackage("..dto..")
            .because("Util classes should not access DTO classes")
            .check(importedClasses) // will throw if it fails

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *