源码剖析-阿里巴巴Java规约插件(idea)

前言

怀着好奇猫的精神:阿里巴巴Java规约插件如此好用,到底是如何实现的呢?这次我们来翻翻源码look look!ps:如对插件开发有兴趣的同学,可以跳转以下友情链接(晚点再看嘛):

  • IntelliJ IDEA 插件开发详细视频教程
    http://www.jianshu.com/p/ba970d364600
  • IntelliJ Platform SDK 官网
    http://www.jetbrains.org/intellij/sdk/docs/welcome.html
  • 自己动手写IDEA plugin
    https://www.tuicool.com/articles/yeuyIj
入正戏

一开打源码瞬间被惊讶,源码已经几乎是完全采用.kt结尾文件写了,没错.kt就是kotlin的源文件,并且整个项目只有3个.java文件(常量文件)而已!可见阿里papa就连语言的选用也是领先水平哈~



下面我们来理清下各目录和文件的作用(如若有误欢迎指正哈)

具体的kotlin源码剖析:
源码目录p3c-master\idea-plugin\p3c-common\src\main\kotlin\com\alibaba\p3c\idea

  • ...\action 动作。切换项目、语言、文件进行扫描。动作需要在plugin.xml里配置。

  • ...\compatible IDE不同版本的兼容操作

  • ...\component 组件\全局初始化\输出配置(Blocker、Critical、Major)。代码截取:

  • ...\config xxx配置

  • ...\ep 扫描动作扩展点(InspectionActionExtensionPoint)

  • ...\i18n 未读懂,貌似是读取扫描结果的文字描述?

  • ...\inspection 大重点!大重点!各种扫描操作方式(fix的操作也在里面),比如:AliEqualsAvoidNullInspection 扫描应避免空指针的操作。AliAccessToNonThreadSafeStaticFieldFromInstanceInspection 非线程安全扫描操作。
    这里小编在翻查源码的过程发现,所有的注释均为英语,小编认为这是一个好的习惯,书写能保持我们良好的英语语感。


  • ...\pmd 包含源码文件解析匹配语法规则,还有规约工厂,规约的数据初始化处理。是的,揭晓了,规约插件的语言解析采用的就是net.sourceforge.pmd.PMD 的解析器!【PMD介绍】
    PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Salesforce.com Apex, Java, JavaScript, XML, XSL.Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript, Matlab, Swift.
    官网:https://sourceforge.net/projects/pmd/

  • ...\quickfix 快速修复操作。只支持基础语法违反规约的快速修复(线程不安全等高级问题还是要自行解决哈)

  • ...\util 整个项目的共用工具类,Document操作、版本判断、高亮错误提示等。

  • ...\vcs 检查分析操作接收的handle?不是太确定。包含getBeforeCheckinConfigurationPanel、getSettings、beforeCheckin、doAnalysis、hasViolation、等操作。

小结

好学的小编先贡献一血看源码(先撸为敬)啦,阿里巴巴Java规约插件项目结合不少的 IntelliJ Platform SDK API和一些第三方库(PMD等),好学的同学如果想全部读懂源码需要下点功夫啦~小编最后就为你加点鸡血吧:“如果你知道去哪,全世界都会为你让路!”
.
...
......
咳咳,你以为就这样结束了?不来点fun吗?

你可能感兴趣的:(源码剖析-阿里巴巴Java规约插件(idea))