前言

前一段时间(很久之前了😳)弄了 sonarQube 以及如何开发自定义规则,在之前一直也没有去接触过。于是兴致勃勃的到网上一顿搜索的骚操作,本地的 sonarQube 就搭建好了,并且通过 sonar 自带的规则扫描自己的项目发现了一些问题。就在我准备更进一步去学习如何进行自定义规则开发的时候,碰坑了。。。

在网上查了很多关于 sonar 自定义规则开发的资料,其内容都大同小异,介绍如何搭建 sonarQube 环境几乎占了 80% 或者更高,仅仅少数是进行最简单的开发环境 demo 介绍(其中包括如何创建规则,以及规则的一些相应配置), 但对于更深入的如何去开发一个规则以及内部原理的文章比较少(可能关键词不当),于是乎。。。为了记录学习的过程便有了这篇文章,希望对于初入学习sonar 自定义规则开发的小伙伴有一定的帮助。

深入了解sonar自定义规则开发

小白阶段

当我第一次看到 sonar 规则,一脸懵逼。。。基于有一定的编程能力,通过规则对应的单元测试进行一步步的 debug 调试(当时每个方法里面都被我打上了断点┑( ̄▽  ̄)┍)

在一步步的调试下,终于大致看懂了一个规则的数据流向,于是撸起袖子准备开始敲自己的代码,刚打完规则名后就卡住了。。。因为原来代码里面的各种 nodesToVisitvisitNode 方法都没弄清楚为什么要这么写,更不知道该从哪里开始。于是又重新开始 ( ̄﹏ ̄)。

进阶 ing

直接拿 sonar 规则官网BadMethodNameCheck规则进行后面的解释,我们就根据 debug 的路径一步步开始讲解。

总结

基本上了解了上面的逻辑后,整个 sonar 的自定义规则开发就十分的简单了。后续的深入就是怎么写好用户校验代码,保证校验的结果正确性以及减少误报率。

由于也是自己随意发挥,可能某些细节上有一些偏差,欢迎各位大佬们指正。

个人 blog 原文链接: sonar 自定义规则


↙↙↙阅读原文可查看相关链接,并与作者交流