代碼生成方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)領(lǐng)域,特別涉及一種代碼生成方法及裝置。
【背景技術(shù)】
[0002]隨著計算機(jī)技術(shù)的快速發(fā)展,出現(xiàn)了越來越多諸如即時通訊、游戲等互聯(lián)網(wǎng)業(yè)務(wù),進(jìn)而也衍生出了越來越多用于處理這些業(yè)務(wù)的業(yè)務(wù)系統(tǒng)。每個業(yè)務(wù)系統(tǒng)可能會包括多個不同的功能模塊,每個功能模塊可以將所需的數(shù)據(jù)存儲在多張數(shù)據(jù)表中,因此,開發(fā)人員在開發(fā)該業(yè)務(wù)系統(tǒng)時,需要針對每個功能模塊的多張數(shù)據(jù)表分別編寫用于描述和定位每張數(shù)據(jù)表的代碼,以便業(yè)務(wù)系統(tǒng)在運(yùn)行中能夠通過每張數(shù)據(jù)表的代碼,從每張數(shù)據(jù)表中讀數(shù)據(jù)、寫數(shù)據(jù)或者刪除數(shù)據(jù)。
[0003]而對于不同的數(shù)據(jù)表,從數(shù)據(jù)表中讀數(shù)據(jù)、寫數(shù)據(jù)或者刪除數(shù)據(jù)的過程基本相同,因此,為了提高業(yè)務(wù)系統(tǒng)的開發(fā)效率,開發(fā)人員可以通過代碼生成器,為每張數(shù)據(jù)表分別生成代碼。之后,開發(fā)人員可以根據(jù)該業(yè)務(wù)系統(tǒng)的實際需求,對生成的代碼進(jìn)行修改,完成該業(yè)務(wù)系統(tǒng)的開發(fā)。
[0004]隨著該業(yè)務(wù)系統(tǒng)的運(yùn)行,當(dāng)確定該業(yè)務(wù)系統(tǒng)中數(shù)據(jù)表的結(jié)構(gòu)不能滿足需求時,開發(fā)人員可以對該數(shù)據(jù)表的結(jié)構(gòu)進(jìn)行修改,之后,再通過代碼生成器為該數(shù)據(jù)表生成新代碼,而生成的新代碼中覆蓋了開發(fā)人員之前基于該業(yè)務(wù)系統(tǒng)的實際需求進(jìn)行修改的代碼,此時,為了滿足該業(yè)務(wù)系統(tǒng)的實際需求,開發(fā)人員需要再次對生成的新代碼進(jìn)行修改,操作比較復(fù)雜,降低了代碼生成效率。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種代碼生成方法及裝置。所述技術(shù)方案如下:
[0006]一方面,提供了一種代碼生成方法,所述方法包括:
[0007]當(dāng)接收到代碼生成指令時,根據(jù)所述代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,判斷是否已存儲數(shù)據(jù)表的歷史代碼文件;
[0008]如果已存儲所述數(shù)據(jù)表的歷史代碼文件,則將所述歷史代碼文件轉(zhuǎn)換成第一抽象語法樹;
[0009]根據(jù)所述數(shù)據(jù)表標(biāo)識對應(yīng)的數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成第二抽象語法樹;
[0010]根據(jù)所述第一抽象語法樹與所述第二抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0011]可選地,所述根據(jù)所述代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,判斷是否已存儲數(shù)據(jù)表的歷史代碼文件,包括:
[0012]根據(jù)所述代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,獲取數(shù)據(jù)表的代碼文件存儲路徑;
[0013]如果所述代碼文件存儲路徑中存儲有代碼文件,則確定已存儲所述數(shù)據(jù)表的歷史代碼文件,否則,確定沒有存儲所述數(shù)據(jù)表的歷史代碼文件。
[0014]可選地,所述根據(jù)所述數(shù)據(jù)表標(biāo)識對應(yīng)的數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成第二抽象語法樹,包括:
[0015]根據(jù)所述數(shù)據(jù)表標(biāo)識,獲取對應(yīng)的數(shù)據(jù)表屬性信息;
[0016]根據(jù)所述數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成所述數(shù)據(jù)表的標(biāo)準(zhǔn)代碼;
[0017]將所述數(shù)據(jù)表的標(biāo)準(zhǔn)代碼轉(zhuǎn)換成第二抽象語法樹。
[0018]可選地,所述根據(jù)所述第一抽象語法樹與所述第二抽象語法樹,生成所述數(shù)據(jù)表的代碼,包括:
[0019]從所述第一抽象語法樹包括的方法中,獲取與所述第二抽象語法樹包括的方法不同的方法;
[0020]從所述第一抽象語法樹包括的成員變量中,獲取與所述第二抽象語法樹包括的成員變量不同的成員變量;
[0021 ] 將獲取到的方法和獲取到的成員變量添加到所述第二抽象語法樹中,得到新抽象語法樹;
[0022]根據(jù)所述新抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0023]可選地,所述根據(jù)所述第一抽象語法樹與所述第二抽象語法樹,生成所述數(shù)據(jù)表的代碼,包括:
[0024]從所述第二抽象語法樹包括的方法中,獲取與所述第一抽象語法樹包括的方法不同的方法;
[0025]從所述第二抽象語法樹包括的成員變量中,獲取與所述第一抽象語法樹包括的成員變量不同的成員變量;
[0026]將獲取到的方法和獲取到的成員變量添加到所述第一抽象語法樹中,得到新抽象語法樹;
[0027]根據(jù)所述新抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0028]另一方面,提供了一種代碼生成裝置,所述裝置包括:
[0029]判斷模塊,用于當(dāng)接收到代碼生成指令時,根據(jù)所述代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,判斷是否已存儲數(shù)據(jù)表的歷史代碼文件;
[0030]轉(zhuǎn)換模塊,用于如果已存儲所述數(shù)據(jù)表的歷史代碼文件,則將所述歷史代碼文件轉(zhuǎn)換成第一抽象語法樹;
[0031]第一生成模塊,用于根據(jù)所述數(shù)據(jù)表標(biāo)識對應(yīng)的數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成第二抽象語法樹;
[0032]第二生成模塊,用于根據(jù)所述第一抽象語法樹與所述第二抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0033]可選地,所述判斷模塊包括:
[0034]第一獲取單元,用于根據(jù)所述代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,獲取數(shù)據(jù)表的代碼文件存儲路徑;
[0035]確定單元,用于如果所述代碼文件存儲路徑中存儲有代碼文件,則確定已存儲所述數(shù)據(jù)表的歷史代碼文件,否則,確定沒有存儲所述數(shù)據(jù)表的歷史代碼文件。
[0036]可選地,所述第一生成模塊包括:
[0037]第二獲取單元,用于根據(jù)所述數(shù)據(jù)表標(biāo)識,獲取對應(yīng)的數(shù)據(jù)表屬性信息;
[0038]第一生成單元,用于根據(jù)所述數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成所述數(shù)據(jù)表的標(biāo)準(zhǔn)代碼;
[0039]轉(zhuǎn)換單元,用于將所述數(shù)據(jù)表的標(biāo)準(zhǔn)代碼轉(zhuǎn)換成第二抽象語法樹。
[0040]可選地,所述第二生成模塊包括:
[0041]第三獲取單元,用于從所述第一抽象語法樹包括的方法中,獲取與所述第二抽象語法樹包括的方法不同的方法;
[0042]第四獲取單元,用于從所述第一抽象語法樹包括的成員變量中,獲取與所述第二抽象語法樹包括的成員變量不同的成員變量;
[0043]第一添加單元,用于將獲取到的方法和獲取到的成員變量添加到所述第二抽象語法樹中,得到新抽象語法樹;
[0044]第二生成單元,用于根據(jù)所述新抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0045]可選地,所述第二生成模塊包括:
[0046]第五獲取單元,用于從所述第二抽象語法樹包括的方法中,獲取與所述第一抽象語法樹包括的方法不同的方法;
[0047]第六獲取單元,用于從所述第二抽象語法樹包括的成員變量中,獲取與所述第一抽象語法樹包括的成員變量不同的成員變量;
[0048]第二添加單元,用于將獲取到的方法和獲取到的成員變量添加到所述第一抽象語法樹中,得到新抽象語法樹;
[0049]第三生成單元,用于根據(jù)所述新抽象語法樹,生成所述數(shù)據(jù)表的代碼。
[0050]在本發(fā)明實施例中,當(dāng)接收到代碼生成指令時,根據(jù)該代碼生成指令攜帶的數(shù)據(jù)表標(biāo)識,判斷是否已存儲數(shù)據(jù)表的歷史代碼文件,如果已存儲該數(shù)據(jù)表的歷史代碼文件,則確定之前已為該數(shù)據(jù)表生成的代碼,且開發(fā)人員對該數(shù)據(jù)表的結(jié)構(gòu)重新進(jìn)行了修改。此時,將該數(shù)據(jù)表的歷史代碼文件轉(zhuǎn)換成第一抽象語法樹,并根據(jù)數(shù)據(jù)表標(biāo)識對應(yīng)的數(shù)據(jù)表屬性信息和存儲的數(shù)據(jù)表模板代碼,生成第二抽象語法樹,根據(jù)第一抽象語法樹與第二抽象語法樹,生成該數(shù)據(jù)表的代碼,使生成的代碼中包括歷史代碼文件中開發(fā)人員進(jìn)行修改的代碼,無需開發(fā)人員再次對生成的代碼進(jìn)行修改,操作比較簡單,節(jié)省了代碼生成時間,進(jìn)而提高了代碼生成效率。
【附圖說明】
[0051]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0052]圖1是本發(fā)明實施例提供的一種代碼生成方法流程圖;
[0053]圖2是本發(fā)明實施例提供的一種代碼生成方法流程圖;
[0054]圖3是本發(fā)明實施例提供的一種代碼生成裝置結(jié)構(gòu)示意圖;
[0055]圖4是本發(fā)明實施例提供的另一種代碼生成裝置結(jié)構(gòu)示意圖;
[0056]圖5是本發(fā)明實施例提供的又一種代碼生成裝置結(jié)構(gòu)示意圖;
[0057]圖6是本發(fā)明實施例提供的一種第二生成模塊結(jié)構(gòu)示意圖;
[0058]圖7是本發(fā)明實施例提供的另一種第二生成模塊結(jié)構(gòu)示意圖。
【