我有一些遗留代码,我想标记所有这些和他们所有的方法,@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)
这将剥离其匹配的所有类的所有可见性修饰符和最终修饰符.
abstract class Base {}
class A extends Base
class B extends Base
Run Code Online (Sandbox Code Playgroud)
如何找到创建Base的代码中的所有位置?(也就是说,有新的A()或新的B())
更新
为了说清楚,以上只是一个例子.我对搜索任何类的对象创建感兴趣,包括我无法控制的第三方类.
在我的项目的所有java文件中,我想替换出现的:
myObject.getName() == null
Run Code Online (Sandbox Code Playgroud)
接着就,随即:
myObject.hasName()
Run Code Online (Sandbox Code Playgroud)
IntelliJ IDEA是否有任何行动或策略可以做到这一点?
getName我的类的方法MyClass而不是替换代码,它引用getName其他类调用的方法.myObj或objX),它也应该工作.getObject().getName()也应该找到类似的电话.(搜索必须关注语义).在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/
我找不到办法做到这一点.上下文菜单中没有选项可禁用提示.
是否可以禁用带注释的自定义模式?
假设我有两个Java类,TradeType和InstrumentType.我知道在我的代码库中的某个地方有一个从TradeType映射到InstrumentType的方法.
我如何在Intellij中使用结构搜索来表示
"找到所有具有TradeType类型的参数并返回InstrumentType的方法"
由于我正在使用的库中的更改,吸气剂被替换为直接访问该属性.例如:
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在替换之前执行任何处理(以修复案例)我注意到Script text接受Groovy代码的选项,但是我找不到关于此功能的任何文档.

我试图在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)
但我的尝试都没有奏效.我希望它能起作用
所以例如以下
@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)
有人可以建议吗?
我正在将Junit测试从Junit v3迁移到Junit v4.
我希望使用搜索并替换结构上的"srs"来在使用我最喜欢的IDE Intellij开始的所有方法之前添加@Test注释.
我只是不知道怎么做...我可以创建一个查询,找到没有注释的所有方法(在Intellij中有一个示例捆绑)但是当用于替换时,我的类只被替换为方法名字或没有找到.
也许正则表达式更容易:-)
/康斯坦丁
在我的一个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次小改动.
模板代码:
class $Class$ {
@$Annotation$( )
$MethodType$ $MethodName$($ParameterType$ $ParameterName$) {
$Statement$;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这么好 - 它只是在体内找到一条线的方法.但是现在我想明确地搜索调用super方法的精确语句(有点像$ MethodName $的后引用),但它也返回超值(当不是void时).有任何想法吗?
我相信这将是一个非常有用的检查,可以集成到主IntelliJ代码库中.:-)
我有大量 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 ×6
android ×1
annotations ×1
ide ×1
intellij-13 ×1
refactoring ×1
replace ×1
resharper ×1