本地代码-gitlab-sonar一条龙(5)-[p3c-pmd]创建自定义规则

主要涉及三部分

第一部分

 

package com.alibaba.p3c.pmd.lang.java.rule.extend;

import com.alibaba.p3c.pmd.lang.java.rule.AbstractAliRule;
import net.sourceforge.pmd.lang.java.ast.ASTFormalParameters;

/**
 * @author steven
 * @date 2021/11/24
 */
public class MethodParamsNumRule extends AbstractAliRule  {

  private static final int PARAMSNUM = 5;

  @Override
  public Object visit(ASTFormalParameters node, Object data) {
    if (node.jjtGetNumChildren() > PARAMSNUM) {
      addViolationWithMessage(data, node, "java.extend.MethodParamsNumRule.rule.msg");
    }
    ;
    return super.visit(node, data);
  }
}


第二部分

<?xml version="1.0"?>

<ruleset name="AlibabaJavaExtends" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
  <description>AlibabaJavaExtends</description>

  <!-- 方法的参数 -->
  <rule name="MethodParamsNumRule"
    language="java"
    message="java.extend.MethodParamsNumRule.rule.msg"
    class="com.alibaba.p3c.pmd.lang.java.rule.extend.MethodParamsNumRule">
    <priority>2</priority>
    <example>
      <![CDATA[
   public class Example {
 public void fn(int a, int b, int c,int d, int f, int g) {
     dosomething();
 }
}
  ]]>
    </example>
  </rule>
</ruleset>

 第三部分

    <!--extend-->
    <entry key="java.extend.MethodParamsNumRule.rule.msg">
        <![CDATA[方法入参超过5个,请以对象方式传入!]]>
    </entry>

 

    <!--extend-->
    <entry key="java.extend.MethodParamsNumRule.rule.msg">
        <![CDATA[method params are more than 5!]]>
    </entry>

 

打包:mvn clean package -Dmaven.test.skip=true

验证

拷贝至某一目录

 

java -cp p3c-pmd-2.1.1-jar-with-dependencies.jar net.sourceforge.pmd.PMD -d  ./  -R rulesets/java/ali-extend.xml

效果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值