如何在编译时执行样式规则和约定?

时间:2018-09-17 13:41:01

标签: java

我们的开发团队在编写代码时遵循一系列规则。我正在考虑在编译时明确执行这些规则的想法。 IDE中确实有一些设置,这些设置显示了许多规则的提示,但不是全部。而且仍然存在一些错误。除了格式化(我们可以使用Checkstyle进行检查并使用Maven进行构建失败)之外,是否可以在编译时强制执行此类规则? :

  • 每个Bean和Dao都需要一个具有相同名称+ Test的测试文件,例如:personDao.java-> personDaoTest.java
  • 每个实体(用@Entity注释)必须位于以.entities结尾的包中。
  • 不允许调用任何System.out.print *方法(这些方法通常用于调试,但永远不应将其检入我们的代码库中)

任何见解都将受到赞赏!

1 个答案:

答案 0 :(得分:2)

签出ArchUnit。伟大的工具,用于对您的体系结构进行单元测试。

您只需为要执行的所有内容编写测试。例如。实体测试必须驻留在entities程序包中。

public class EntityTest {

    private JavaClasses classes;

    @Before
    public void setUp() {
        classes = new ClassFileImporter().importPackages("org.my.company");
    }

    @Test
    public void classesAnnotatedAsEntitiesShouldResideInEntitiesPackage() {
        ArchRuleDefinition.classes()
            .that().areAnnotatedWith(Entity.class)
            .should().resideInAnyPackage("..entities")
            .check(this.classes);
    }
}
相关问题