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

该博客介绍了如何使用阿里巴巴PMD扩展规则来限制Java方法参数数量。`MethodParamsNumRule`类继承自`AbstractAliRule`,检查方法参数是否超过5个,若超过则抛出警告。配置文件中定义了规则`MethodParamsNumRule`,设置了错误消息和优先级,并提供了代码示例。此外,还给出了错误消息的两种翻译。执行`mvn clean package -Dmaven.test.skip=true`打包,然后通过PMD工具进行验证,展示出规则的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要涉及三部分

第一部分

 

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值