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"};
}
}
在我们的项目中,我们在接口上有一些注释,用于生成一些客户端存根 类。我们在 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"};
}
}