Refatoração personalizada simples no IntelliJ

Esta pergunta é uma continuaçãopor esta.

Digamos que eu tenha aula Foo.

class Foo {
    protected String x = "x";

    public String getX() {
        return x;
    }
}

Eu tenho um programa que usa Foo e viola LoD (Lei de Deméter)

class Bar {
    protected Foo foo;

    public Bar() {
        this.foo = new Foo();
    }

    public Foo getFoo() {
        return foo;
    }
}

public static void main(String [] args) {
    Bar bar = new Bar();
    String x = bar.getFoo().getX(); 
}

Eu posso refatorar esse código para usar LoD em duas etapas.

⌥⌘m bar.getFoo().getX() ->getFooX(bar) (extrair para o método, também localize e substitua ocorrências)F6 getFooX(bar) ->bar.getFooX() (vá para o método de instância, também encontre e substitua ocorrências)

O programa que usaBar não viola mais o LoD.

class Bar {
    protected Foo foo;

    public Bar() {
        this.foo = new Foo();
    }

    public Foo getFoo() {
        return foo;
    }

    public String getFooX() {
        return foo.getX();
    }
}

public static void main(String [] args) {
    Bar bar = new Bar();
    String x = bar.getFooX();
}

Gostaria de saber se existe uma maneira de criar um método de refatoração personalizado no IntelliJ que consolide essas duas etapas em uma.

EDITAR Recebi uma resposta do JetBrains com um link para uma solicitação de recurso preexistente. Por favor vote nele se achar útil!

Olá Michael,

Parece que temos uma solicitação semelhante no YouTrack:https://youtrack.jetbrains.com/issue/IDEA-122400. Sinta-se livre para votar e deixar comentários.

Atenciosamente, Yaroslav Bedrov JetBrains

EDITAR Existe pelo menos uma maneira de inspecionar os problemas da Lei de Deméter.captura de tela http://i59.tinypic.com/2s80ft0.png

Aqui está uma essência que contém um perfil de inspeção que procurará apenas violações de LoD. Você podeimportá-lo para IntelliJ.

questionAnswers(1)

yourAnswerToTheQuestion