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

2023-11-11

作者:13
GitHub:https://github.com/ZHENFENG13
版权声明:本文为原创文章,未经允许不得转载。

阿里巴巴Java开发手册

在进入正题介绍这款插件之前,首先来谈一下《阿里巴巴Java开发手册》,2017年年初,首次公开的阿里官方Java代码规范标准手册可以说是引起了全民(IT界)代码规范的热潮,相信这个手册很多行业内的朋友都比较熟悉,毕竟有"大厂光环",想低调都难,这个手册的愿景是:

"统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本"

终极版

至今为止已更迭了三个版本,2017年9月25日,《阿里巴巴Java开发手册(终极版)》正式发布,也是阿里官方对外发布的最后一个PDF版本。最新版下载地址在这里

插件介绍

《阿里巴巴Java开发手册》自从第一个版本起,倍受业界关注,相信很多人对其中的规则也有了一定的了解,很多人甚至希望能尽快在自己的团队推行起来,这样大家有了一套共同的开发准则。但是,如何更好的去遵守规则并且按照手册去开发我们的系统确变得不那么容易,为了让开发者更加方便、快速的将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse), 该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能,提升代码质量,提高团队研发效能。

代码已经开源,GitHub:https://github.com/alibaba/p3c

我们来体验一下吧!

插件使用简易教程(基于IDEA)

搜索插件

打开IDEA,选择Preferences - Plugins - Browse repositories后,在输入框中输入"alibaba",可以看到返回结果中有"Alibaba Java Coding Guidelines"。
search
在一周前开始构思这篇文章时,已经有16340的下载量了,现在应该更多了,赞一下。
install

安装插件

点击插件详情中的"install"按钮,按照其提示即可完成安装,安装完成后需重启IDEA。

功能体验

安装后完成后,需要重启IDEA,重启后就可以在菜单栏中看到它的功能按钮,有三种方式可以扫描代码:

  • 在项目目录上右键点击也会出现这两个功能按钮,点击绿色的按钮即可开始扫描代码,或者在工程目录上右键也会出现检测的功能按钮。
    check
  • 如果不想全部扫描,只扫描当前编辑的文件的话,在当前文件面板中点击右键也会出现此功能按钮。
    check2
  • 前面说的两种方式是手动检测,插件也提供了实时监测的功能,此功能默认开启,一旦开启则会在你编写代码时就会实时监测,一旦有不符合规范的语句就会出现错误提示。
    check3
    由于大括号不规范的问题,if下方有错误红线的提示。
    check4
    idea中有quick fix快捷键:option/alt+enter,点击后则可以自动添加大括号。

扫描代码后,不符合规约的代码会按Blocker/Critical/Major三个等级显示在下方面板中,如图:
check-result
左边是扫描出的不符合规范的代码,依次点进去可以看到是代码的多少行出现了规约问题以及哪一个规约问题,右边则是规约的详细描述及实例代码。
critical
不仅如此,右侧还有quick fix的按钮,点击后直接可以改正代码,但是并不是所有的问题都有此按钮,有些问题还是需要手动修改。

支持版本

IDEA官方仓库:最低支持版本14.1.7,JDK1.7+
Eclipse版插件:支持4.2(Juno,JDK1.8+)及以上版本

检测更新

可以通过 Help >> Check for Udates 进行插件新版检测

插件卸载

在插件面板点击"uninstall"即可。

使用感受

并没有在插件刚出来的时候整理这篇文章,而是使用了一段时间后才决定写这篇文章,目前已经使用了一个多星期,整体的感觉还算满意,可能是一开始的要求和期待有点高了,使用后觉得也就那样,100分的话给80分吧(个人意见,不用太在意),其中10分是因为中文的原因,哈哈哈哈。

先整理一下比较明显的优点:

  • 中文提示,且按照《阿里巴巴Java开发手册》给出详细的提示和解释,看起来真的很舒服。
  • 能够检测出一些平时不在意的问题,可以提高开发编码过程中对于细枝末节的注意。
  • quick fix,检测出问题后点击一下按钮即可完成代码的修改。
  • 基本满足代码规范检测的需求。

缺点嘛,也存在:

  • 只支持IDEA和Eclipse,且对版本有要求。
  • 有错别字(小问题)。
  • 有bug。

目前此插件还处于第一个公开版本,所以肯定还有一些小问题或者小bug,以后应该会慢慢修复的,但是已经基本满足代码审查的需求了,用起来也比较满意。不过,一些容易产生空指针异常的语句和问题,好像并不能检查出来,只是满足基本的代码质量检测,如果要求较严格的话,还是需要使用SonarQube这种较专业的工具来进行代码质量检测和分析,相比较而言,p3c较为基础,SonarQube较为齐全一些,不过这种比较也是不对称比较,目前来看,两者根本不是一个量级的工具。

多说几句,此插件所使用的规范为阿里公布的那套规范,肯定与其他规范有少许的出入和不同,记得在阿里这份规范公布时,有人甚至在评论区用"八股文"来形容它,我感觉没这么恐怖吧,规范嘛,你遵守了就是规范,你不遵守它算个什么东西啊,各家有各家的规范,也不可能完全统一,选择适合自己的就好,没必要上纲上线,言尽于此,不找骂了。

总结

推荐一下自己的达人课,感兴趣的朋友可以看一下:SSM搭建精美实用的管理系统

gitchat

是不是使用了这个插件之后就能够让我们的代码中少一些Bug?是不是我们就能少踩一些坑?答案肯定不是,插件只有检测和提示作用,真正的编码者依然是自己,所以不要本末倒置,这只是一个工具而已,这种想法一定不能存在,真正要写出健壮代码最重要的还在于编码者自己。

首发于我的个人博客,2017年10月22日。

转载于:https://www.cnblogs.com/han-1034683568/p/7682594.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里巴巴Java开发规约插件p3c详细教程及使用感受 的相关文章

随机推荐

  • 基于WOA-SVM算法的乳腺肿瘤识别算法的MATLAB仿真

    基于WOA SVM算法的乳腺肿瘤识别算法的MATLAB仿真 随着医疗技术的发展 计算机在医学影像领域中的应用越来越广泛 乳腺肿瘤是女性常见的一种肿瘤 准确地进行乳腺肿瘤检测和诊断对女性健康至关重要 本文将介绍一种基于WOA SVM算法的乳腺
  • centos下git相关操作以及部分问题解决方案

    主要记录两件事情 一个是如何git clone github代码到本地 二是git clone到非空文件夹下出错的解决方案 第一 在电脑没有安装git的情况下 手动安装git 具体步骤如下 1 安装依赖的包 yum install curl
  • c++使用curl库发送https请求

    一 环境win7 64位 vs2010 二 文件准备 2 1文件下载 libcurl 下载页面 http curl haxx se download html 我下载的是https curl haxx se download curl 7
  • angular项目打包发布流程

    1 从git更新代码 运行测试看有没有错误 测试ie兼容性 2 修改配置文件并编译打包代码 修改连接服务器的配置文件 双击 3 拷贝文件到服务器 xshell连接到linux 命令 pwd 查看当然文件目录 ll 列出该文件下所有的文件列表
  • Visual Studio 2019解决右侧工具栏消失

    项目场景 准备打开Visual Studio 2019却发现右侧的工具栏消失了 问题描述 新建项目后发现右侧的解决方案资源管理器消失了 不便于添加源文件书写代码 如图 原因分析 可能是以前在操作中将项目移除或删除等等将窗口删掉了 解决方案
  • 用jquery实现简单的表单验证效果

    看了 锋利的jquery 一书 练习了下期中的一个用jquery写表单验证的例子 效果如图 总结 这是个比较简单的表单验证 主要验证了表单中的用户名和邮箱两个必填选项 表单验证其实质是个不断往下过滤的过程 主要思路
  • selenium自动化录入数据

    将csv或者txt里的数据通过selenium自动录入到网页系统里 输入一个数据操作完后自动输入下一个数据 依次遍历所有的数据 比如百度搜索 有十个词要搜索 输入第一个词搜出结果后再接着输入第二个继续搜 依次遍历十个 求大神赐教 给个思路或
  • 21天打卡挑战学习MySQL——《SQL基础入门》第二周 第四篇

    活动地址 CSDN21天学习挑战赛 一 什么是SQL MySQL是一个关系型数据库管理系统 前世 瑞典MySQLAB公司 今生 属于Oracle旗下产品 MySQL是最好的RDBMS Relational Database Manageme
  • Unity游戏界面点击深色模式,游戏会退出问题的解决方法

    问题 在Unity游戏接入到android平台上时 经常会遇到这样的问题 游戏玩着玩着 点击深色模式 游戏会突然退出 具体情形下图所示 一 点击深色模式游戏退出 二 正常情况 三 解决方法 在AndroidManifest xml里 对继承
  • 【Linux】线程详解之线程概念

    前言 在我们的教材中 对线程给出以下的概念 是进程内部的一个执行分支 在进程的内部运行 属于进程的一部分 比进程更加轻量化 可能有的人看完之后都是懵的 什么叫在进程的内部运行 什么又是执行分支 为什么比进程轻量化 我们就带着这三个问题 重新
  • 2023超细致的性能测试流程,你get了吗?

    性能测试 利用工具模拟大量用户操作 验证系统承受的负载情况 性能测试的目的 找到潜在的性能问题或瓶颈 分析并解决 找出性能变化趋势 为后续扩展系统提供参考 测试监控 基准测试 配置测试 负载测试 稳定性测试 对硬件和中间件进行监控 1 学习
  • ubuntu安装ftp服务器(一般配置)

    ubuntu安装ftp服务器 1 安装vsftpd sudo apt get install vsftpd ubuntu10 10自己装了 这步省略 2 配置vsftpd 2 1 修改vsftpd的配置文件 此类配置文件通常位于 etc 目
  • Mysql建立中英文全文索引(mysql5.7以上)

    一 概念 使用索引是数据库性能优化的必备技能之一 在MySQL数据库中 有四种索引 主键索引 普通索引 唯一索引以及我们这里将要介绍的全文索引 FUNLLTEXT INDEX MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检
  • innodb存储引擎探究(一)

    mysql 体系结构和存储引擎 数据库 物理操作系统文件或者其他形式的文件 实例 mysql数据库由一个共享内存区和后台进程组成 启动mysql实例时 会读取配置文件 安装以下顺序 mysql体系结构 mysql插件式的一个存储引擎可以根据
  • java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options es启动出错(解决)

    今天重新搭建es的时候出现这个问题 以及给相关的文件夹权限但是还是不可以 这里提供一个解决问题的方法 解决思路 放弃自动挂载 采用手动进行将容器内的文件粘贴出来 问题解决 1 直接运行es docker run d name elastic
  • window编写代码,在ubuntu服务器上面远程训练yolov5

    用途 主要用来在window上面编写python相关代码 使用ubuntu的依赖 编写完成后 在ubuntu上面进行训练 此方法其实就是方便在window写代码而已 因为它的代码都会同步到ubuntu上面的 而且它在window上面的pyc
  • uniapp之scroll-view组件的练习使用 (制作可滑动的菜单)

    今天仔细研究了一下uniapp的scroll view组件使用 顺便就做了一个可滑动的菜单 点击后能够切换样式 欢迎到https www uniapp club thread 57 htm交流学习 其中 还有用到其他知识点有 1 v for
  • React Native_手把手教你做项目(四.上拉加载更多)

    在手机应用上 上拉加载更多的功能是必不可少的 同时 在实际使用的时候 当下拉加载 数据仍未返回时 用户多次重复进行下拉加载的操作 为了不产生额外的垃圾数据 我们需要进行判断 同时为了更好的用户体验 增加数据缓存功能 list js文件 Sa
  • 1096C - Polygon for the Angle-几何-性质

    思路 根 据 几 何 性 质 正 多 边 形 所 有 三 个 点组成的 角 都 是最小角的倍数 然后根据内角公式 可以求出 正多边形 最小角为 多边形内角 n 2 然后 打表发现 180边形最小角为1 最大角 178 所以 只有 179无法
  • 阿里巴巴Java开发规约插件p3c详细教程及使用感受

    作者 13 GitHub https github com ZHENFENG13 版权声明 本文为原创文章 未经允许不得转载 阿里巴巴Java开发手册 在进入正题介绍这款插件之前 首先来谈一下 阿里巴巴Java开发手册 2017年年初 首次