IntelliJ /结构搜索:删除仅调用super方法的无用方法

mre*_*elt 7 java android intellij-idea structural-search android-studio

在我的一个Android项目中(但不一定与Android绑定)我有很多方法调用,除了炸掉代码之外什么都不做,可以自动删除.例子:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

@Override
public void onDestroy() {
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何帮助我自动删除这些表达式的检查,所以我尝试了结构搜索.到目前为止我的尝试:我复制了"注释方法"的模板并进行了2次小改动.

  1. $ Annotation $更改为= 1,text =覆盖
  2. 使用occurrence = 1添加$ Statement $变量

模板代码:

class $Class$ {
    @$Annotation$( )
    $MethodType$ $MethodName$($ParameterType$ $ParameterName$) {
        $Statement$;
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好 - 它只是在体内找到一条线的方法.但是现在我想明确地搜索调用super方法的精确语句(有点像$ MethodName $的后引用),但它也返回超值(当不是void时).有任何想法吗?

我相信这将是一个非常有用的检查,可以集成到主IntelliJ代码库中.:-)

mre*_*elt 8

所以我最近发现IntelliJ的'空方法'检查实际上是在寻找这个.只是:

双班 - >按名称运行检查 - >空方法

方法只调用它的超级

概要是'方法只调用它的超级',但检查实际上寻找的不仅仅是这个,例如:

  • 该方法及其所有派生词都是空的
  • 此方法的所有实现都是空的
  • 该方法为空
  • 空方法重写空方法

根据您的情况,它可能找到比您想要的更多 - 并且重构试图删除超过我实际想要的.但通过快速的人工审查,你应该很高兴.:-)