google-java-format icon indicating copy to clipboard operation
google-java-format copied to clipboard

Formatting code with intellij plugin and using the jar gives different results

Open Allc9001 opened this issue 4 years ago • 7 comments

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;
    }
  }
}

Allc9001 avatar Feb 19 '21 16:02 Allc9001

Possibly related to #642

cies avatar Aug 30 '21 08:08 cies

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.

cushon avatar Aug 30 '21 22:08 cushon

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 avatar Jun 01 '22 20:06 eShorko

@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.

Allc9001 avatar Jul 27 '22 11:07 Allc9001

This is causing me grief at work as well.

mdhirsch avatar Sep 07 '22 20:09 mdhirsch

too bad IntelliJ plugin still cannot line break cc https://github.com/google/google-java-format/issues/800

ssh352 avatar Nov 08 '23 07:11 ssh352