2014-06-06 22 views
8

A causa di modifiche in una libreria che sto utilizzando, i getter sono stati sostituiti con accesso diretto alla proprietà. Ad esempio:Sostituisce getter con proprietà con Ricerca strutturale IntelliJ e Sostituisci

public class MyLibraryClass { 
    private String field; 

    public String getField() { return field; } 
} 

è diventato

public class MyLibraryClass { 
    public String field; 
} 

conseguenza che avrei voluto usare SSR di IntelliJ di sostituire le chiamate getter con la proprietà Bean. Tuttavia, sono rimasto bloccato su come utilizzare i gruppi di acquisizione regexp per la mia sostituzione. Se c'è un'altra scorciatoia IntelliJ per fare ciò che voglio, sono felice di usarlo.

I seguenti parametri di ricerca SSR trovano i getter, ma non riesco a essere in grado di utilizzare il gruppo di cattura per $property$ nella sostituzione. Ho provato \1 e \$1 e $1 See (using backreferences in IntelliJ)

Ho anche provato a cambiare la ricerca a $instance$.get$property$() (compensazione dei vincoli per $property$ ma la ricerca non ha prodotto risultati.

  1. Come posso accedere al gruppo di acquisizione ($1)
  2. E 'possibile effettuare alcuna elaborazione su $1 prima sostituzione (per risolvere il caso)

Ho notato l'opzione Script text che accetta il codice Groovy, tuttavia non sono riuscito a trovare alcuna documentazione su questa funzione.

SSR search template instance variable config property variable config

risposta

5

Put nel modello di sostituzione $instance$.$field$. Questo modello introduce la nuova variabile field che dovrebbe contenere il seguente testo dello script:

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

Geweldige @ bas-leijdekkers! assolutamente eccezionale! – 62mkv

+0

per coloro che cercano altri esempi di sostituzione strutturale: https://gist.github.com/62mkv/d1cdbac42e225d157226b3f8337c84af – 62mkv

Problemi correlati