Skip to content

RoRoche/eorules

Repository files navigation

eorules

Set of custom ArchUnit rules to ensure Elegant Objects principles respect.

eorules helps you design and craft code that respect strong object-oriented programming paradigm.

Build Status YAML Lint Nodes.js CI

EO principles respected here DevOps By Rultor.com We recommend IntelliJ IDEA

PDD status

codecov

Hits-of-Code

Bugs Code Smells Duplicated Lines (%) Lines of Code Reliability Rating Security Rating Technical Debt Maintainability Rating Vulnerabilities

nullfree status staticfree status allfinal status allpublic status setterfree status nomultiplereturn status

Maven Central Javadoc

✨ Features

📥 Installation

Add the dependency to your project:

<dependency>
    <groupId>com.github.roroche</groupId>
    <artifactId>eorules</artifactId>
    <version>${latest.version}</version>
    <scope>test</scope>
</dependency>

🚀 Usage

class ArchitectureTest {

    private final JavaClasses classes = new ClassFileImporter()
        .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
        .importPackages("com.example");

    @Test
    void checksClassesAreAbstractOrFinal() {
        new ClassesAreAbstractOrFinalRule().check(this.classes);
    }

    @Test
    void checksThereAreNoStaticMethods() {
        new ClassesShouldHaveNoStaticMethodsRule().check(this.classes);
    }

    @Test
    void checksClassesDoNotHaveGettersOrSetters() {
        new ClassesShouldNotHaveGettersOrSettersRule().check(this.classes);
    }

    @Test
    void checksClassesDoNotHavePrivateMethods() {
        new ClassesShouldNotHavePrivateMethodsRule().check(this.classes);
    }

    @Test
    void checksFieldsAreFinal() {
        new FieldsShouldBeFinalRule().check(this.classes);
    }

    @Test
    void checksPublicMethodsAreDeclaredInInterfaces() {
        new PublicMethodsDeclaredInInterfacesRule().check(this.classes);
    }
}

To bypass the checks, you can annotate your class with @ExcludeFromArchUnit.

🤝 Contributing

Contributions are welcome!

If you'd like to report a bug, suggest a feature, or submit a pull request, please read our 👉 Contributing Guide

It contains everything you need to know about:

  • Development setup
  • Coding standards
  • Commit conventions
  • Pull request process
  • Quality requirements

Thank you for helping improve eorules 🚀

📄 License

Distributed under the MIT License. See LICENSE for more information.

About

Set of custom ArchUnit rules to ensure Elegant Objects principles respect

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages