Java代码格式

时间:2010-05-20 17:21:02

标签: java formatting coding-style

我正在使用FreeMarker生成java代码,但由于大部分是动态生成的,因此很难控制代码的形成。

我想让代码格式化得很好。有没有人知道lib或类似于java代码的漂亮打印机?

10 个答案:

答案 0 :(得分:2)

Google java格式非常适合我。 https://github.com/google/google-java-format

在maven构建之后,在core / target文件夹中找到google-java-format-0.1-SNAPSHOT.jar,然后尝试java -jar google-java-format-0.1-SNAPSHOT.jar查看使用情况信息。

答案 1 :(得分:1)

您可以使用EclipseJalopy代码格式化程序重新格式化生成的代码。

答案 2 :(得分:1)

您可以运行astyle

等格式化程序

答案 3 :(得分:1)

Jalopy工作得很漂亮。您可以使用它的CLI进行独立使用。 Japlopy Console Plugin

答案 4 :(得分:0)

我想我会使用Eclipse的CodeFormatter,就像这个人:http://ssscripting.wordpress.com/2009/06/10/how-to-use-the-eclipse-code-formatter-from-your-code/

<强>更新 最后使用jastyle(http://sourceforge.net/projects/jastyle/)。 这是一个例子:

public static String formatJavaCode(String code) throws Exception {
    ASFormatter formatter = new ASFormatter();

    // bug on lib's implementation. reported here: http://barenka.blogspot.com/2009/10/source-code-formatter-library-for-java.html
    code.replace("{", "{\n");

    Reader in = new BufferedReader(new StringReader(code));
    formatter.setJavaStyle();
    in.close();
    return FormatterHelper.format(in,formatter);
}

答案 5 :(得分:0)

您可以在Eclipse中编辑.java文件时对其进行格式化。 如果不编辑它,它是否格式化无关紧要。

答案 6 :(得分:0)

我从FreeMarker切换到我自己的Java源代码生成实用程序。可以从这里访问来源: https://source.mysema.com/svn/mysema/projects/codegen/trunk/

它的设计方式使您只需调用API并且输出格式正确。这是一个例子:

    JavaWriter writer = new JavaWriter(new StringWriter());   
    writer.beginClass("FieldTests");
    writer.privateField("String", "privateField");
    writer.privateStaticFinal("String", "privateStaticFinal", "\"val\"");
    writer.protectedField("String","protectedField");
    writer.field("String","field");
    writer.publicField("String","publicField");
    writer.publicStaticFinal("String", "publicStaticFinal", "\"val\"");
    writer.publicFinal("String", "publicFinalField");
    writer.publicFinal("String", "publicFinalField2", "\"val\"");        
    writer.end();

哪个变成了

public class FieldTests {

    private String privateField;

    private static final String privateStaticFinal = "val";

    protected String protectedField;

    String field;

    public String publicField;

    public static final String publicStaticFinal = "val";

    public final String publicFinalField;

    public final String publicFinalField2 = "val";

}

我为Querydsl开发了codegen实用程序,它将Java域类型镜像为查询类型。因此序列化需求非常复杂。使用FreeMarker模板简单无法扩展。输出中的定制过多,在Java中控制比模板语言语法更好。

这不是Codegen模块的广告。我只是想说明,对于高度可定制的序列化,FreeMarker可能无法扩展。

答案 7 :(得分:0)

最简单的方法是将您的代码粘贴到eclipse java IDE中,然后对所选代码执行ctrl + f。这将以易于阅读的形式格式化您的代码。

答案 8 :(得分:0)

对于具有大量配置选项以适合您的代码格式样式的独立命令行工具,您可以尝试:

它们都是免费的开放源代码,并且不仅可以格式化Java源代码(C,C ++,C#等)

答案 9 :(得分:0)

您可以简单地在eclipse中激活保存操作,并使用自己的或预定义的格式化程序。

只需同时激活两个首选项:

  • 窗口->首选项-> Java->代码样式->格式化程序

还激活保存操作:

  • 窗口->首选项-> Java->编辑器->保存操作->格式化源代码(格式化所有行和导入)

Code Formatter | Save Action