定制阿里代码检查,实现你自己的代码规范检查

几个月前,阿里开源了p3c,我也接到了老大交给我的技术改造。是这样的,app是老项目了,半年前接入了ARouter,由于Activity繁多,就没有去全局支持ARouter,这不,技术改造来了,就是定义一个规则,全局的在项目里面搜一遍,所有Activity如果没有@Route()注解,就把它揪出来。那么来吧。

于是到同性恋交友网站(github)上面,把阿里代码检查(这里附上链接https://github.com/alibaba/p3c)下下来之后就傻眼了,用Kotlin写的,我尼玛。。。好吧骚年,撸起袖子加油干。学点Kotlin,总还是好的。

我们现在打开idea-plugin这个项目,代码主要是在p3c-common这个包里面,我们先来看一下包结构吧
这里写图片描述
这里画圈两个包比较重要,inspection是所有的检查逻辑,idea-sandbox是插件输出的位置。
那是哪里调用inspection的呢?

class AliLocalInspectionToolProvider : InspectionToolProvider {
    ...
    companion object {
            val ruleInfoMap: MutableMap<String, RuleInfo> = Maps.newHashMap<String, RuleInfo>()
            private val LOGGER = Logger.getInstance(AliLocalInspectionToolProvider::class.java)
            val ruleNames: MutableList<String> = Lists.newArrayList<String>()!!
            private val CLASS_LIST = Lists.newArrayList<Class<*>>()
            private val nativeInspectionToolClass = arrayListOf<Class<out LocalInspectionTool>>(
                    AliMissingOverrideAnnotationInspection::class.java,
                    TuoMissingAcitvityRouteInspection::class.java,
                    AliAccessStaticViaInstanceInspection::class.java,
                    AliDeprecationInspection::class.java,
                    MapOrSetKeyShouldOverrideHashCodeEqualsInspection::class.java,
                    AliArrayNamingShouldHaveBracketInspection::class.java,
                    AliControlFlowStatementWithoutBracesInspection::class.java,
                    AliEqualsAvoidNullInspection::class.java,
                    AliLongLiteralsEndingWithLowercaseLInspection::class.java,
                    AliWrapperTypeEqualityInspection::class.java
            )
            ...
    }
    ...
}

我们看到这个数组常量nativeInspectionToolClass,这里装的就是你点击检查时候检查的所有规则的类。

private fun initNativeInspection() {
            val pool = ClassPool.getDefault()
            pool.insertClassPath(ClassClassPath(DelegateLocalInspectionTo
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值