Java代码格式化
我使用FreeMarker生成java代码,但由于大部分代码是动态生成的,因此很难控制代码的形成Java代码格式化,java,formatting,coding-style,Java,Formatting,Coding Style,我使用FreeMarker生成java代码,但由于大部分代码是动态生成的,因此很难控制代码的形成 我想把代码格式化好。有人知道java代码的库或类似漂亮打印机的东西吗?您可以使用的或代码格式化程序来重新格式化生成的代码。您可以运行像Jalopy这样的格式化程序。您可以使用它的CLI进行独立使用 我想我会使用Eclipse的CodeFormatter,就像这个家伙: 更新: 最终使用了jastyle()。 下面是一个例子: public static String formatJavaCode(S
我想把代码格式化好。有人知道java代码的库或类似漂亮打印机的东西吗?您可以使用的或代码格式化程序来重新格式化生成的代码。您可以运行像Jalopy这样的格式化程序。您可以使用它的CLI进行独立使用 我想我会使用Eclipse的CodeFormatter,就像这个家伙: 更新: 最终使用了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);
}
您可以在Eclipse中编辑.java文件时对其进行格式化。
当您不编辑它时,它是否格式化并不重要。我从FreeMarker切换到我自己的Java源代码生成实用程序。可从此处访问源: 它的设计方式是,您只需调用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";
}
我开发了codegen实用程序,用于将Java域类型镜像为查询类型。因此序列化需求非常复杂。使用FreeMarker模板无法进行简单缩放。在输出中有太多的定制,用Java控制比用模板语言语法更好
这不是Codegen模块的广告。我只是想指出,对于高度可定制的序列化,FreeMarker可能无法扩展。谷歌java格式非常适合我。
maven构建之后,在核心/目标文件夹中找到google-java-format-0.1-SNAPSHOT.jar,然后尝试
java-jar google-java-format-0.1-SNAPSHOT.jar
查看使用信息。最简单的方法是将代码粘贴到eclipse java IDE中,并对所选代码执行ctrl+f组合键。这将以易于阅读的形式格式化代码。对于具有大量配置选项的独立命令行工具,您可以尝试:
它们都是免费的、开源的,并且可以不仅仅是java源代码(C++、C++、C等)格式。
,可以简单地在Eclipse中激活保存操作,并使用自己的或预定义的格式化程序。 只需在首选项中激活这两个选项:- 窗口->首选项->Java->代码样式->格式化程序
- 窗口->首选项->Java->编辑器->保存操作->格式化源代码(格式化所有行和导入)
但我想按程序进行。eclipse的代码格式化程序可以作为一个独立的库使用?理论上是的,但这不是一个简单的练习。但我相信jalopy formatter可以更容易地嵌入。是的,我的第一个实现是使用Eclipse的formatter完成的。但由于它的简单性,我最终用它进行了交换。你知道java中的一个库也有同样的功能吗。我希望在我的项目中包含一个,并将生成的所有字符串传递给格式化程序。源已移动到