我正在使用FreeMarker生成Java代碼,但由於它大部分是動態生成的,因此很難控制代碼的形成。Java代碼格式化
我想要得到格式良好的代碼。有沒有人知道一個lib或類似的Java代碼漂亮的打印機?
我正在使用FreeMarker生成Java代碼,但由於它大部分是動態生成的,因此很難控制代碼的形成。Java代碼格式化
我想要得到格式良好的代碼。有沒有人知道一個lib或類似的Java代碼漂亮的打印機?
我想我會使用Eclipse的CodeFormatter,就像這個傢伙:http://ssscripting.wordpress.com/2009/06/10/how-to-use-the-eclipse-code-formatter-from-your-code/
UPDATE: 結束了使用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);
}
您可以運行像astyle
你知道java中的一個庫,它也是這樣做的。我想要一個包含在我的項目中,並將所有生成的字符串傳遞給格式化程序。 – 2010-05-20 17:43:55
並且有一個java端口:http://sourceforge.net/projects/jastyle/ – 2010-05-21 16:13:25
一個格式化程序老爺車精美的作品。您可以使用它的CLI進行獨立使用。 Japlopy Console Plugin
你可以當你在Eclipse中編輯的.java文件格式化。 當你不編輯它時,它是否被格式化並不重要。
我從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的代碼生成工具,它反映了Java域類型爲查詢類型。所以序列化需求非常複雜。使用FreeMarker模板很簡單,沒有擴展。輸出中的定製過多,這比使用模板語言語法更好地控制Java。
這不是Codegen模塊的廣告。我只想指出,對於高度可定製的序列化FreeMarker可能無法擴展。
這些源代碼已移至https://source.mysema.com/svn/mysema/projects/deprecated/codegen/trunk – migu 2012-03-09 08:48:27
Google java格式對我來說非常完美。 https://github.com/google/google-java-format
行家構建之後,找到谷歌-java的格式-0.1-SNAPSHOT.jar在芯/目標文件夾,並嘗試java -jar google-java-format-0.1-SNAPSHOT.jar
看到使用信息。
最簡單的方法是將代碼粘貼到eclipse java IDE中,然後在您選擇的代碼上按Ctrl + f。這將以易於閱讀的形式格式化您的代碼。
http://stackoverflow.com/questions/996646/stand-alone-java-code-formatter-beautifier-pretty-printer – 2015-04-28 09:20:55