Alibaba Java Coding Guidelines 简介

 
Alibaba Java Coding Guidelines 是阿里巴巴发布的基于 IDEA 的 Java 开发规约扫描插件。
 
经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C是世界知名的反潜机,专门对付水下潜水艇,项目组使用此名称寓意是扫描出所有潜在的代码隐患。这个项目组是阿里巴巴开发爱好者自发组织形成的虚拟项目组,把《阿里巴巴Java开发规约》强制条目转化成自动化插件,并实现部分的自动编程。
 
阿里技术公众号于今年的2月9日首次公布《阿里巴巴Java开发规约》,瞬间引起全民代码规范的热潮,上月底又发布了PDF的终极版,大家踊跃留言,期待配套的静态扫描工具开放出来。为了让开发者更加方便、快速将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse)。
 
该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,我们还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。而对于历史代码,部分规则实现了批量一键修复的功能,为首次在成熟项目上使用插件,做了非常友善的支持。如此爽心悦目的功能是不是很值得拥有?提升代码质量,提高团队研发效能,插件将会一路同行。
 
目前插件实现了开发手册中的的53条规则,大部分基于PMD实现,其中有4条规则基于IDEA实现,并且基于IDEA Inspection实现了实时检测功能。部分规则实现了Quick Fix功能,对于可以提供Quick Fix但没有提供的,我们会尽快实现,也欢迎有兴趣的同学加入进来一起努力。 
 

使用文档

基本使用

在AS的 Setting >> Plugins >> Browse repositories ,搜索关键字『alibaba』,在结果中找到 Alibaba Java Coding Guidelines 并安装即可。
 
因为插件zip包托管在Jetbrains官方CDN上,所以是从国外的服务器进行下载,可能会出现超时的情况,如果安装不了,可以通过手动下载安装包进行安装。插件地址
下载后,在AS的 Settings >> Plugins >> Install plugin from disk...
 
安装之后,它会默认使用你当前设备选择的语言环境进行配置语言,当然你也可以自行切换语言,暂时仅支持 中文 和 英语。
你可以在 Tools >> Alibaba Coding Guidelines >> Switch language to Xxx 进行切换:
中文乱码解决方法:Appearance&Behavior -> Appearance -> UI Options -> Name 里面设置成中文字体,如微软雅黑。
 

实时检测(Inspections支持)

IDEA 的 Inspections 相信大家应该都不陌生,它会自动在我们编码的阶段,进行快速灵活的静态代码分析,自动检测编译器和运行时错误,并提示开发人员再编译之前就进行有效的改正和改进。
 
实时检测功能会在开发过程中对当前文件进行检测,并以高亮的形式提示出来,同时也可以支持Quick Fix,该功能默认开启。
检测结果会高亮提示,鼠标放上去会弹出提示信息,按Alt+Enter键可呼出Intention菜单,如:
 
在某些情况下,我们不希望对代码提示违规信息,比如我们在阅读Github开源项目代码的时候,如果界面出现一堆红色、黄色的提示,此时心里肯定是飘过一万只草泥马。这个时候我们可以通过Inspection的设置关闭实时检测功能。
关闭方式:
  • 通过右键快速关闭(打开)所有规则的实时检测功能
  • 通过 Tools >> Alibaba Coding Guidelines 同样可以关闭(打开)所有规则的实时检测功能
  • 通过 Settings >> Editor >> Inspections 进行手动设置,在这里,我们也可以关闭某条规则的实时检测功能或者修改提示级别。
PS:我觉得里面最恶心的一条规则是:不能在行尾添加注释!
提示内容:方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。
 
注意:修改或关闭某一条约束后可能不会及时生效,可以重启AS或关闭检测然后再打开检测就可以了。
 

代码扫描(静态分析,Analyze)

阿里规约插件,除了支持 Inspections 之外,还可以对现有项目进行静态代码分析。
可以通过右键菜单、Toolbar按钮、快捷键三种方式手动触发代码检测。
  • 在当前编辑的文件中点击右键,可以在弹出的菜单中触发对该文件的检测
  • 在左侧的Project目录树中点击右键,可以触发对整个工程或者选择的某个目录、文件进行检测
  • 使用快捷键(Ctrl+Shift+Alt+J)触发弹出窗口时,可以选择检测范围
 
它分析的结果,会以 Blocker/Critical/Major 三个级别进行区分。默认按等级分组,方便统计每个级别错误的数量:
三个级别的意义:
Blocker(崩溃):阻碍开发或测试工作的问题
Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失
Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性
 
 
默认情况,我们在结果面板需要双击具体违规项才能打开对应的源文件,点击面板中的图标  开启Autoscroll To Source选项后,单击面板中的文件名、或者是具体的违规项的时候IDEA会自动打开对应的源文件。
对于实现Quick Fix的规则,在结果面板中可以直接一键修复(我还没有发现有支持的规则)。

增强的代码扫描(Inspect Code)

以上方式只会检测此插件中定义的规范,而不会检测 IDEA 中 Inspections 中定义的其他规范,通过下面方式可以达到这个目的:
Analyze菜单 >> 点击Inspect Code >> 在弹框中设置检验范围和使用的检验规则,确认即可
 

代码提交时检测

在提交代码框勾选Alibaba Code Guidelines选项
如果有违反手册的地方会提示是否继续提交,选择取消后会自动对修改的代码进行扫描
 

CheckStyle-IDEA 插件简介

这也是一个检查代码风格的插件,可以对比如命名约定,类设计等方面进行代码规范和风格的检查。
谷歌代码规范:Google Java Style Guide 
PS:建议使用阿里出的Java代码规范【Alibaba Java Coding Guidelines】插件,80K下载,大小7.8 M
 
配置:Other Settings --> CheckStyle --> 添加规范文件,或勾选推荐的规范文件
 
文档:
This plugin provides both real-time and on-demand scanning of Java files with CheckStyle from within IDEA.
这个插件可以在IDEA中使用提供的CheckStyle实时和按需扫描Java文件。
 
Once installed, a new inspection will be available in the group 'CheckStyle'. The 'Inspections' item in the preferences panel will allow you to turn this on and to configure it.
安装完成后,一个新的 inspection 将出现在“CheckStyle”组中。首选项面板中的“Inspections”项目将允许您打开并配置它。
 
Project exceptions are treated a little oddly. Because CheckStyle demands these to be on the current classpath errors will appear if these have not as yet been compiled. Further, because we cache the real-time checkers for performance reasons, real-time scans may continue to show the errors after a compilation. A static scan will force a reload of the Checker and should resolve this.
项目例外有点奇怪。因为CheckStyle要求它们在当前类路径上,所以如果它们还没有被编译的话,错误将会出现。此外,由于出于性能原因而缓存实时检查器,实时扫描可能在编译后继续显示错误。静态扫描将强制重新加载检查器,并应解决此问题。
 
2017-12-14
 
 
 
 

AS 阿里巴巴Java开发规约 CheckStyle-IDEA的更多相关文章

  1. 阿里巴巴 Java 开发规约插件初体验

    阿里巴巴 Java 开发手册 又一次来谈<阿里巴巴 Java 开发手册>,经过这大半年的版本迭代,这本阿里工程师们总结出来避免写出那么多 Bug 的规范,对于 Java 开发者简直就是必备 ...

  2. 《阿里巴巴Java开发规约》插件使用介绍

    一.简介 阿里巴巴于10月14日在杭州云栖大会上,正式发布了<阿里巴巴Java开发规约>扫描插件!该插件基于<阿里巴巴Java开发规约>手册内容,在扫描代码后,将不符合规约的代 ...

  3. 阿里巴巴Java开发规约及插件安装

    [上海尚学堂编辑整理]10.14日,阿里巴巴在杭州云栖大会上,正式发布了由阿里巴巴 P3C 项目组,经过 近一年的持续研发,正式发布众所期待的 <阿里巴巴 Java 开发规约>的扫描插件. ...

  4. 阿里巴巴Java开发规约插件安装使用指南

    编码规范插件安装使用指南 阿里技术公众号于今年的2月9日首次公布<阿里巴巴Java开发规约>,瞬间引起全民代码规范的热潮,后又发布了PDF的终极版,大家踊跃留言,期待配套的静态扫描工具开放 ...

  5. 阿里巴巴Java开发规约插件-体验

    插件有哪些功能? 阿里技术公众号于今年的2月9日首次公布<阿里巴巴Java开发规约>,瞬间引起全民代码规范的热潮,上月底又发布了PDF的终极版,大家踊跃留言,期待配套的静态扫描工具开放出来 ...

  6. 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程

    经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付 ...

  7. 【Z】扩展阿里巴巴Java开发规约插件

    https://blog.csdn.net/u014513883/article/details/79186893 1.前言 工作中难免会遇到维护别人代码的情况,那么首先就得看懂别人写的代码.如果对方 ...

  8. 扩展阿里巴巴Java开发规约插件(转)

    转自:https://blog.csdn.net/u014513883/article/details/79186893 1.前言 工作中难免会遇到维护别人代码的情况,那么首先就得看懂别人写的代码.如 ...

  9. 阿里巴巴Java开发规约插件p3c详细教程及使用感受

    阿里巴巴Java开发手册 在进入正题介绍这款插件之前,首先来谈一下<阿里巴巴Java开发手册>,2017年年初,首次公开的阿里官方Java代码规范标准手册可以说是引起了全民(IT界)代码规 ...

随机推荐

  1. hdu 4438 第37届ACM/ICPC 天津赛区现场赛H题

    题意:Alice和Bob两个人去打猎,有两种(只)猎物老虎和狼: 杀死老虎得分x,狼得分y: 如果两个人都选择同样的猎物,则Alice得分的概率是p,则Bob得分的概率是(1-p): 但是Alice事 ...

  2. Maven入门指南③:坐标和依赖

    1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可 ...

  3. Java常用加密方案及实现——AES和DES

    AES和DES都是对称加密算法,其中DES全称为Data Encryption Standard,AES全称为Advanced Encryption Standard即高级加密标准. DES现在已经不 ...

  4. STM32 USART 波特率计算

    The baud rate for the receiver and transmitter (Rx and Tx) are both set to the same value as program ...

  5. Programming 2D Games 读书笔记(第二章)

      本意还是想了解DirectX的,由于网上拿不到书的pdf文档,幸好有作者的源代码示例,想完整的看一下,基本的游戏需要的点. 下面直接以代码为例,仅用于帮助自身理解 http://www.progr ...

  6. SOC 与 ARM

    SOC是指片上系统,意思是一个芯片就构成一个包括了存储.CPU.甚至还有AD.UART等等其他资源的系统!而ARM只是CPU的一种,有的片上系统是51.nios.PIC.等等不一而是!特别是nios, ...

  7. Snmp学习总结(四)——WinServer2003安装和配置SNMP

    一.安装SNMP 今天讲解一下在WinServer2003安装和配置SNMP,具体操作步骤如下: 找到[控制面板]→[添加或删除程序]

  8. ASP.NET Web API实践系列09,在Fiddler和控制台中模拟GET和POST请求

    ASP.NET Web API本质是由一个进程托管的一组类,需要宿主,这个宿主可以是ASP.NET应用程序,可以是MVC项目,可以是控制台应用程序,也可以是自己定制的宿主. 在VS2012中创建一个& ...

  9. SMTP协议及POP3协议-邮件发送和接收原理(转)

    本文转自https://blog.csdn.net/qq_15646957/article/details/52544099 感谢作者 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 ...

  10. iOS越狱知多少?

    著名iOS黑客团队Evad3rs上周上线了evasi0n 官网,用于展示他们破解iOS 6 和iOS 6.1  系统的进度.据官网显示,其越狱工具evasi0n已正式上线,支持iPhone.iPad等 ...