摘要:原文鏈接如題,有的時(shí)候,我們會(huì)采用自動(dòng)生成代碼的方式來(lái)完成一些任務(wù),比如根據(jù)業(yè)務(wù)數(shù)據(jù)自動(dòng)生成調(diào)用的供用戶下載使用這樣自動(dòng)生成的代碼,如果未經(jīng)格式化處理,基本上是不可讀的正好,我們常用的,快捷鍵就能自動(dòng)格式化代碼那么,下面這段代碼,就是將的這
原文鏈接:https://gist.github.com/pfmiles/653c8b59e795698c867d
如題,有的時(shí)候,我們會(huì)采用自動(dòng)生成java代碼的方式來(lái)完成一些任務(wù),比如根據(jù)業(yè)務(wù)數(shù)據(jù)自動(dòng)生成調(diào)用api的sdk供用戶下載、使用;
這樣自動(dòng)生成的代碼,如果未經(jīng)格式化處理,基本上是不可讀的;
正好,我們常用的eclipse,快捷鍵"ctrl + shift + F"就能自動(dòng)格式化java代碼;
那么,下面這段代碼,就是將eclipse的這個(gè)功能模塊給“摳”出來(lái)多帶帶調(diào)用,達(dá)到格式化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; /** * 調(diào)用eclipse jdt core對(duì)生成的java源碼進(jìn)行格式化 * * @author pf-miles 2014-4-16 下午2:48:29 */ public class JavaCodeFormattingUtil { /** * 嘗試對(duì)傳入的JavaSourceFile格式化,此操作若成功則將改變傳入對(duì)象的內(nèi)容 */ @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();”這一行先不必關(guān)心"src"是個(gè)什么對(duì)象,那是我們自定義的東西,這里的重點(diǎn)只需要得到“code”,然后后面的操作完全是針對(duì)"code"這個(gè)string形式的java代碼而做;
其中還能對(duì)格式化屬性做一些配置, 如:
VERSION_1_6是指對(duì)應(yīng)的java版本;
而DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT則指一行最多到多長(zhǎng)就會(huì)自動(dòng)換行;
DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR是說(shuō)想要使用什么字符來(lái)做縮進(jìn),一般都選擇空格或tab;
這些都可以根據(jù)需求隨意調(diào)整;
當(dāng)然,上述這些代碼的運(yùn)行,是需要依賴eclipse的格式化模塊功能庫(kù)的,這個(gè)庫(kù),目前沒(méi)有統(tǒng)一的依賴地址;可以根據(jù)類名上網(wǎng)隨便搜一個(gè)可用的maven倉(cāng)庫(kù)依賴即可
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64303.html
摘要:強(qiáng)大的表單驗(yàn)證前端掘金支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證,以及。面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別的種設(shè)計(jì)模式全解析后端掘金一設(shè)計(jì)模式的分類總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類創(chuàng)建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。 強(qiáng)大的 Angular 表單驗(yàn)證 - 前端 - 掘金Angular 支持非常強(qiáng)大的內(nèi)置表單驗(yàn)證,maxlength、minlength、required 以及 patt...
摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...
摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...
摘要:今天我來(lái)和大家分享一下以及自動(dòng)化生成工具的開(kāi)發(fā)經(jīng)驗(yàn)。代碼生成工具接著講講代碼生成工具,對(duì)于來(lái)講,有官方的代碼生成器,還有其他的同類開(kāi)源項(xiàng)目比如。現(xiàn)有的代碼生成器沒(méi)有可以開(kāi)箱即用的,都需要去進(jìn)行不少的修改。 前言 在開(kāi)發(fā)工作中,經(jīng)常會(huì)遇到新產(chǎn)品、服務(wù)上線后,需要將其 API 編寫不同語(yǔ)言的 SDK。但不同語(yǔ)言 SDK 中都有很大一部分內(nèi)容是用來(lái)進(jìn)行 API 的描述,而且這部分代碼量是最大...
閱讀 2169·2021-11-12 10:36
閱讀 2158·2021-09-03 10:41
閱讀 2784·2021-08-19 10:57
閱讀 1247·2021-08-17 10:14
閱讀 1500·2019-08-30 15:53
閱讀 1220·2019-08-30 15:43
閱讀 983·2019-08-30 13:16
閱讀 2995·2019-08-29 16:56