热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ideajava阿里巴巴_AS阿里巴巴Java开发规约CheckStyleIDEA

AlibabaJavaCodingGuidelines简介AlibabaJavaCodingGuidelines是阿里巴巴发布的基于IDEA的Java开发规约扫描插件。经过247天

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 并安装即可。

20180111010739496046.png

因为插件zip包托管在Jetbrains官方CDN上,所以是从国外的服务器进行下载,可能会出现超时的情况,如果安装不了,可以通过手动下载安装包进行安装。插件地址

下载后,在AS的Settings >> Plugins >> Install plugin from disk...

安装之后,它会默认使用你当前设备选择的语言环境进行配置语言,当然你也可以自行切换语言,暂时仅支持 中文 和 英语。

你可以在 Tools >> Alibaba Coding Guidelines >> Switch language to Xxx 进行切换:

a71fe432eef6b58dd0de3335e5afd677.png

中文乱码解决方法:Appearance&Behavior -> Appearance -> UI Options -> Name 里面设置成中文字体,如微软雅黑。

实时检测(Inspections支持)

IDEA的Inspections 相信大家应该都不陌生,它会自动在我们编码的阶段,进行快速灵活的静态代码分析,自动检测编译器和运行时错误,并提示开发人员再编译之前就进行有效的改正和改进。

实时检测功能会在开发过程中对当前文件进行检测,并以高亮的形式提示出来,同时也可以支持Quick Fix,该功能默认开启。

检测结果会高亮提示,鼠标放上去会弹出提示信息,按Alt+Enter键可呼出Intention菜单,如:

20180111010739500929.png

在某些情况下,我们不希望对代码提示违规信息,比如我们在阅读Github开源项目代码的时候,如果界面出现一堆红色、黄色的提示,此时心里肯定是飘过一万只草泥马。这个时候我们可以通过Inspection的设置关闭实时检测功能。

关闭方式:

通过右键快速关闭(打开)所有规则的实时检测功能

通过 Tools >> Alibaba Coding Guidelines 同样可以关闭(打开)所有规则的实时检测功能

通过 Settings >> Editor >> Inspections 进行手动设置,在这里,我们也可以关闭某条规则的实时检测功能或者修改提示级别。

PS:我觉得里面最恶心的一条规则是:不能在行尾添加注释!

提示内容:方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。

PS:我觉得里面最恶心的一条规则是:不能在行尾添加注释!

提示内容:方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。

注意:修改或关闭某一条约束后可能不会及时生效,可以重启AS或关闭检测然后再打开检测就可以了。

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

阿里规约插件,除了支持 Inspections 之外,还可以对现有项目进行静态代码分析。

可以通过右键菜单、Toolbar按钮、快捷键三种方式手动触发代码检测。

20180111010739502882.png

20180111010739504835.png

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

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

使用快捷键(Ctrl+Shift+Alt+J)触发弹出窗口时,可以选择检测范围

它分析的结果,会以 Blocker/Critical/Major 三个级别进行区分。默认按等级分组,方便统计每个级别错误的数量:

20180111010739507765.png

三个级别的意义:

Blocker(崩溃):阻碍开发或测试工作的问题

Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失

Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性

x

三个级别的意义:

Blocker(崩溃):阻碍开发或测试工作的问题

Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失

Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性

默认情况,我们在结果面板需要双击具体违规项才能打开对应的源文件,点击面板中的图标

20180111010739514601.png 开启Autoscroll To Source选项后,单击面板中的文件名、或者是具体的违规项的时候IDEA会自动打开对应的源文件。

对于实现Quick Fix的规则,在结果面板中可以直接一键修复(我还没有发现有支持的规则)。

增强的代码扫描(Inspect Code)

以上方式只会检测此插件中定义的规范,而不会检测 IDEA 中 Inspections 中定义的其他规范,通过下面方式可以达到这个目的:

Analyze菜单 >> 点击Inspect Code >> 在弹框中设置检验范围和使用的检验规则,确认即可

20180111010739518508.png

代码提交时检测

在提交代码框勾选Alibaba Code Guidelines选项

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

这也是一个检查代码风格的插件,可以对比如命名约定,类设计等方面进行代码规范和风格的检查。

PS:建议使用阿里出的Java代码规范【Alibaba Java Coding Guidelines】插件,80K下载,大小7.8 M

配置:Other Settings -->CheckStyle--> 添加规范文件,或勾选推荐的规范文件

20180111010739520461.png

文档:

This plugin provides both real-time andon-demandscanning of Java files with CheckStyle from within IDEA.

这个插件可以在IDEA中使用提供的CheckStyle实时和按需扫描Java文件。

Once installed, a newinspectionwill 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”项目将允许您打开并配置它。

Projectexceptionsare treated a littleoddly. 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



推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • OpenCV4.5.0+contrib编译流程及解决错误方法
    本文介绍了OpenCV4.5.0+contrib的编译流程,并提供了解决常见错误的方法,包括下载失败和路径修改等。同时提供了相关参考链接。 ... [详细]
  • Ansibleplaybook roles安装redis实例(学习笔记二十九)
    1、相关redis参数:2、templatesredis.conf配置相关参数:daemonizeyespidfilevarrunredis_{{red ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • ihaveusedthedelphidatabindingwizardwithmyxmlfile,andeverythingcompilesandrunsfine. ... [详细]
author-avatar
不雅cf居
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有