styleguide icon indicating copy to clipboard operation
styleguide copied to clipboard

Java style for Eclipse formats imports incorrectly

Open donce opened this issue 7 years ago • 5 comments

From https://google.github.io/styleguide/javaguide.html#s3.3.3-import-ordering-and-spacing:

If there are both static and non-static imports, a single blank line separates the two blocks.

Now, all imports are in a single block:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.net.URI;
import java.util.Collections;
import org.eclipse.core.runtime.CoreException;
import org.junit.Test;

Empty line should be left between static and non-static imports, so it should be like this:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

import java.net.URI;
import java.util.Collections;
import org.eclipse.core.runtime.CoreException;
import org.junit.Test;

This formatting is done by this line in config:

<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="0"/>

The problem is that Eclipse doesn't seem to support custom spacing between static and non-static groups.

donce avatar Sep 06 '17 11:09 donce

Is there a workaround available besides running the formatter outside of eclipse?

nicolai86 avatar Mar 23 '18 19:03 nicolai86

Using IntelliJ? :D

donce avatar Mar 23 '18 20:03 donce

For those who still comes to this issue for solution, here is how to Organize Import should be set up:

  • In Organize Import, keep only 2 groups, one for all static and one for everything else
  • In Formatter, Blank lines#Between import groups set 1. (the preview window does not organize imports, that's fine) image image Works in Eclipse Photon

mkolesnikov avatar Jan 26 '19 16:01 mkolesnikov

Thanks @mkolesnikov for the workaround. It helped me out organize import groups on my project. I also used your second workaround to add a blank line between import groups. I think GoogleStyle formatting profile defined on eclipse-java-google-style.xml should have this value defined, so it wouldn't be necessary to change it after import. Is it possible to add it?

MarceloLeite2604 avatar Oct 30 '19 14:10 MarceloLeite2604

Just stumbled upon this problem. Indeed, this would be a nice and easy change: just set <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/> instead of 0 currently, here.

oliviercailloux avatar Feb 24 '21 23:02 oliviercailloux