近期困惑于团队成员代码风格迥异,代码质量不可控,作为一名老司机,忧患于后期服务的可维护性,多次一对一的代码Review,耗时耗力不说,效果也不明显。痛定思痛,多次反思之后得出结论:无规矩不成方圆,可靠的服务必须建立在统一的代码风格基础之上,仅仅提倡是远远不够的,必须使用有效的可执行机制,确保最终效果。
 
这里的可执行机制包含以下几个方面:
 
(1)有统一的代码风格约束要求;
(2)IDE辅助检查代码风格约束是否满足,实时检测提醒;
(3)构建项目过程强制检查代码风格约束是否满足,如不满足,终止构建;
 
本篇简要记录以“Google Java Code Style”作为代码风格约束的实践。
 
1.Google Code Style Guide
 
 
2.IDEA配置Google Style
 
IntelliJ IDEA --> Preferences... --> Editor -> Code Style --> Java --> Import Scheme --> IntelliJ IDEA code style XML
 
 
 
 
 
这一步配置完成之后,格式化代码时会使用“Google Java Code Style”的样式进行格式化处理,如:代码缩进。
 
3.IDEA配置CheckStyle-IDEA Plugin
 
(1)安装CheckStyle-IDEA Plugin;
 
IntelliJ IDEA --> Preferences... --> Plugins
 
 
 
(2)配置CheckStyle-IDEA Plugin使用“Google Java Code Style”;
 
IntelliJ IDEA --> Preferences... --> Other Settings --> Checkstyle
 
 
这一步配置完成之后,IDEA会实时检测代码风格是否满足“Google Java Code Style”,如不满足会有异常提醒。
 
4.Maven配置checkstyle Plugin
 
在Project或Moudle pom.xml中进行如下配置即可:
 
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>3.0.0</version>
      <executions>
        <execution>
          <id>validate</id>
          <phase>validate</phase>
          <configuration>
            <configLocation>google_checks.xml</configLocation>
            <encoding>UTF-8</encoding>
            <consoleOutput>true</consoleOutput>
            <failsOnError>true</failsOnError>
            <violationSeverity>warning</violationSeverity>
          </configuration>
          <goals>
            <goal>check</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
 
这一步配置完成之后,项目构建过程(如: mvn clean package)会检测代码风格是否满足“Google Java Code Style”,如不满足会终止构建过程。
 
5.Default file template
 
 
 
/**
* @author ${USER}
*/
 
这一步配置完成之后,用于统一JavaDoc风格。

最新文章

  1. 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
  2. GitHub使用教程
  3. sqlserver 动态行转列
  4. shell 外部传入jmeter脚本线程数,rampUp时间,持续运行时间
  5. bzoj1412: [ZJOI2009]狼和羊的故事
  6. IONIC beta.14 版本变更一览
  7. 代C语言上机实践
  8. innosetup 安装静默安装msi,指定安装路径的方法
  9. CentOS+Apache+php无法访问redis的解决方法
  10. c++builder 重载WindowProc、WndProc 截获消息(比Delphi多一个Message Map方法)
  11. iOS8互动的新通知
  12. dwr推送技术深入研究
  13. (简单) POJ 1195 Mobile phones,二维树状数组。
  14. java的引用数据类型,你知道吗???
  15. Linux - Bash shell的功能;内建命令type
  16. android https安全连接
  17. Guava Cache探索及spring项目整合GuavaCache实例
  18. ppt演讲者模式
  19. sqlbulkcopy 多表批量保存
  20. mysql,int(5)、int(10)啥区别联系

热门文章

  1. Google Guava的5个鲜为人知的特性
  2. AngularJS进阶(三十八)上拉加载问题解决方法
  3. STL:list用法详解
  4. [Java]数组排序-选择排序 冒泡排序 插入排序
  5. C语言的引用计数与对象树
  6. 高通 MSM8K bootloader 之四: ramdump
  7. 修改DrawerLayout 和toolbar 配合navigation的颜色
  8. 通过Java进行网页抓取并生成plist创建代码
  9. 算法面试题-leetcode学习之旅(一)
  10. JavaScript进阶(六)用JavaScript读取和保存文件