Intellij Plugin breaks method inlining and variable extraction from inside if condition
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- java
- Domínio
- developer-experience, tooling
Direção de pesquisa
Comece com a reprodução em Java no issue e investigue a interação da formatação do plugin IntelliJ com o inline de métodos e a extração de variáveis dentro de uma condição if. Reproduza a transformação com o plugin habilitado e compare-a com o resultado com o plugin desabilitado; considera-se concluído quando o refactoring não inserir mais um if (true) desnecessário, não relatar um erro nem deixar a formatação quebrada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Consider the following code and try inlining isEmpty2:
import java.util.Collection;
import java.util.List;
public class InliningWithJavaFormat {
static boolean isEmpty(Collection<?> c) {
return c == null || c.isEmpty();
}
static boolean isEmpty2(Collection<?> c) {
return isEmpty(c);
}
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
System.out.println("empty");
}
}
static class MyPojo {
Collection<String> getCollection() {
return List.of();
}
}
}
Not only does it fail (without reporting it), but it adds an additional if (true):
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
if (true) {
System.out.println("empty");
}
}
}
with the plugin disabled, it works:
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null) {
Collection<?> c = pojo.getCollection();
if (!isEmpty(c)) {
System.out.println("empty");
}
}
}
(not the ideal result but at least it does not fail)
In addition, when I do that on my actual project I get an error notification from the plugin and the formatting gets broken:
(I did not try to reproduce this with an MRE, I guess it is a side effect of the first issue)
- Linguagem predominante
- Java
- Estrelas
- 6.2k
- Forks
- 940
- Merge médio
- 5min
- PRs com merge (30d)
- 6
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de google/google-java-format
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
google/google-java-format#1094 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
google/google-java-format#1470 · 5 reações ·
Mantenedores costumam responder em até 1 dia
-
IndexOutOfBoundsException - Wrong formatted content when dealing with latex StringTalvez livre de novo @Amlan2000 assumiu há 55 dias e não há nenhum pull request aberto. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
google/google-java-format#1439 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
unused import removal leaves extra blank line between package declaration and class Javadoc / declarationTalvez já em andamento @arimu1 assumiu há 65 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
google/google-java-format#1436 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Eclipse
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
google/google-java-format#1428 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de google/google-java-format
Issues semelhantes
-
ASM is not up-to-dateAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 60/100
Mantenedores costumam responder em até 1 dia
-
[BUG] S3 CORS responses omit Access-Control-Allow-Credentials for matched originsTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
floci-io/floci#5369 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
securityHeaders replaces a route's own Content-Security-Policy (0.9.9; weakens embedders' pages)Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
sqlcipher/sqlcipher-android#97 · 1 comentário ·
-
area-integrations
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia