google-java-format
google-java-format copied to clipboard
Formatting code with intellij plugin and using the jar gives different results
If I format the following file using the intellij plugin (IDE version: Ultimate 2020.2.4
/ plugin version: google-java-format 1.9.0.0
. ) I get different result when compared to using the jar on the command line.
original example file:
package x;
public class test2 {
static final String LONG_STRING = "This is a long string that makes the total line length for this line over 100 characters";
static final String ANOTHER_LONG_STRING =
"This is another long string but this line is under 100 characters "
+ "and this line is also under 100 characters "
+ "but this line is over 100 characters and will not be reformatted to under 100 characters using the intellij plugin but will be reformatted to under 100 characters using the jar.";
public test2() {
int x=1;if(x==1){x=2;}else{x=3;}
}
}
after formatting using intellij plugin (using menu code / reformat code) I get this:
package x;
public class test2 {
static final String LONG_STRING =
"This is a long string that makes the total line length for this line over 100 characters";
static final String ANOTHER_LONG_STRING =
"This is another long string but this line is under 100 characters "
+ "and this line is also under 100 characters "
+ "but this line is over 100 characters and will not be reformatted to under 100 characters using the intellij plugin but will be reformatted to under 100 characters using the jar.";
public test2() {
int x = 1;
if (x == 1) {
x = 2;
} else {
x = 3;
}
}
}
And after formatting on the command line:
/tmp $ java -version
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9+11, mixed mode)
/tmp $ cksum ~/lib/google-java-format-1.9-all-deps.jar
2002751029 3404610 ~/lib/google-java-format-1.9-all-deps.jar
/tmp $ java -jar ~/lib/google-java-format-1.9-all-deps.jar ./test2.java
I get this:
package x;
public class test2 {
static final String LONG_STRING =
"This is a long string that makes the total line length for this line over 100 characters";
static final String ANOTHER_LONG_STRING =
"This is another long string but this line is under 100 characters and this line is also"
+ " under 100 characters but this line is over 100 characters and will not be"
+ " reformatted to under 100 characters using the intellij plugin but will be"
+ " reformatted to under 100 characters using the jar.";
public test2() {
int x = 1;
if (x == 1) {
x = 2;
} else {
x = 3;
}
}
}
Possibly related to #642
The CLI has a separate pass that reflows long strings literals (corresponding to --skip-reflowing-long-strings
):
https://github.com/google/google-java-format/blob/5104d0b27888f3bfab7113f5606374cda5632102/core/src/main/java/com/google/googlejavaformat/java/FormatFileCallable.java#L48
The IntelliJ plugin currently just runs the core formatter logic, not the string reflowing part.
Hi, we want to start using the plugin in IntelliJ and Eclipse IDE and format code on Save Actions and also in GitHub workflows using the axel-op/googlejavaformat-action. But, it gives different results and our GitHub workflow fails due to unformatted code, even if all code is formatted in the IDE. Is there any workaround for this in IntelliJ and Eclipse plugin or maybe a fix coming?
@eShorko don't hold your breath. I've added git hooks to format all code with the cli on commit to keep things consistent and force the same formatting for everything that is committed.
This is causing me grief at work as well.
too bad IntelliJ plugin still cannot line break cc https://github.com/google/google-java-format/issues/800