Intellij-Plugin:实现方法时如何防止Intellij复制注解

Intellij-Plugin: How to prevent Intellij to copy annotations when implementing methods

在我们的项目中,我们在接口上有一些注释,用于生成一些客户端存根 类。我们在 intellij-plugin 中也有自己的代码检查。

public interface BlubberRemoteService {

  @RpcMethod(fc = "01")
  @RpcDataTable(name="return")
  String doTheTwist(@RpcDataTable(name = "param1") String param1);

如果我使用 Intellij 的 实现方法 操作,它会复制参数的注释:

public class BlubberRemoteServiceBean implements BlubberRemoteService {

  @Override
  public String doTheTwist(@RpcDataTable(name = "param1") String param1) {
    return null;
  }

如何防止Intellij将参数注解复制到实现方法中。那里没有用,因为只有接口的注释用于生成客户端存根。

可以通过在 plugin.xml:

中注册 OverrideImplementsAnnotationHandler 来阻止注释的创建
public class CustomImplementsAnnotationHandler implements OverrideImplementsAnnotationsHandler {

  @Override
  public String[] getAnnotations(Project project) {
    return new String[]{};
  }

  @Override
  public String[] annotationsToRemove(Project project, @NotNull String fqName) {
    return new String[] {"package.RpcDataTable"};
  }
}