2014-06-06 6 views
8

Aufgrund von Änderungen in einer Bibliothek, die ich verwende, wurden die Getter durch direkten Zugriff auf die Eigenschaft ersetzt. ZB:Ersetzen Getters mit Eigenschaft mit IntelliJ Strukturelle Suche und Ersetzen

public class MyLibraryClass { 
    private String field; 

    public String getField() { return field; } 
} 

public class MyLibraryClass { 
    public String field; 
} 

Folglich hat sich wünschen würde ich IntelliJ SSR verwenden, um die Getter Anrufe mit der Bean-Eigenschaft zu ersetzen. Allerdings habe ich mich nicht daran gewöhnt, Regexp Capture-Gruppen für meinen Ersatz zu verwenden. Wenn es eine andere IntelliJ-Verknüpfung gibt, um das zu tun, was ich möchte, benutze ich es gerne.

Die folgenden SSR-Suchparameter finden die Getter, aber ich kann nicht in der Lage sein, die Erfassungsgruppe für $property$ im Ersatz zu verwenden. Ich habe versucht \1 und \$1 und $1 siehe (using backreferences in IntelliJ)

Ich habe versucht, die Suche auch auf $instance$.get$property$() zu wechseln (die Einschränkungen für $property$ Clearing aber die Suche ergab keine Ergebnisse.

  1. Wie kann ich Zugriff auf die Capture-Gruppe ($1)
  2. Ist es möglich, eine Verarbeitung auf $1 vor der Substitution durchzuführen (um den Fall zu beheben)

Ich bemerkte die Script text Option, die Groovy-Code akzeptiert, jedoch konnte ich keine Dokumentation zu dieser Funktion finden.

SSR search template instance variable config property variable config

Antwort

5

Put in der Ersatz-Vorlage $instance$.$field$. Diese Vorlage führt neue Variable field ein, die folgenden Skripttext enthalten sollte:

String name = property.methodExpression.referenceName.substring(3) 
name[0].toLowerCase() + name.substring(1) 
+0

Geweldige @ bas-leijdekkers! absolut hervorragend! – 62mkv

+0

für diejenigen, die ein paar Beispiele für strukturellen Ersatz suchen: https://gist.github.com/62mkv/d1cdbac42e225d157226b3f8337c84af – 62mkv