styleguide
styleguide copied to clipboard
Java style for Eclipse formats imports incorrectly
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.
Is there a workaround available besides running the formatter outside of eclipse?
Using IntelliJ? :D
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)
Works in Eclipse Photon
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?
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.