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

qnzebej0  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(270)

我正在寻找一个java库来格式化/美化Java代码片段。所以我一直在使用谷歌Java格式,但它似乎只适用于成熟的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;
}

但使用Google格式设置程序时,会返回以下错误:

error: class, interface, or enum expected

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

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

你知道怎么修吗?

unftdfkk

unftdfkk1#

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

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

相关问题