2010-05-20 72 views
5

Tôi đang sử dụng FreeMarker để tạo mã java, nhưng vì phần lớn nó được tạo động nên khó kiểm soát việc tạo mã.Định dạng mã Java

Tôi muốn nhận mã được định dạng tốt. Có ai biết một lib hoặc một cái gì đó giống như một máy in đẹp cho mã java?

+0

http://stackoverflow.com/questions/996646/stand-alone-java-code-formatter-beautifier-pretty-printer –

Trả lời

0

Tôi đoán tôi sẽ sử dụng CodeFormatter của Eclipse, giống như anh chàng này: http://ssscripting.wordpress.com/2009/06/10/how-to-use-the-eclipse-code-formatter-from-your-code/

UPDATE: đã kết thúc bằng jastyle (http://sourceforge.net/projects/jastyle/). đây là một ví dụ:

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

Bạn có thể sử dụng mã định dạng Eclipse hoặc Jalopy để định dạng lại mã được tạo.

+0

nhưng tôi muốn làm điều đó theo chương trình. mã định dạng của eclipse có thể được sử dụng như một lib độc lập? –

+0

Về mặt lý thuyết có, nhưng sẽ không phải là một bài tập tầm thường. Nhưng tôi tin rằng jalopy định dạng có thể được nhúng dễ dàng hơn nhiều. –

+0

có, triển khai đầu tiên của tôi đã được thực hiện bằng cách sử dụng trình định dạng của Eclipse. nhưng tôi đã kết thúc trao đổi với http: // sourceforge.net/projects/jastyle/vì sự đơn giản của nó. –

1

Bạn có thể chạy một chương trình định dạng như astyle

+0

Bạn có biết một lib trong java không giống nhau. tôi muốn một trong những bao gồm trong dự án của tôi, và vượt qua tất cả các chuỗi tạo ra để định dạng. –

+1

và có một cổng java: http://sourceforge.net/projects/jastyle/ –

0

Bạn có thể định dạng nó khi bạn chỉnh sửa file java trong Eclipse. Khi bạn không chỉnh sửa nó, nó không quan trọng nếu nó được định dạng hay không.

0

Tôi đã chuyển từ FreeMarker sang tiện ích tạo mã nguồn Java của riêng mình. Các nguồn có thể truy cập từ đây: https://source.mysema.com/svn/mysema/projects/codegen/trunk/

Nó được thiết kế theo cách bạn chỉ cần gọi API và đầu ra được định dạng đúng. Dưới đây là một ví dụ:

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(); 

nào biến thành

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

} 

tôi phát triển các tiện ích codegen cho Querydsl mà phản ánh loại miền Java thành các loại truy vấn. Vì vậy, nhu cầu tuần tự hóa rất phức tạp. Sử dụng các mẫu FreeMarker đơn giản không được mở rộng. Có quá nhiều tùy chỉnh trong đầu ra, tốt hơn là kiểm soát trong Java so với cú pháp ngôn ngữ mẫu.

Đây không phải là quảng cáo cho mô-đun Codegen. Tôi chỉ muốn làm cho điểm mà cho serialization tùy biến cao FreeMarker có thể không quy mô.

+0

Các nguồn đã được chuyển đến https://source.mysema.com/svn/mysema/projects/deprecated/codegen/trunk – migu

1

Định dạng java của Google hoạt động hoàn hảo cho tôi. https://github.com/google/google-java-format

Sau maven xây dựng, xác định vị trí google-java-format-0,1-SNAPSHOT.jar trong thư mục core/mục tiêu, và cố gắng java -jar google-java-format-0.1-SNAPSHOT.jar để xem thông tin sử dụng.

0

Cách tiếp cận đơn giản nhất là dán mã của bạn vào Eclipse java eclipse và thực hiện ctrl + f trên mã đã chọn của bạn. sẽ định dạng mã của bạn ở dạng dễ đọc.