- 浏览: 101720 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (209)
- http://docs.jpush.io/server/java_sdk/ (1)
- SpingMVC ModelAndView (1)
- Model (1)
- Control以及参数传递 (1)
- https://www.alipay.com/ (1)
- 检查指定的字符串列表是否不为空。 (1)
- 转自http://my.oschina.net/rpgmakervx/blog/505434 (1)
- 压缩js (1)
- 含包含 字母数字校验 (1)
- 判断浏览器是ie (1)
- fixbox (0)
- 转自http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html (1)
- http://dl2.iteye.com/upload/attachment/0113/2406/afbd8d53-dcad-3afc-8d78-41c1591 (0)
- IDEA (0)
- maven搭建 (0)
- http://www.jeasyuicn.com/api/docTtml/index.htm (1)
- 给tomcat添加运行内存: (1)
- JPUSH推送 (1)
- requestScope (0)
- oracle中plsql安装client10连接数据库 (1)
- 不需要安装oracle11g (1)
- tuikuan (1)
- http://www.hjxmall.com/index.php (1)
- java (1)
- 参考 (1)
- xml签名验签模拟程序 (1)
- 技术网站收集分享 (1)
- Java NIO提供了与标准IO不同的IO工作方式 ------来源于 http://www.iteye.com/magazines/132-Java-NIO (1)
- oracle表查询语句优化 (0)
- oracle (5)
- a (1)
- TenpayHttpClient (2)
- mongodb (1)
- http://www.qcloud.com/product/cmongo.html?utm_source=pcsem1&utm_medium=bdgj46&utm_campaign=baidu (1)
- SpringMVC整合MongoDB开发 (0)
- SpringMVC整合MongoDB开发 https://www.mongodb.org (1)
- Java 语言中常见问题总结 (1)
- 数据库SQL优化大总结 (1)
- 拦截器与过滤器的区别 (1)
- Struts2中拦截器与过滤器的区别及执行顺序 (1)
- Spring声明式事务管理与配置 (0)
- oracle OPERTION (1)
- java 高并发多线程开发 (1)
- Collection 与 map 接口相关集合 (1)
- 多线程开发实践 (1)
- JVM调优总结 转自 http://www.importnew.com/18694.html (1)
- redis 五种数据类型的使用场景 转自于 http://blog.csdn.net/gaogaoshan/article/details/41039581 (1)
- HttpWatch http基础 来自于http://blog.csdn.net/gaogaoshan/article/details/21237555 (1)
- maven 远程仓库 http://blog.csdn.net/gaogaoshan/article/details/40266779 (1)
- 生成Webservice客户端的4中方法 http://blog.csdn.net/gaogaoshan/article/details/8980775 (1)
- http://fgh2011.iteye.com/blog/1564283 (1)
- sleep和wait有什么区别 http://xiaowei2002.iteye.com/blog/2174188 (1)
- JDK中常用包及其类 常见的几种RuntimeException (1)
- Java的运行原理 (1)
- mybatis缓存的使用及理解 http://my.oschina.net/dxqr/blog/123163 (1)
- 软件架构设计分析 (1)
- redis技术总结 (3)
- java面试总结知识点 (1)
- ZooKeeper技术 (1)
- Hadoop (1)
- sso单点登录 (1)
- SpringIOC (1)
- 书签ssssssssssssssssssssss (1)
- spring事务的隔离级别 http://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html (1)
- 秒杀系统架构分析与实战 http://www.importnew.com/18920.html (1)
- oracle 连接plsql配置 (1)
- maven工程集成springmvc http://blog.csdn.net/fox_lht/article/details/16952683 (1)
- java类序列化与反序列化版本唯一号serialVersionUID (1)
- spring注解用法总结 (1)
- eclipse导入maven项目找不到资源文件方法 (1)
- dubbo (0)
- socket 网络编程 服务器与客户端 编程 (1)
- Thread与Runnable实现线程利用线程插队实现求和操作 (1)
- 生产者与消费者模式 (1)
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML*** (1)
- xml 与JAVAbean转换 (1)
- MAP (2)
- decimalToString (1)
- 反编译插件 (0)
- 反编译插件 https://sourceforge.net/projects/jadclipse/?source=typ_redirect (1)
- AWX (1)
- 官网地址Dinp (1)
- public interface ExecutorService extends Executor (1)
- MAIN (1)
- 转自于 http://blog.csdn.net/lufeng20/article/details/24314381 (1)
- JaxbUtil (1)
- HttpXmlClient (0)
- Http post 请求 (1)
- URLDecoder (1)
- spdb (0)
- 订单号生成规则 (1)
- 距离0点毫秒数 (1)
- MyBatis存储过程调用java (1)
- Banks (1)
- 学习网址 (1)
- hots配置oracle数据库配置修改 (1)
- 支付宝文档 (1)
- Jadclipse (1)
- filter (0)
- Filter过滤器 (1)
- 工具类 fixbox (1)
- java quartz (0)
- java quartz 实现定时任务,每个礼拜一到礼拜五定时执行 (1)
- Thread (4)
- getResourceAsStream (1)
- BigData (1)
- 开源架构 (17)
- 架构 (0)
- 文件操作 (2)
- tools (20)
- 测试工具 (1)
- vm (1)
- mq (1)
- blog (1)
- 开源架构搭建技术 (6)
- JAVA细节技术点总结 (1)
- 优化技术 (1)
- LINUX命令使用 (1)
- spring (2)
- 大数据 (1)
- struts2 (1)
- python (1)
- pay (1)
- linux (1)
- 压力测试 (1)
- 代码检查插件 (1)
- 游戏端开发 (1)
- 微信开发相关 (1)
- 搜索引擎 (1)
- 网络技术 (1)
- 分布式部署 (1)
- 堆栈信息 (1)
最新评论
clipse版插件支持4.2(Juno,JDK1.8+)及以上版本,通过 Help
-- Install New Software 然后输入https://p3c.alibaba.com/plugin/eclipse/update 即可看到安装列表。可以通过 Help-- Check for Udates 进行插件新版检测。
Eclipse插件安装
勾选Ali-CodeAnalysis,Next,安装完成后重启即可。
代码检查 Inspections
File-Settings-Editor- Inspections,打开后右侧找到Ali-Check,可以看到很多代码检查规则,可以修改规则对应提示的颜色。这里一共有55条规则。
Inspections
以编程规约之命名风格为例:
变量test_Double命名不符合驼峰形式,高亮显示,Ctrl+F1给出修改提示
驼峰形式变量名称
常量Test_CONSTANT命名不符合规范,高亮显示,Ctrl+F1给出修改提示
常量规范
代码分析Code Analyze
在当前类中右键或者在左侧Project视图中类名称上右键,选择Alibaba Coding Guidelines Analyze, 可以对某一个类进行代码分析;也可以直接在Project视图中,项目的包上面单击右键,选择Alibaba Coding Guidelines Analyze,可以批量分析包中所有类
Alibaba Coding Guidelines Analyze
分析结果在IDEA底部逐条给出,我们还是对上面的类进行分析,结果如下:
分析结果
单击红色矩形框可以跳转到代码所在行。
P3C-PMD插件实现规则说明
P3C-PMD插件基于PMD实现了《阿里巴巴Java开发手册》中涉及的48条规则。
编程规约 (六)并发处理,实现了1、2、3、4、5、10、11、12等8条规则;
编程规约(五)集合处理,实现了4、5、6、7、9、11等6条规则;
编程规约(一)命名风格,实现了1、2、3、4、5、6、7、8、9、13等10条规则;
编程规约(二)常量定义,实现了1、2等2条规则;
编程规约(四)OOP规约,实现了5、6、7、8、9、12、17等7条规则;
编程规约(七)控制语句,实现了1、2、4等3条规则;
编程规约(八)注释规约,实现了1、2、3、4、5等5条规则;
编程规约(九)其他,实现了1、3、4、5等4条规则;
异常日志 (一)异常处理,实现了5、7、10等3条规则;
PMD执行Java代码分析的原理
PMD是一种代码静态分析工具,当使用PMD规则分析Java源码时,PMD首先利用JavaCC和EBNF文法产生了一个语法分析器,用来分析普通文本形式的Java代码,产生符合特定语法结构的语法,同时又在JavaCC的基础上添加了语义的概念即JJTree,通过JJTree的一次转换,这样就将Java代码转换成了一个AST,AST是Java符号流之上的语义层,PMD把AST处理成一个符号表。然后编写PMD规则,一个PMD规则可以看成是一个Visitor,通过遍历AST找出多个对象之间的一种特定模式,即代码所存在的问题。
自定义PMD实现规则有如下2种方式:
(1). 自定义Java类并继承AbstractJavaRule抽象类,重写visit()方法,并在xml规则文件中引用该类。
name:自定义规则的名字;
language:要检查的语言
message:该规则被触发时,给出的消息提示;
class:规则使用类的全类名;
description:规则的描述信息;
priority:优先级别,从高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;
example:在CDATA标签中书写一个该规则对应的实例。
示例:
自定义Java类对应xml规则
(2). 自定义XPATH表达式,编写xml规则,在规则的properties-property节点中定义XPATH表达式,该表达式是依赖于抽象语法树AST的。
name:自定义规则的名字;
language:要检查的语言
message:该规则被触发时,给出的消息提示;
class: xPath规则统一配置为net.sourceforge.pmd.lang.rule. XPathRule;
description:规则的描述信息;
priority:优先级别,从高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;
example:在CDATA标签中书写一个该规则对应的实例。
properties:这个是xpath必须配置的,其子节点property,value值使用CDATA标签配置对应的xpath表达式的形式,可以有多个property。
示例:
自定义XPATH
阿里代码规约插件p3c-pmd源码解析
p3c-pmd的项目开源托管在github上,可以自行去https://github.com/alibaba/p3c下载,项目是maven管理,项目代码结构如下:
p3c-pmd插件的实现是基于pmd的,更具体的来说是基于pmd-java的,因为pmd不仅支持java代码分析,还支持其他多种语言。具体实现自定义规则的方式当然也是上节所介绍的2种方式:自定义Java类和XPATH规则。
p3c-pmd插件封装了2个抽象类,分别介绍如下:
(1). 第一个是AbstractAliRule 继承了pmd的 AbstractJavaRule并重写visit(node,data)方法;AbstractPojoRule又继承了AbstractAliRule,用于检测Java类是否有Pojo。
第二个是AbstractXpathRule继承了pmd的抽象类XPathRule,用于处理XPATH规则。
相关推荐
阿里巴巴的p3c-pmd-2.1.1.jar是一款专为Java开发者设计的代码质量检测工具,旨在提升代码质量并遵循阿里巴巴内部的编码规范。该插件是基于开源项目PMD进行定制和优化,旨在帮助开发团队在早期阶段发现并修复潜在的...
P3C-PMD 是阿里云的插件,用于代码规则校验。文章将从服务端 Gitlab 校验原理简要说明、P3C-PMD 插件的使用、Gitlab + P3C-PMD 配合使用三个方面对代码标准化进行详细的讲解。 服务端 Gitlab 校验原理 Gitlab ...
可以利用p3c-pmd-2.0.0.jar来实现基于阿里代码规约的代码规范检测。执行命令: $JAVA_HOME/bin/java -Dpmd.language=en -cp $BASE_PATH/p3c-pmd-2.0.0.jar net.sourceforge.pmd.PMD -d $TEMPDIR -R rulesets/java/...
P3C阿里云的插件,github地址:https://github.com/alibaba/p3c 此处我们用到p3c-pmd插件,需要打包成jar文件,以便gitlab服务端使用; 已经打好包,方便直接拿去使用
阿里P3C(P3C stands for "P3C Code Checker")是阿里巴巴开源的一款基于Eclipse的Java代码规约检查插件,旨在提升代码质量和开发效率,遵循阿里巴巴内部的Java编程规范。P3C源自阿里巴巴的“编码规约”实践,它为...
阿里巴巴Java开发规约插件是基于开源项目PMD实现的一款编码规范检查工具,它旨在提升Java代码质量和一致性。PMD是一款强大的源代码分析器,能够检测出潜在的代码问题,如未使用的变量、过长的方法、复杂的表达式等。...
example : java -Dfile.encoding=utf-8 -cp p3c-pmd-1.3.6.jar net.sourceforge.pmd.PMD -d test.har -R rulesets/java/ali-comment.xml
P3C(Alibaba Java Coding Guidelines)是阿里巴巴推出的一套Java编码规范,旨在推广和执行统一的编码标准,提高代码可读性和可维护性。P3C-PMD 2.1.0是PMD的一个扩展,它将P3C编码规范转化为PMD规则,从而可以在...
P3C是阿里巴巴开源的一个编码规范检查工具,全称为“P3C (Alibaba Java Coding Guidelines)”,它基于Eclipse平台,主要用于提升Java代码的质量和一致性,遵循阿里巴巴内部的编程规范。 【描述】提到,由于公司官网...
《阿里巴巴Java开发规约》是阿里巴巴集团内部广泛使用的编程规范,旨在提高代码质量和团队协作效率。这份规约不仅适用于阿里巴巴的开发人员,也对整个Java社区有着重要的参考价值。插件形式的发布使得开发者能够在...
### 《阿里巴巴Java开发规约》插件使用详细指南 #### 插件介绍 阿里巴巴于2016年10月14日在杭州云栖大会上,正式发布了《阿里巴巴Java开发规约》扫描插件。这款插件旨在帮助开发者遵循阿里巴巴内部的Java编码规范,...
阿里巴巴 Java 编码指南 pmd 实现和 IDE 插件P3C最新版本黄山版(2022.2.3发布)前言我们很高兴推出《阿里巴巴 Java 编程指南》,它总结了阿里巴巴集团技术团队多年来的最佳编程实践。为了鼓励复用和更好地理解彼此...
阿里巴巴java开发规范集成sonar扫描
sonarqube 集成阿里 p3c 规则
目前插件已实现了《阿里巴巴Java开发规约》中的41条规则,大部分规则基于PMD实现,其中4条规则基于IDEA实现。此外,插件还支持实时检测功能,并且部分规则支持快速修复(Quick Fix)。 ##### 检测模式 插件提供了两...
7. **P3C-PMD**:P3C是“普罗米修斯”(Prometheus)的简称,是阿里巴巴基于PMD开发的Java代码静态检查工具,用于检测代码中的潜在问题,如冗余代码、空指针异常、未使用的变量等。 8. **Work Like Alibaba PPT**:...
阿里p3c代码规范
有关更多信息,请参阅《阿里巴巴Java编码指南》 :中文版: 英文版:《阿里巴巴Java开发手册》书籍版天猫官方店: 《码出高效》书籍版天猫官方店:介绍该项目包括3个部分:规则基于PMD实现了49条规则,请参阅P3C-...
sonar-p3c