一、前言

古人云:“欲速则不达”,最近真的是深有体会。学习也是如此,不是一件着急的事,越是着急越不会

就拿SonarQube来说吧,去年年末就想学来着,但是想着想着就搁置了,有时觉得自己才是那个拖延症特别严重的人。

临近年末又捡起来了,关于SonarQube自定义规则部分,我也是苦恼了很久,网上的资料不是很多,但凡是有相关的能用的真的很少,基本是抄来抄去。

一周没学习和更文了,一是这块真的没思路,网上找来的也不好用;二是因为女人「相亲路任重而道远,不多说心塞」心情不好,也不想做任何事情。

后在自动化技术交流群的无业游民—我一阳指贼溜细心帮忙,帮我晚上远程搞定的。

当然,我也在本次实战中学会了怎么排查问题,真的十分感谢这位热心大佬,帮我搞到近晚上十二点,同时也为自己的零基础docker而感到惭愧。

二、SonarQube自定义规则的两种方式

  • 使用CheckStyle插件安装
  • 使用SonarQube自定义规则开发打包导入jar

三、使用CheckStyle插件安装

1、安装CheckStyle插件

在应用市场中搜索CheckStyle即可,搜索出来后,点击安装按钮(我这里已经安装了,未安装的情况再卸载按钮的地方会有安装按钮),即可下载安装,安装过程中会有一次重启操作,大家按提示操作即可。

2、使用CheckStyle代码规则配置文件

新建规则,以java为例,其他规则请视自己情况调整

按照上面两个图,填写好相关信息后,点击创建按钮。

3、启用SonarQube中CheckStyle相关代码规则

如图所示,在质量配置中会显示SonarQube中所有已安装编程语言中创建好的规则配置(每个语言都有内置Sonar way的默认配置),可见,刚刚创建的CheckStyle配置中,通过文件已配置了18条规则,接下来我们再进行添加。点击配置名称,进入配置详情页:

点击更多激活规则

上图中左边栏的用于筛选的,可从语言、规则类型、标签、资源库等等进行筛选,这里我们要用到资源库的筛选,选中资源库后,会列举出已安装的插件列表,选中CheckStyle,页面中会筛选出CheckStyle的可配置规则(上图已经筛选好了,显示有136条可配置的规则)。

最后,可在配置详情页中点击CheckStyle的链接,以XML的格式查看已配置好的规则,如下图所示:

四、使用SonarQube自定义规则开发打包导入jar

1、编写自定义规则,使用mvn clean package命令打包

2、把target下生成的jar,放在$SONAR_HOME/extensions/plugins 目录,重启SonarQube

3、查看新增规则

可以在Java下面资源库,下面有新增的规则,如下图所示:

4、创建新配置

按照上面两个图,填写好相关信息后,点击创建按钮

5、启用新增规则

点击新建配置,进入详细配置页面

点击更多激活规则

将新增规则添加

找到刚才新增规则,点击批量修改,点击应用,全部加入即可

启用新规则

五、小结

  • 第一种方式很鸡肋,虽然看起来最简单,但在你尝试后,会发现这是个巨大的坑,不推荐使用;
  • 第二种方式看似简单,但是这个规则的开发,你看不懂代码就别合计了,哈哈,总的来说学习之路真的是任重而道远;
  • 这个本不难,主要是配置繁琐,应对方式 耐心

还记得MC小洲的一句经典的话:

承受不了,就放弃不丢人

但对我不适用,我从来都是有始有终的。

欠下的债总是要还的

这是电影《无间道》中的经典对白,于我而言,这次深深的感觉到自己的盲区很多,还需要不断地学习和总结。

生活和学习一样,如果心情不好的时候,也是在所难免的。

状态不好,就静下心来,放一放,再去思考它,你会发现,一切其实并不难。

SonarQube学习(五)- SonarQube之自定义规则使用的更多相关文章

  1. SonarQube 自定义规则开发

    SonarQube 自定义规则开发 满足一些特定需求的时候,需要自己开发代码规则. 环境 和前文的演示环境一致. 步骤 开发步骤见 Writing Custom Java Rules 101,这是官方 ...

  2. StyleCop学习笔记——自定义规则

    本文将简单的一步一步的指导这可能有助于学习如何创建自己的规则 1.创建一个项目. Visual Studio创建一个新的类库项目.NET3.5 2.引用两个DLL,StyleCop.dll和Style ...

  3. SonarQube学习入门指南

    1. 什么是SonarQube? SonarQube 官网:https://www.sonarqube.org/ SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可 ...

  4. Mybatis学习笔记8 - resultMap自定义结果集映射规则

    一.resultMap自定义结果集映射规则 示例如下: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; public ...

  5. Shiro权限管理框架(五):自定义Filter实现及其问题排查记录

    明确需求 在使用Shiro的时候,鉴权失败一般都是返回一个错误页或者登录页给前端,特别是后台系统,这种模式用的特别多.但是现在的项目越来越多的趋向于使用前后端分离的方式开发,这时候就需要响应Json数 ...

  6. jQquery.validate自定义规则的使用案例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. TweenMax动画库学习(五)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  8. Dotfuscator自定义规则中的元素选择

    Dotfuscator是专业的.NET程序代码保护软件.是支持规则自定义的,你可以对重命名.程序控制流.字符串加密等等功能自定义规则.在进行规则自定义过程中,可以通过元素的不同选择,满足自己的程序需要 ...

  9. Docker Data Center系列(五)- 使用自定义的TLS安全认证

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 名词说明 CSR: Certificate Sig ...

随机推荐

  1. 网络QoS的平衡之道——音视频弱网对抗策略介绍

    作者:网易智企云信资深音视频引擎开发工程师 王兴鹤 随着AI和5G的到来,音视频应用将变得越来越广泛,人们对音视频的品质需求也越来越高,视频分辨率已经从高清发展为超高清.VR,视频帧率也已出现60fp ...

  2. redis学习之——五大基本数据类型

    redis 键 (key) 基本数据类型:string 字符串 list (列表)  set(集合)  hash(类似java 中的Map)   zset(有序集合) 官方命令doc redis 键 ...

  3. python程序的三种控制结构

    程序的三种控制结构 什么是控制结构? """ 程序有三种基本结构组成:顺序结构.分支结构.循环结构.任何程序都是由这三种基本结构组成. 顺序结构是程序按照线性顺序依次执行 ...

  4. react中对内容点击复制

    在react中一个标签内,点击这个标签直接复制标签内的内容 如图,我的需求是点击id这个标签实现对id的一键复制,所以请看copyHander函数 先创建一个Range对象,Range 对象表示文档的 ...

  5. mycat配置MySQL主从读写分离

    1.安装java 1.8 mycat 1.6要求的Java需要Java 1.8或1.8以上,安装Java参考以下链接: https://blog.csdn.net/weixin_43893397/ar ...

  6. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

    hive 安装完成后创建表的时候出现错误 NestedThrowablesStackTrace:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExce ...

  7. js下 Day05、DOM案例

    一.简易购物车 效果图: 功能思路分析: 功能一:数量加减 \1. 找到所有的加号按钮,循环绑定点击事件.点击加号时让对应的数量+1 (找清楚加号和数量的关系,让数量标签的内容++) \2. 找到所有 ...

  8. 浅谈 FHQ-Treap

    关于FHQ-Treap             --作者:BiuBiu_Miku 可能需要的前置知识:    一.树形结构的了解:        树形,顾名思义,就是像树一样有很多分叉口,而这里以二叉 ...

  9. 容器编排系统k8s之Service资源

    前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...

  10. Django中ORM的使用

    Django中ORM的使用 ORM orm(object-relation-mapping)对象关系映射,即用对象来表示关系数据库中的表: 类 --> 表, 对象-->一行数据 对象的属性 ...