一、前言

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

就拿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. Vue-组件传值:子传父和兄弟组件间常见的传值方式

    前言 上篇介绍了我对vue组件化的理解和父组件对子组件传值的方式,这篇介绍下常见的子传父和兄弟组件间的传值方式 目录 子组件向父组件传值 任意组件间的传值方式 正文 子组件向父组件传值 关键知识点:$ ...

  2. vue单页面应用刷新网页后vuex的state数据丢失的解决办法

    第一种方案 首先将数据保存在vuex的store中,同时将这些信息也保存在sessionStorage中.这里需要注意的是vuex中的变量是响应式的,而sessionStorage不是,当你改变vue ...

  3. BloomFilter中保存的数据量

    结果 /** * @author WeiJiQian * BF_CARDINAL_THRESHOLD BF_FALSE_POSITIVE_RATE 保存的数据量 * 100,0000 0.01 391 ...

  4. bugku 之 crypto:进制转换的python脚本

    题目如下: text.txt的内容: 知识点:python怎么做进制转换 除了自己按照计算方法写一遍进制转换,可以用python自带的强制转换: int(a,num) 其中,int是转换成十进制整数类 ...

  5. Gradle AndroidStudio内网离线构建配置踩坑记录

    最近一家新公司,由于办公环境都是在内网机上,导致在Unity导出android工程后,gradle离线构建也是第一次搞,花了一天时间也踩了一些坑,最后也终于构建成功了,这里记录下,方便大家少走些弯路. ...

  6. Python字符串常用的一些东西

    字符串的常用方法dir(str).查看某一方法的用法help(str.xxx). 1,索引和切片: 2,len():查看字符串的总长度. 3,+,拼接一个或多个字符串. 4,in,判定字符是否在字符串 ...

  7. [AspNetCore3.1] 使用Serilog记录日志

    用到的单词 Sink 接收器模块.输出方式.接收模块库.输出模块库 Diagnostic 诊断 Enricher 扩展器 embedded 嵌入式的 compact 紧凑的.简洁的 concept 概 ...

  8. Java“微服务”还能这么玩!

      "微服务"加个引号是因为这不是传统定义的微服务架构,顶多算是"小服务"架构,因为服务实例由集群节点统一加载,非独立部署.下面以图说明一下服务调用流程. 一. ...

  9. [leetcode]725. Split Linked List in Parts链表分块

    思路很简单  按时链表的题做起来很容易犯小错误,思维要缜密 还要多练习啊 做之前最好画算法框图 public ListNode[] splitListToParts(ListNode root, in ...

  10. Kafka 消费组消费者分配策略

    body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...