标签: structural-search

如何将@Deprecated添加到每个类和每个类的每个构造函数/方法?

我有一些遗留代码,我想标记所有这些和他们所有的方法,@Deprecated以便当我们去触摸它们时,我们可以删除这些注释,以便我们可以跟踪已经现代化的内容和仍然不好的内容.

我正在尝试使用,Structural Search/Replace似乎无法获得正确的模板.

搜索模板

class $Class$ { 
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}
Run Code Online (Sandbox Code Playgroud)

替换模板

@Deprecated
class $Class$ {
  @Deprecated
  $ReturnType$ $MethodName$($ParameterType$ $Parameter$) { $Stmt$; }
}
Run Code Online (Sandbox Code Playgroud)

但这会删除课堂上的其他所有内容.

@Deprecated
class OldAndCrusty {
  @Deprecated
   ( );
}
Run Code Online (Sandbox Code Playgroud)

这将剥离其匹配的所有类的所有可见性修饰符和最终修饰符.

如何替换这些内容并单独留下其余代码?

java intellij-idea structural-search

17
推荐指数
1
解决办法
2470
查看次数

IntelliJ IDEA:如何查找类的所有实例创建?

abstract class Base {}

class A extends Base
class B extends Base
Run Code Online (Sandbox Code Playgroud)

如何找到创建Base的代码中的所有位置?(也就是说,有新的A()或新的B())

更新
为了说清楚,以上只是一个例子.我对搜索任何类的对象创建感兴趣,包括我无法控制的第三方类.

intellij-idea structural-search

13
推荐指数
2
解决办法
4244
查看次数

如何跨文件提取方法?

在我的项目的所有java文件中,我想替换出现的:

myObject.getName() == null
Run Code Online (Sandbox Code Playgroud)

接着就,随即:

myObject.hasName()
Run Code Online (Sandbox Code Playgroud)

IntelliJ IDEA是否有任何行动或策略可以做到这一点?

  • 我希望它特定getName我的类的方法MyClass而不是替换代码,它引用getName其他类调用的方法.
  • 我希望它能找到尽可能多的匹配.它不应该关心额外的空格,换行符等.如果变量有另一个名称(如myObjobjX),它也应该工作.getObject().getName()也应该找到类似的电话.(搜索必须关注语义).
  • 我希望它快速而不是要求我逐个完成数百场比赛.

java refactoring intellij-idea structural-search

12
推荐指数
2
解决办法
419
查看次数

有没有办法在Resharper中使用注释禁用自定义模式

在Resharper中,可以通过注释禁用正常提示

Disable once with comment
Run Code Online (Sandbox Code Playgroud)

按下时上下文菜单中的选项 <ctrl-enter>

使用自定义结构搜索模式

http://blog.jetbrains.com/dotnet/2010/08/19/highlighting-custom-patterns-with-resharper/

我找不到办法做到这一点.上下文菜单中没有选项可禁用提示.

是否可以禁用带注释的自定义模式?

resharper visual-studio structural-search

11
推荐指数
1
解决办法
312
查看次数

如何使用Intellij Structural Search查找使用两个命名类的所有方法?

假设我有两个Java类,TradeType和InstrumentType.我知道在我的代码库中的某个地方有一个从TradeType映射到InstrumentType的方法.

我如何在Intellij中使用结构搜索来表示

"找到所有具有TradeType类型的参数并返回InstrumentType的方法"

intellij-idea structural-search

10
推荐指数
1
解决办法
2869
查看次数

使用IntelliJ Structural Search和Replace替换具有属性的getter

由于我正在使用的库中的更改,吸气剂被替换为直接访问该属性.例如:

public class MyLibraryClass {
  private String field;

  public String getField() { return field; }
}
Run Code Online (Sandbox Code Playgroud)

已经成为

public class MyLibraryClass {
  public String field;
}
Run Code Online (Sandbox Code Playgroud)

因此,我想使用IntelliJ的SSR用Bean属性替换getter调用.但是我已经陷入了如何使用正则表达式捕获组进行替换的问题.如果有另一个IntelliJ快捷方式可以做我想要的,我很乐意使用它.

以下SSR搜索参数找到了getter,但我似乎无法$property$在替换中使用捕获组.我试着\1\$1$1看到(使用反向引用中的IntelliJ)

我也尝试将搜索更改为$instance$.get$property$()(清除约束$property$但搜索没有返回任何结果.

  1. 如何访问捕获组($1)
  2. 是否可以$1在替换之前执行任何处理(以修复案例)

我注意到Script text接受Groovy代码的选项,但是我找不到关于此功能的任何文档.

SSR搜索模板 实例变量配置 属性变量配置

intellij-idea structural-search intellij-13

9
推荐指数
1
解决办法
1327
查看次数

如何在IDEA中创建结构替换以向类添加缺少的注释

我试图在IntelliJ IDEA(未来检查)中找出一个结构替换模板,用于在不删除任何其他现有注释的情况下向类/接口/枚举添加缺少的注释.

到目前为止,我尝试了几种以下的品种

搜索模板:

@$OtherPossibleAnnotation$ // min: 0, max: 0, text/regexp: AnnotationName, invert condition: true
@$MissingAnnotation$ // min: 0, max: 0, text/regexp: AnnotationName
class $C$ {
    $Content$ // min: 0, max: unlimited
}
Run Code Online (Sandbox Code Playgroud)

替换模板:

@$OtherPossibleAnnotation$
@AnnotationName
class $C$ {
    $Content$
}
Run Code Online (Sandbox Code Playgroud)

但我的尝试都没有奏效.我希望它能起作用

  • 使用任何现有的类注释,它还必须保持其潜在的价值,
  • 如果班上根本没有注释,
  • 在Idea 14以及Idea 15中,
  • 还应保持课堂内容不受影响.

所以例如以下

@ProductArea("Area A")
class A {
    public void method1() {
        System.out.println("Should remain");
    }
}
Run Code Online (Sandbox Code Playgroud)

应该换成

@ProductArea("Area A")
@AnnotationName
class A {
    public void method1() {
        System.out.println("Should remain");
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以建议吗?

java annotations replace intellij-idea structural-search

9
推荐指数
1
解决办法
317
查看次数

如何在Intellij中进行结构搜索和替换

我正在将Junit测试从Junit v3迁移到Junit v4.

我希望使用搜索并替换结构上的"srs"来在使用我最喜欢的IDE Intellij开始的所有方法之前添加@Test注释.

我只是不知道怎么做...我可以创建一个查询,找到没有注释的所有方法(在Intellij中有一个示例捆绑)但是当用于替换时,我的类只被替换为方法名字或没有找到.

也许正则表达式更容易:-)

/康斯坦丁

java ide intellij-idea structural-search

7
推荐指数
1
解决办法
3462
查看次数

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

在我的一个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代码库中.:-)

java android intellij-idea structural-search android-studio

7
推荐指数
1
解决办法
1133
查看次数

如何自动将注释从方法移动到字段?

我有大量 Java 类使用 JPA 属性访问而不是字段访问,将它们转换为使用字段访问(将注释从 getter 移动到字段)非常耗时。从数据库表重新生成它们也不是一种选择。

所以我正在考虑使用 IDEA 的结构搜索和替换来尝试自动移动注释。我想改变一个看起来像这样的类:

@Entity
@Table
public class Make {

    private Long id;
    private String makeCode;
    ...other properties, with more involved JPA annotations

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(length = 10, unique = true)
    public String getMakeCode() {
        return makeCode;
    }

    public void setMakeCode(String makeCode) {
        this.makeCode = makeCode;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

一个看起来像这样的:

@Entity
@Table
public class Make {

    @Id
    @GeneratedValue …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea structural-search

6
推荐指数
1
解决办法
345
查看次数