分享代码片段:如何对自动生成的java代码做自动格式化,以达到接近手写的效果

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了分享代码片段:如何对自动生成的java代码做自动格式化,以达到接近手写的效果脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

原文链接:https://gist.github.com/pfmiles/653c8b59e795698c867d

如题,有的时候,我们会采用自动生成java代码的方式来完成一些任务,比如根据业务数据自动生成调用api的sdk供用户下载、使用;
这样自动生成的代码,如果未经格式化处理,基本上是不可读的;

正好,我们常用的eclipse,快捷键"ctrl + shift + F"就能自动格式化java代码;
那么,下面这段代码,就是将eclipse的这个功能模块给“抠”出来单独调用,达到格式化java代码的目的:

package test;  import java.util.Map;  import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.ToolFactory; import org.eclipse.jdt.core.formatter.CodeFormatter; import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.text.edITs.TextEdit;  /**  * 调用eclipse jdt core对生成的java码进行格式化  *   * @author pf-miles 2014-4-16 下午2:48:29  */ public class JavaCodeFormattingUtil {      /**      * 尝试对传入的JavaSourceFile格式化,此操作若成功则将改变传入对象的内容      */     @SupPressWarnings({ "rawtyPEs", "unchecked" })     public static void tryFormat(JavaSourceFile src) {         Map m = DefaultCodeFormatterConstants.getEclipsedefaultsettings();         m.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_6);         m.put(JavaCore.COMPILER_COdegEN_TargET_PLATFORM, JavaCore.VERSION_1_6);         m.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_6);         m.put(DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT, "160");         m.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE);          String code = null;         IDocument doc = null;         try {             code = src.getcharContent(true).toString();             CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(m);             TextEdit textEdit = codeFormatter.format(CodeFormatter.K_UNKNOWN, code, 0, code.length(), 0, null);             if (textEdit != null) {                 doc = new Document(code);                 textEdit.apply(doc);                 src.setCode(doc.get());             }         } catch (Exception e) {             throw new RuntimeException("Error occured while formatting code: " + src.toUri(), e);         }     } } 

其中“code = src.getCharContent(true).toString();”这一行先不必关心"src"是个什么对象,那是我们自定义的东西,这里的重点只需要得到“code”,然后后面的操作完全是针对"code"这个string形式的java代码而做;

其中还能对格式化属性做一些配置, 如:
VERSION_1_6是指对应的java版本;
而DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT则指一行最多到多长就会自动换行;
DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR是说想要使用什么字符来做缩进,一般都选择空格或tab;
这些都可以根据需求随意调整

当然,上述这些代码的运行,是需要依赖eclipse的格式化模块功能库的,这个库,目前没有统一的依赖地址;可以根据类名上网随便搜一个可用的maven仓库依赖即可

脚本宝典总结

以上是脚本宝典为你收集整理的分享代码片段:如何对自动生成的java代码做自动格式化,以达到接近手写的效果全部内容,希望文章能够帮你解决分享代码片段:如何对自动生成的java代码做自动格式化,以达到接近手写的效果所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。