Eclipse的代码自动规范

不知道大家在用Eclipse的时候有没有感觉到,当代码量一大就看不懂自己代码了呢?有人可能要说了,Eclipse不是自己带有格式化代码工具吗?确实如此,但是我们可能想使用更高级的自动化工具,例如Google-Java-StyleAli-CodeAnalysis。这篇博文,我将展示如何使用eclipse自带的自动化代码规范工具,以及怎么配置Google-Java-StyleAli-CodeAnalysis

使用Eclipse自带代码规范

  • 快捷键: Ctrl/Command + Shift + F
  • 鼠标:
    • 单个文件:进入文件/对着文件名点右键 > 找到Source > 点击Format (其实就是快捷键的作用!)
    • 项目:对着项目名/包名点右键 > 找到Source > 点击Format

如下截图:

右键

更换成Google Style

文件下载

配置

当我们下载了本博客提供的eclipse-java-google-style.xml,就可以开始为formatter改风格了。

  • 打开eclipse的Preferences找到Java,再展开Code Style,找到Formatter

Code Style

点击Import,在弹出窗口里选择我们下载的文件,确定即可。

Code Style

再次进入项目,对着想要格式化的对象进行格式化操作,在进度条走完,我们就得到一份Google Java Style的代码了。

总结

  • 按照相似的步骤,我们也可以Import其他风格的代码规范;
  • Google不仅提供了eclipse上Java的代码规范,还有其他很多规范,详见Goole Style
  • 如果任何代码规范都不和心意,也可以打开某个代码规范,自己做相应的改动。

Code Style

阿里巴巴代码规范

环境:JDK1.8,Eclipse4+。有同学遇到过这样的情况,安装插件重启后,发现没有对应的菜单项,从日志上也看不到相关的异常信息,最后把JDK从1.6升级到1.8解决问题。

Help -> Install New Software…

输入Update Site地址:https://p3c.alibaba.com/plugin/eclipse/update 回车,然后勾选Ali-CodeAnalysis,再一直点Next Next…按提示走下去就好。 然后就是提示重启了,安装完毕。

注意:有同学反映插件扫描会触发很多 “JPA Java Change Event Handler (Waiting)” 的任务,这个是Eclipse的一个bug,因为插件在扫描的时候会对文件进行标记,所以触发了JPA的任务。卸载JPA插件,或者尝试升级到最新版的Eclipse。附:JPA project Change Event Handler问题解决

插件使用

目前插件实现了开发手册中的53条规则,大部分基于PMD实现,其中有4条规则基于Eclipse实现,支持4条规则的QuickFix功能。

* 所有的覆写方法,必须加@Override注解, 
* if/for/while/switch/do等保留字与左右括号之间都必须加空格,
* long或者Long初始赋值时,必须使用大写的L,不能是小写的l)
* Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。

目前不支持代码实时检测,需要手动触发,希望更多的人加入进来一起把咱们的插件做得越来越好,尽量提升研发的使用体验。

代码扫描

可以通过右键菜单、Toolbar按钮两种方式手动触发代码检测。同时结果面板中可以对部分实现了QuickFix功能的规则进行快速修复。

触发扫描

在当前编辑的文件中点击右键,可以在弹出的菜单中触发对该文件的检测。

在左侧的Project目录树种点击右键,可以触发对整个工程或者选择的某个目录、文件进行检测。

也可以通过Toolbar中的按钮来触发检测,目前Toolbar的按钮触发的检测范围与您IDE当时的焦点有关,如当前编辑的文件或者是Project目录树选中的项,是不是感觉与右键菜单的检测范围类似呢。

扫描结果

简洁的结果面板,按规则等级分类,等级->规则->文件->违规项。同时还提供一个查看规则详情的界面。

清除结果标记更方便,支持上面提到的4条规则QuickFix。

查看所有规则

国际化



The link of this page is http://home.meng.uno/articles/548d5dfd/ . Welcome to reproduce it!

© 2018.02.08 - 2022.01.16 Mengmeng Kuang  保留所有权利!

:D 获取中...

Creative Commons License