如何以编程方式格式化Java代码片段



我正在寻找一个java库来格式化/美化java代码片段。因此,我一直在使用GoogleJava格式,但它似乎只适用于成熟的Java类,而不适用于代码片段。例如,以下代码片段已在线格式化,没有出现问题:

@Bean public ConfigurableServletWebServerFactory webServerFactory() {
JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
factory.setPort(9000);
factory.setContextPath("/myapp");
factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notfound.html"));
return factory;
}

但是使用谷歌格式化程序,会返回以下错误:

error: class, interface, or enum expected

我使用了以下代码来尝试解析它:

String formattedSource = new Formatter().formatSource(code);

知道怎么修吗?

创建自定义模板代码作为完整的编译单元,并在格式化后将模板移回代码段。

见下文

public String formatSnippet(String snippet) throws FormatterException {
final String CUNIT = "class code { public method() { /*;*/";
String fCode = new Formatter().formatSource(CUNIT + snippet + "/*;*/}}");
int startIndex = fCode.indexOf("/*;*/") + 5;
int endIndex = fCode.indexOf("/*;*/", startIndex) - 1;
return startIndex > 0 && endIndex > 0 && endIndex > startIndex ? fCode.substring(startIndex, endIndex) : snippet;
}

最新更新