Code Review老是让人又爱又恨,它能够帮助咱们在提测以前发现不少代码中比较“丢人”的问题,可是,Code Review一般会比写代码更加耗费精力,由于你须要理解别人的代码,而为了这一目的,每每须要不少次的沟通。 html
人们常说“见字如面”。我认为代码也是同样,看到一我的的代码,就会对这我的有一个大概的印象。例如,当你看到一段代码写的很是随意,随意的格式、随意的命名、随意的封装,而后又没有单元测试,那咱们通常会认为这段代码的做者是一个不够严谨、作事随意、有些懒惰,又对本身的代码责任心不强的人。若是你不是这样的人,那就须要花费更多的力气向同事证实本身。而若是在代码中作好每个细节,严格遵循编码规范,单元测试覆盖率比较高,那么同事对你的第一印象必定是这我的仍是比较可靠的,跟他合做应该比较愉快。java
说了这么多,其实就是想强调Code Review的重要性。那么既然它这么重要,但又给咱们带来了更大的工做量。做为程序员,咱们必定会想,能不能自动化?答案固然是能够。事实上如今也有不少公司实现了自动化,例如自动进行静态代码分析来确保代码质量,利用相似Cobertura这样的工具来检查单元测试覆盖程度等等。可是这并不能彻底保证代码的整洁性和可靠性。git
有了这些工具以后Code Review轻松了许多,可是这些工具的安装、使用也是须要花费很高的成本的。因此我想给你们介绍的是一个使用简单、方便的工具来帮我完成这些任务。在介绍以前,咱们先来想想咱们平时在Review别人代码时可能会注意哪些问题。这里我简单列出来了一些:程序员
System.out
,而是要用日志输出java.util.logging
Service
层代码不能访问Controller
层代码这些事情之前咱们都是靠人工来检查,直到我发现了ArchUnit这个库。感受像是抓住了自动化道路上的救命稻草。github
ArchUnit的官方网站是 https://www.archunit.orgbash
官网中原话介绍是架构
ArchUnit is a free, simple and extensible library for checking the architecture of your Java code using any plain Java unit test framework.框架
意思是ArchUnit是一款免费、简单可扩展的库,它可使用任何Java单元测试框架来检查Java代码的架构。maven
也就是说,它的主要功能是用来检查代码结构的。那么怎么使用呢?ide
ArchUnit的简单绝对不是空谈,若是你是maven项目,只须要在pom.xml文件中添加以下依赖:
<dependency> <groupId>com.tngtech.archunit</groupId> <artifactId>archunit</artifactId> <version>0.12.0</version> <scope>test</scope> </dependency>
若是你是Gradle项目,使用起来一样很是简单
dependencies { testCompile 'com.tngtech.archunit:archunit:0.8.0' }
当你添加了依赖之后,就能够为咱们前面提到的规则写测试用例了。
固然,也有一些内建的通用规则,它们定义在
com.tngtech.archunit.library.GeneralCodingRules
这个类中。关于内建规则的细节,能够查看官方文档。
除了内建规则之外,ArchUnit也支持你定义本身须要的规则,至于如何定义规则,文档中都有详细的介绍。固然,也能够参考这个例子来写一些规则。 https://github.com/TNG/ArchUnit-Examples
规则定义好之后如何执行呢?咱们说ArchUnit使用起来很是简单,若是须要测试,对maven项目来讲只须要执行命令
mvn test
而对于Gradle项目来讲,只要执行命令
gradle test
ArchUnit看起来是一个很酷的三方库,我并无在使用层面作过多介绍,由于我也在摸索中,感兴趣的朋友能够和我一块儿交流。