sonar相关插件开发

前言

某天,来一需求,由于业务线使用ThreadLocal后经常忘记remove,导致出现一些故障。为了可以尽早发现这种使用错误的现象,想在公司使用的sonar上新加一个规则用于检查ThreadLocal。

接下来开始了苦逼的扩展sonar插件。。。。。

no文档,no demo,goole搜到的资料也是寥寥数语,怎么办。。。。。

打开sonar的官方文档,虽然介绍不是很清楚,先看看吧,再想想怎么来实现。

注:sonar官方文档

要写代码还得先看看已有的plugin的代码,因为是扩展java的检查规则,还是看java plugin的source code吧

注:sonar-java source code github site

看代码。。。。。。根本看不懂啊,readme也没有,debug吧,最好的方式,那怎么开始远程debug呢。


如何开始远程debug

debug的方式有好多种,本文主要说说mvn debug方式,怎么用mvn来进行debug。

集成开发环境:IDEA

首先,在idea里添加远程debug remote,设置host为localhost,port:8000

其次,在本地启动sonar,在待检查的工程执行命令mvnDebug sonar:sonar

回到idea里开始远程debug

好,如何开始一次debug大约就是这样,那么,问题来了,断点应该加在哪里???不得不说一下sonar的基本流程了,在说sonar的基本流程之前,先说说sonar的domain吧。


sonar domain

从我了解的数据库的表为点来做一个简单的介绍吧:

    • projects:保存所有被sonar分析过的项目的基本信息,需要注意的是,这里存放的不光是工程级别的东西,比如分析一个java代码库,整个代码库就会作为一条记录,每个package也都会作为一条记录,每个类也是一样,换句话说,sonar会对每个级别都做分析;
    • metrics:保存测试指标,比如测试的覆盖率,代码的复杂度等;
    • rules_profiles:保存定制化的测试标准集合,也就是metrics的一个子集;
    • snapshots:有了projects,有了rules_profiles。按照某种rules_profile对某个project进行一次sonar分析,就会产生一些snapshots。但是这里其实并没有存储真正的分析出来的指标值。而是存放在project_measures这个表中。snapshots和project_measures通过外键关联。
接下来说说sonar的基本的流程,直接上源码:

public void execute(Project project) {
	eventBus.fireEvent(new ProjectAnalysisEvent(project, true)
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值