参考

1、https://segmentfault.com/a/1190000008659108

2、https://docs.sonarqube.org/display/DEV/Adding+Coding+Rules

3、https://docs.sonarqube.org/display/DEV/Adding+Coding+Rules+using+Java

4、https://docs.sonarqube.org/display/PLUG/Writing+Custom+Java+Rules+101

有两种方式可以扩展代码规则:但是Java只支持方式1

1、Writing coding rules using Java via a SonarQube plugin

2、Adding XPath rules directly through the SonarQube web interface

Writing coding rules in Java is a six-step process:

  • Create a SonarQube plugin.
  • Put a dependency on the API of the language plugin for which you are writing coding rules.
  • Create as many custom rules as required
  • Generate the SonarQube plugin (jar file)
  • Place this jar file in the SONARQUBE_HOME/extensions/plugins directory
  • Restart SonarQube server

下面详述这个过程:

1、把项目拉到本地

git clone git@github.com:shengulong/sonar-custom-rules-examples.git

2、里面有cobol/java/javascript/php/rpg的自定义规则,我们只关注java的

3、使用intellij idea打开项目java-custom-rules(github上,我已经调试通过)。这是一个maven项目的模板。

4、修改下pom文件:sonar的版本以及对应的java插件版本,这样sonar6.0以上版本都可以用这个插件

 <properties>
<!--<sonar.version>6.3</sonar.version>-->
<sonar.version>6.0</sonar.version>
<!-- this 6.3 is only required to be compliant with SonarLint and it is required
even if you just want to be compliant with SonarQube 5.6 -->
<!--<java.plugin.version>4.7.1.9272</java.plugin.version>-->
<java.plugin.version>4.5.0.8398</java.plugin.version>
<sslr.version>1.21</sslr.version>
<gson.version>2.6.2</gson.version>
</properties>

5、修改下文件,因为最初下载的报编译错误

 
a、注释掉//import org.sonar.plugins.java.Java;
b、修改函数,主要修改成下文的java字段,因为我们编辑的java规则插件
 @Override
public void define(Context context) {
NewRepository repository = context
.createRepository(REPOSITORY_KEY, "java")
.setName("MyCompany Custom Repository"); List<Class> checks = RulesList.getChecks();
new RulesDefinitionAnnotationLoader().load(repository, Iterables.toArray(checks, Class.class)); for (Class ruleClass : checks) {
newRule(ruleClass, repository);
}
repository.done();
}

6、其他修改参照github代码提交记录,然后按照https://docs.sonarqube.org/display/PLUG/Writing+Custom+Java+Rules+101的步骤操作即可,来张最终效果图:

sonar如何添加自定义JAVA规则的更多相关文章

  1. sonar之阿里巴巴java规则(p3c)

    今天为了打包生成sonar-p3c-pdm插件,折腾了半天.sonar版本v6.7.6,p3c源码地址https://gitee.com/jasonlong10/sonar-p3c-pmd-plugi ...

  2. JAVA规则引擎JSR-94笔札

    JAVA规则引擎JSR-94笔札 JSR-94 是由JCP(Java Community Process)组织所制定的java规则引擎API的java请求规范.它主要定义了规则引擎在java运行时的一 ...

  3. [Drools]JAVA规则引擎 -- Drools- 转http://blog.csdn.net/quzishen/article/details/6163012

    [Drools]JAVA规则引擎 -- Drools 标签: java引擎exceptiongetterstringsetter 2011-01-25 14:33 113340人阅读 评论(35) 收 ...

  4. Java规则引擎及JSR-94[转]

      规则引擎简介 Java规则引擎是推理引擎的一种,它起源于基于规则的专家系统.       Java规则引擎将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.Java规则引擎接 ...

  5. 【java规则引擎】之规则引擎解释

    转载:http://www.open-open.com/lib/view/open1417528754230.html 现实生活中,规则无处不在.法律.法规和各种制度均是:对于企业级应用来说,在IT技 ...

  6. Java规则引擎 Easy Rules

    1.  Easy Rules 概述 Easy Rules是一个Java规则引擎,灵感来自一篇名为<Should I use a Rules Engine?>的文章 规则引擎就是提供一种可选 ...

  7. Sonar Java 规则插件开发 (基于阿里开发手册)

    引言 最近在做Sonar静态代码扫描管理,以此顺手接了Sonar的插件开发,基于阿里开发手册进行开发,在整体开发过程中,其中还是遇到不少坑位,也以此给大家做相应借鉴官网Demo演示插件开发地址:htt ...

  8. 阿里巴巴java规则p3c结合sonar使用

    sonar插件位置: jar包放至$SONAR_HOME/extensions/plugins下,重启sonar即可 如何在sonarqube的pmd插件中整合阿里开发规范 alibaba p3c s ...

  9. JAVA规则引擎 -- Drools

    Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效. 本文所使用的de ...

随机推荐

  1. vue 开始开发

    1,引入vue.js文件 2,在body里用标签 编辑一个入口 <div id="app">{{msg}}</div> <-- 用双大括号 取数据显示 ...

  2. IE6/IE7下:inline-block不兼容的问题

    IE6/IE7下对display:inline-block的支持性不好.    1.inline元素的display属性设置为inline-block时,所有的浏览器都支持:    2.block元素 ...

  3. java中this的用法如:this.name=name

    package com.chensi; /** * 这个是为了搞懂那个 this.name = name的. * @author ZHL * */ public class ThisTestZhl { ...

  4. Python+Selenium 自动化实现实例-Css捕捉元素的几种方法

    #coding=utf-8 from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get("h ...

  5. CentOS 6.7下配置 yum 安装 Nginx

    CentOS 6.7下配置 yum 安装 Nginx. 转载:http://www.linuxidc.com/Linux/2016-07/133283.htm 第一步,在/etc/yum.repos. ...

  6. TCP连接复用

    转自网络:看到一陌生名词,记录一下 TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上.这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带 ...

  7. WCF+Windows2008&&sqlserver2008

    这些在我的文件和云盘当中也可以在csdn中查找

  8. YII2源码阅读:autoload_real.php 22~23行

    spl_autoload_register(array('ComposerAutoloaderInit32b8eb537f8e12e57c5e7bade69d01f0', 'loadClassLoad ...

  9. zoj 1375||poj 1230(贪心)

    Pass-Muraille Time Limit: 2 Seconds      Memory Limit: 65536 KB In modern day magic shows, passing t ...

  10. 【20181023T1】战争【反向并查集】

    题面 [错解] 好像是个树唉我真聪明 然后就开始树上乱搞 最后写了个O(过不了)的神奇算法 60pts [正解] 题目中只有删点而不加点,考虑倒过来并查集 维护一个并查集内的和顺手维护一下就好了 复杂 ...