本示例使用的 IDEA 版本为 2021.1
一、阿里巴巴规范插件安装
- 通过 idea 安装
- 打开 Settings >> Plugins >> Marketplace…
- 在搜索框输入 alibaba 即可看到 Alibaba Java Code Guidelines 插件,点击 Install 进行安装,然后重启 IDEA 生效
- 通过离线包安装
- 打开 IDEA Plugin Repo 下载对应 idea 版本
- 拖动下载的 zip 包至 IDEA 进行安装,然后重启 IDEA 生效
- 如果不能拖动安装,可在插件界面选择离线安装
二、插件的使用
- 实时监测
- 实时检测功能会在开发过程中对当前文件进行检测,并以高亮的形式提示出来,同时也可以支持Quick Fix,该功能默认开启,可以通过配置关闭。
检测结果高亮提示,并且鼠标放上去会弹出提示信息。
Alt+Enter键可呼出Intention菜单,不同的规则会提示不同信息的Quick Fix按钮
- 关闭实时监测功能
插件默认开启实时规范检测功能,如需关闭则在代码编辑页面鼠标右击关闭即可
也可以关闭某条规则的实时检测功能或者修改提示级别。通过Settings >> Editor >> Inspections 进行手动设置
- 代码规范扫描
右键 project 选择 “编码规约扫描”,根据项目大小决定扫描时间
扫描完成将得出不符合编码规范的结果,点击进行修改即可
Blocker/Critical/Major -> 崩溃/严重/重要
同理也可以进行单个文件的扫描、某个包下面的代码扫描,此处不作演示 - 代码提交时进行检测
- 在提交代码框勾选Alibaba Code Guidelines选项,如果有违反手册的地方会提示是否继续提交,可先将代码修改后再进行提交
三、代码风格选择
- √ IDEA 默认风格
- 打开 Settings >> Editor >> Code Style,确保该选项为 Default 即可
- 右键项目,选中 Reformat Code 即可根据 codestyle 对整个项目的代码进行格式化
- Reformat Code 的条件设置如下,我们只需要将 .java 的文件进行代码格式化即可,对于其他文件不作格式化。其他条件不作强制要求,自行选择。
四、规范扫描插件的个性化配置
由于阿里的一些规范,并不适合自身的要求,因此需要修改一些配置,使其符合我们的要求。以方法不能超过 80 行为例,将限制扩展到 160 行。
下载 插件源码 p3c-pmd,找到规则对应的源码
找到规则对应的提示,修改为 160
升级 p3c-pdm的版本为 2.1.2-SNAPSHOT,然后将p3c-pmd安装到本地maven仓库,先将不用的插件 maven-javadoc-plugin 和 maven-gpg-plugin 注释掉,然后运行mvn命令: mvn -DskipTests=true clean install
2. 下一步是打包插件,下载 idea-plugin 项目,将 p3c-common 的 p3c-pmd 版本号修改为刚才本地 install 的版本
加 mavenLocal() 表示从本地载入刚才的 p3c-pmd
然后构建项目 gradle clean buildPlugin,完成后在 idea-plugin\p3c-idea\build\distributions\ 即可找到插件
安装自己定制的插件后,再次扫描,发现 80 行限制已经不存在
让该方法扩充到大于 160 行,则提示就会出来
个性化可能需要使用一段时间后,收集出哪些默认配置是需要更改的,然后再统一修改。
五、编码规范
5.1 文件编码
为了保证编码的统一,我们需要设置一下统一的编码,不设置会导致什么情况呢?
a 同学的编码为 GBK,b 同学的编码为 UTF-8,代码提交后,打开的文件将出现中文乱码
2. IDEA 设置统一编码,Settings >> Editor >> File Encodings,将 Global Encoding 与 Project Encoding 统一设置为 UTF-8
5.2 类/接口注释模板
3. 如果类或接口等不添加作者信息,插件将会提示你添加作者信息,因此需要统一模板
2. 打开 Settings >> Editor >> File and Code Templates,选择 Includes 的 File Header ,添加注释模板:
/**
* ${DESCRIPTION}
*
* @author Your name
* @date ${YEAR}-${MONTH}-${DAY} ${TIME}
**/
六、总结
良好的代码规范有助于代码的后期维护,是每个开发的必须准守的准则。统一规范能让大家尽可能的走在一条路子上,当你要改别人代码时也更加容易看懂;编码的统一也是必须的,不然谁能容忍项目里面又一堆的乱码呢?