本技術(shù)屬于計(jì)算機(jī),尤其涉及一種代碼生成方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及車輛。
背景技術(shù):
1、基礎(chǔ)軟件模式管理器(basic?software?mode?manager,bswm)屬于汽車開放系統(tǒng)架構(gòu)(automotive?open?system?architecture,autosar)架構(gòu)中的基礎(chǔ)軟件模塊。bswm模塊向上給應(yīng)用軟件提供接口,向下和具體硬件解耦。bswm模塊的整體功能是根據(jù)基礎(chǔ)軟件模塊或者應(yīng)用的特定輸入,在滿足一定規(guī)則的條件下執(zhí)行對(duì)各個(gè)基礎(chǔ)軟件模塊的序列化操作。為了實(shí)現(xiàn)bswm模塊的上述功能,需要生成與功能對(duì)應(yīng)的代碼。其中,代碼通常包括靜態(tài)代碼(固定不變)和動(dòng)態(tài)代碼(用戶配置)。
2、現(xiàn)有技術(shù)中,代碼的生成強(qiáng)烈依賴于已有的商業(yè)軟件。但是,在生成動(dòng)態(tài)代碼的過程中,商業(yè)軟件為了滿足其通用性,通常會(huì)直接生成全量配置代碼,可能會(huì)生成與用戶配置無關(guān)的代碼,導(dǎo)致功能冗余。從而,會(huì)降低與用戶配置對(duì)應(yīng)的功能的實(shí)現(xiàn)效率。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種代碼生成方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及車輛,能夠生成的代碼均是與用戶配置對(duì)應(yīng)的代碼,從而能夠提升與用戶配置對(duì)應(yīng)的功能的實(shí)現(xiàn)效率,提升用戶的使用體驗(yàn)。
2、第一方面,本技術(shù)實(shí)施例提供了一種代碼生成方法,該方法包括:
3、獲取與基礎(chǔ)軟件模式管理器bswm模塊對(duì)應(yīng)的多個(gè)配置數(shù)據(jù),每個(gè)所述配置數(shù)據(jù)對(duì)應(yīng)一個(gè)配置數(shù)據(jù)類型,每個(gè)所述配置數(shù)據(jù)類型對(duì)應(yīng)至少一個(gè)所述配置數(shù)據(jù);
4、基于每個(gè)所述配置數(shù)據(jù)在所述多個(gè)配置數(shù)據(jù)中的位置,生成與每個(gè)所述配置數(shù)據(jù)分別對(duì)應(yīng)的索引,得到第一配置文件;
5、創(chuàng)建與多個(gè)所述配置數(shù)據(jù)類型分別對(duì)應(yīng)的數(shù)組;
6、將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的數(shù)組中,得到第二配置文件;
7、將所述第一配置文件中的代碼和所述第二配置文件中的代碼確定為與所述bswm模塊對(duì)應(yīng)的動(dòng)態(tài)代碼。
8、在一種可能的實(shí)現(xiàn)方式中,所述第二配置文件包括第一配置子文件和第二配置子文件,所述將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的數(shù)組中,得到第二配置文件,包括:
9、在所述配置數(shù)據(jù)的數(shù)據(jù)類型為第一配置數(shù)據(jù)類型的情況下,將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第一數(shù)組中,得到第一配置子文件,所述第一配置數(shù)據(jù)類型包括模式請(qǐng)求、操作列表、規(guī)則中的任意一個(gè);
10、在所述配置數(shù)據(jù)的數(shù)據(jù)類型為第二配置數(shù)據(jù)類型的情況下,生成與所述配置數(shù)據(jù)對(duì)應(yīng)的代碼,所述第二配置數(shù)據(jù)類型包括邏輯表達(dá)式、操作中的任意一個(gè);
11、將與所述配置數(shù)據(jù)對(duì)應(yīng)的代碼保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第二數(shù)組中,得到第二配置子文件。
12、在一種可能的實(shí)現(xiàn)方式中,所述將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第一數(shù)組中,得到第一配置子文件,包括:
13、將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第一數(shù)組中,得到第一初始配置子文件;
14、在所述第一初始配置子文件中定義第一目標(biāo)配置數(shù)據(jù),得到第一配置子文件,所述第一目標(biāo)配置數(shù)據(jù)為與所述動(dòng)態(tài)代碼對(duì)應(yīng)的目標(biāo)基礎(chǔ)軟件模塊的配置數(shù)據(jù),所述目標(biāo)基礎(chǔ)軟件模塊為除所述bswm模塊之外的其余基礎(chǔ)軟件模塊。
15、在一種可能的實(shí)現(xiàn)方式中,所述將與所述配置數(shù)據(jù)對(duì)應(yīng)的代碼保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第二數(shù)組中,得到第二配置子文件,包括:
16、將與所述配置數(shù)據(jù)對(duì)應(yīng)的代碼保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的第二數(shù)組中,得到第二初始配置子文件;
17、在所述第二初始配置子文件中定義模式請(qǐng)求函數(shù),得到第二配置子文件,所述模式請(qǐng)求函數(shù)用于向除所述bswm模塊之外的其余基礎(chǔ)軟件模塊提供調(diào)用模式。
18、在一種可能的實(shí)現(xiàn)方式中,所述基于每個(gè)所述配置數(shù)據(jù)在所述多個(gè)配置數(shù)據(jù)中的位置,生成與每個(gè)所述配置數(shù)據(jù)分別對(duì)應(yīng)的索引,得到第一配置文件之前,所述方法還包括:
19、將所述配置數(shù)據(jù)轉(zhuǎn)換為具有目標(biāo)類型語言和目標(biāo)數(shù)據(jù)類型的第二目標(biāo)配置數(shù)據(jù),所述目標(biāo)類型語言為面向?qū)ο蟮?、解釋型編程語言,所述目標(biāo)數(shù)據(jù)類型為包括鍵值對(duì)的數(shù)據(jù)類型;
20、將所述第二目標(biāo)配置數(shù)據(jù)傳入目標(biāo)模板中,所述目標(biāo)模板為基于所述目標(biāo)類型語言構(gòu)建的代碼生成模板,所述第一配置文件和所述第二配置文件均基于所述目標(biāo)模板生成。
21、在一種可能的實(shí)現(xiàn)方式中,所述將所述第二目標(biāo)配置數(shù)據(jù)傳入目標(biāo)模板中,包括:
22、對(duì)所述第二目標(biāo)配置數(shù)據(jù)進(jìn)行校驗(yàn),得到校驗(yàn)結(jié)果;
23、在所述校驗(yàn)結(jié)果為校驗(yàn)通過的情況下,將所述第二目標(biāo)配置數(shù)據(jù)傳入目標(biāo)模板中。
24、在一種可能的實(shí)現(xiàn)方式中,所述數(shù)組包括規(guī)則數(shù)組、操作列表數(shù)組和操作數(shù)組,得到與所述bswm模塊對(duì)應(yīng)的動(dòng)態(tài)代碼之后,所述方法還包括:
25、遍歷所述動(dòng)態(tài)代碼中的規(guī)則數(shù)組;
26、針對(duì)所述規(guī)則數(shù)組中的每個(gè)規(guī)則數(shù)據(jù),對(duì)所述規(guī)則數(shù)據(jù)中的邏輯表達(dá)式進(jìn)行仲裁,得到與每個(gè)所述規(guī)則數(shù)據(jù)分別對(duì)應(yīng)的仲裁結(jié)果;
27、通過所述規(guī)則數(shù)據(jù)中的操作列表索引訪問操作列表數(shù)組中與所述仲裁結(jié)果對(duì)應(yīng)的操作列表數(shù)據(jù);
28、通過所述操作列表數(shù)據(jù)中的操作索引訪問操作數(shù)組中的操作數(shù)據(jù),以實(shí)現(xiàn)與所述動(dòng)態(tài)代碼對(duì)應(yīng)的功能。
29、第二方面,本技術(shù)實(shí)施例提供了一種代碼生成裝置,該裝置包括:
30、獲取模塊,用于獲取與基礎(chǔ)軟件模式管理器bswm模塊對(duì)應(yīng)的多個(gè)配置數(shù)據(jù),每個(gè)所述配置數(shù)據(jù)對(duì)應(yīng)一個(gè)配置數(shù)據(jù)類型,每個(gè)所述配置數(shù)據(jù)類型對(duì)應(yīng)至少一個(gè)所述配置數(shù)據(jù);
31、生成模塊,用于基于每個(gè)所述配置數(shù)據(jù)在所述多個(gè)配置數(shù)據(jù)中的位置,生成與每個(gè)所述配置數(shù)據(jù)分別對(duì)應(yīng)的索引,得到第一配置文件;
32、創(chuàng)建模塊,用于創(chuàng)建與多個(gè)所述配置數(shù)據(jù)類型分別對(duì)應(yīng)的數(shù)組;
33、保存模塊,用于將所述配置數(shù)據(jù)保存至與所述配置數(shù)據(jù)對(duì)應(yīng)的數(shù)組中,得到第二配置文件;
34、確定模塊,用于將所述第一配置文件中的代碼和所述第二配置文件中的代碼確定為與所述bswm模塊對(duì)應(yīng)的動(dòng)態(tài)代碼。
35、第三方面,本技術(shù)實(shí)施例提供了一種電子設(shè)備,該電子設(shè)備包括:處理器以及存儲(chǔ)有計(jì)算機(jī)程序指令的存儲(chǔ)器;
36、所述處理器執(zhí)行所述計(jì)算機(jī)程序指令時(shí)實(shí)現(xiàn)上述第一方面中任一種可能的實(shí)現(xiàn)方法中的方法。
37、第四方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序指令,計(jì)算機(jī)程序指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述第一方面中任一種可能的實(shí)現(xiàn)方法中的方法。
38、第五方面,本技術(shù)實(shí)施例提供了一種車輛,該車輛包括以下至少一項(xiàng):
39、如第二方面的任一項(xiàng)實(shí)施例中的代碼生成裝置;
40、如第三方面的任一項(xiàng)實(shí)施例中的電子設(shè)備;
41、如第四方面的任一項(xiàng)實(shí)施例中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
42、本技術(shù)實(shí)施例的代碼生成方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)及車輛,通過基于每個(gè)配置數(shù)據(jù)在多個(gè)配置數(shù)據(jù)中的位置,生成與每個(gè)配置數(shù)據(jù)分別對(duì)應(yīng)的索引,得到第一配置文件,以及創(chuàng)建與多個(gè)配置數(shù)據(jù)類型分別對(duì)應(yīng)的數(shù)組,將配置數(shù)據(jù)保存至與配置數(shù)據(jù)對(duì)應(yīng)的數(shù)組中,得到第二配置文件,能夠保證第一配置文件和第二配置文件中只包括與用戶配置對(duì)應(yīng)的代碼。如此,通過將第一配置文件中的代碼和第二配置文件中的代碼確定為與bswm模塊對(duì)應(yīng)的動(dòng)態(tài)代碼,能夠保證生成的代碼均是與用戶配置對(duì)應(yīng)的代碼。從而,能夠保證基于動(dòng)態(tài)代碼實(shí)現(xiàn)的功能全部為用戶需要的功能,也即,能夠提升與用戶配置對(duì)應(yīng)的功能的實(shí)現(xiàn)效率,提升用戶的使用體驗(yàn)。