本申請(qǐng)涉及通信領(lǐng)域,尤其涉及一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方法及裝置。
背景技術(shù):
::集成開發(fā)環(huán)境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序開發(fā)環(huán)境的應(yīng)用程序,通常包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具等開發(fā)工具。在相關(guān)技術(shù)中,為了提升開發(fā)人員的代碼編輯速度,在代碼編輯器中通常會(huì)面向開發(fā)人員提供代碼補(bǔ)全功能。所謂代碼補(bǔ)全功能,是指開發(fā)人員在代碼編輯器進(jìn)行代碼編輯時(shí),代碼編輯器能夠根據(jù)開發(fā)者輸入的代碼字符,自動(dòng)匹配并輸出用戶可能還會(huì)需要的基礎(chǔ)關(guān)鍵字和連續(xù)關(guān)鍵字,開發(fā)人員在代碼編輯的過程中,可以直接選擇輸出的基礎(chǔ)關(guān)鍵字和連續(xù)關(guān)鍵字對(duì)已輸入的代碼字符進(jìn)行補(bǔ)全,從而可以減少開發(fā)人員輸入的代碼量,提升開發(fā)者的代碼編輯速度。然而,在現(xiàn)有的代碼補(bǔ)全功能中,由于IDE支持的程序語言的語法可能會(huì)發(fā)生變化,因此與用戶輸入的代碼字符進(jìn)行匹配的連續(xù)關(guān)鍵字,通常無法找到一個(gè)全集,只能通過人工添加的方式來創(chuàng)建和維護(hù)連續(xù)關(guān)鍵字列表,不僅對(duì)連續(xù)關(guān)鍵字列表的維護(hù)效率低下,而且連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字不全,無法實(shí)時(shí)反映當(dāng)前IDE支持的程序語言的語法變化。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)?zhí)岢鲆环N基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方法,該方法包括:基于預(yù)設(shè)的基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字提取用戶提交成功的指令代碼中的連續(xù)關(guān)鍵字;將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表進(jìn)行更新;其中,所述連續(xù)關(guān)鍵字列表用于記錄從所述指令代碼中提取出的連續(xù)關(guān)鍵字以及所述連續(xù)關(guān)鍵字被成功提交的次數(shù);將所述連續(xù)關(guān)鍵字列表中記錄的被成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài);基于所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全。可選的,所述基于預(yù)設(shè)的基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字提取用戶提交成功的指令代碼中的連續(xù)關(guān)鍵字,包括:讀取用戶提交成功的指令代碼;確定該指令代碼中是否包含由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字;當(dāng)該指令代碼中包含由所述基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字時(shí),提取該連續(xù)關(guān)鍵字。可選的,所述將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表進(jìn)行更新,包括:將提取出的所述連續(xù)關(guān)鍵字在預(yù)設(shè)的連續(xù)關(guān)鍵字列表中執(zhí)行完全匹配;如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的任一連續(xù)關(guān)鍵字完全匹配時(shí),在所述連續(xù)關(guān)鍵字列表中記錄提取到該連續(xù)關(guān)鍵字的時(shí)間戳,以及更新該連續(xù)關(guān)鍵字被成功提交的次數(shù);如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字均不完全匹配,將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述完全匹配包括長(zhǎng)度和內(nèi)容均匹配??蛇x的,所述方法還包括:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第一指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),在所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字標(biāo)記為無效狀態(tài)??蛇x的,所述方法還包括:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第二指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),從所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字刪除;其中,所述第二指定時(shí)長(zhǎng)大于所述第一指定時(shí)長(zhǎng)??蛇x的,所述連續(xù)關(guān)鍵字被成功提交的次數(shù)包括:被成功提交的總次數(shù),或者被成功提交的用戶數(shù)。可選的,所述基于所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全,包括:實(shí)時(shí)獲取用戶輸入的代碼字符;將所述代碼字符作為起始字符與所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字,以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行匹配;將所述基礎(chǔ)關(guān)鍵字列表中起始字符與所述代碼字符匹配的基礎(chǔ)關(guān)鍵字,以及將所述連續(xù)關(guān)鍵字列表中起始字符與所述代碼字符匹配的被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字,在與所述代碼字符的輸入位置對(duì)應(yīng)的預(yù)設(shè)位置輸出,以提示所述用戶在輸出的所述基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字中選擇相應(yīng)的關(guān)鍵字對(duì)所述代碼字符執(zhí)行代碼補(bǔ)全。本申請(qǐng)還提出一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置,該裝置包括:提取模塊,用于基于預(yù)設(shè)的基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字提取用戶提交成功的指令代碼中的連續(xù)關(guān)鍵字;存入模塊,用于將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述連續(xù)關(guān)鍵字列表用于記錄從所述指令代碼中提取出的連續(xù)關(guān)鍵字以及所述連續(xù)關(guān)鍵字被成功提交的次數(shù);標(biāo)記模塊,用于將所述連續(xù)關(guān)鍵字列表中記錄的被成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài);執(zhí)行模塊,用于基于所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全??蛇x的,所述提取模塊具體用于:讀取用戶提交成功的指令代碼;確定該指令代碼中是否包含由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字;當(dāng)該指令代碼中包含由所述基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字時(shí),提取該連續(xù)關(guān)鍵字??蛇x的,所述存入模塊具體用于:將提取出的所述連續(xù)關(guān)鍵字在預(yù)設(shè)的連續(xù)關(guān)鍵字列表中執(zhí)行完全匹配;如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的任一連續(xù)關(guān)鍵字完全匹配時(shí),在所述連續(xù)關(guān)鍵字列表中記錄提取到該連續(xù)關(guān)鍵字的時(shí)間戳,以及更新該連續(xù)關(guān)鍵字被成功提交的次數(shù);如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字均不完全匹配,將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述完全匹配包括長(zhǎng)度和內(nèi)容均匹配??蛇x的,所述存入模塊進(jìn)一步用于:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第一指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),在所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字標(biāo)記為無效狀態(tài)??蛇x的,所述存入模塊進(jìn)一步用于:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第二指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),從所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字刪除;其中,所述第二指定時(shí)長(zhǎng)大于所述第一指定時(shí)長(zhǎng)??蛇x的,所述連續(xù)關(guān)鍵字被成功提交的次數(shù)包括:被成功提交的總次數(shù),或者被成功提交的用戶數(shù)??蛇x的,所述執(zhí)行模塊具體用于:實(shí)時(shí)獲取用戶輸入的代碼字符;將所述代碼字符作為起始字符與所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字,以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行匹配;將所述基礎(chǔ)關(guān)鍵字列表中起始字符與所述代碼字符匹配的基礎(chǔ)關(guān)鍵字,以及將所述連續(xù)關(guān)鍵字列表中起始字符與所述代碼字符匹配的被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字,在與所述代碼字符的輸入位置對(duì)應(yīng)的預(yù)設(shè)位置輸出,以提示所述用戶在輸出的所述基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字中選擇相應(yīng)的關(guān)鍵字對(duì)所述代碼字符執(zhí)行代碼補(bǔ)全。本申請(qǐng)中,通過將基于基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字從用戶提交成功的指令代碼中提取出的連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表,將該連續(xù)關(guān)鍵字列表中被不同的用戶成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài),并基于基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全,實(shí)現(xiàn)了系統(tǒng)可以自動(dòng)從用戶提交成功的指令代碼中收集新的連續(xù)關(guān)鍵字,對(duì)連續(xù)關(guān)鍵字列表進(jìn)行補(bǔ)充,而不需要由開發(fā)人員人工對(duì)連續(xù)關(guān)鍵字列表進(jìn)行維護(hù),從而可以提升收集連續(xù)關(guān)鍵字時(shí)的完整性和實(shí)效性,使得在基于連續(xù)關(guān)鍵字進(jìn)行代碼補(bǔ)全時(shí),可以為開發(fā)人員提供更加豐富的連續(xù)關(guān)鍵字。附圖說明圖1是本申請(qǐng)一實(shí)施例提供的一種面向開發(fā)人員提供基礎(chǔ)關(guān)鍵字的代碼補(bǔ)全功能的示意圖;圖2是本申請(qǐng)一實(shí)施例提供的一種面向開發(fā)人員提供連續(xù)關(guān)鍵字的代碼補(bǔ)全功能的示意圖;圖3是本申請(qǐng)一實(shí)施例提供的一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方法的流程圖;圖4是本申請(qǐng)一實(shí)施例提供的一種從用戶成功提交的指令代碼中自動(dòng)識(shí)別連續(xù)關(guān)鍵字的處理流程圖;圖5是本申請(qǐng)一實(shí)施例提供的一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置的邏輯框圖;圖6是本申請(qǐng)一實(shí)施例提供的承載所述一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置的客戶端的硬件結(jié)構(gòu)圖。具體實(shí)施方式在IDE(IntegratedDevelopmentEnvironment,集成開發(fā)環(huán)境)中,通常包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具等開發(fā)工具。在這些開發(fā)工具中,代碼編輯器是一種用來供開發(fā)人員進(jìn)行程序編寫的軟件,通??梢苑Q之為是開發(fā)人員在進(jìn)行程序開發(fā)的入口。開發(fā)人員可以通過代碼編輯器來編輯代碼,然后通過編譯器對(duì)編輯的代碼進(jìn)行編譯,通過調(diào)試器對(duì)編輯出的代碼進(jìn)行調(diào)試,以最終開發(fā)出滿足實(shí)際的開發(fā)需求的程序代碼。對(duì)于代碼編輯器來說,為了滿足開發(fā)人員日常編輯需求,除了常見的文本編輯功能之外,通常還有面向開發(fā)人員提供語法加亮、語句格式化、語法糾錯(cuò)、代碼補(bǔ)全等功能。目前,代碼編輯器面向開發(fā)人員提供的代碼補(bǔ)全功能,通常包括基于基礎(chǔ)關(guān)鍵字的補(bǔ)全功能和基于連續(xù)關(guān)鍵字的補(bǔ)全功能。其中,上述基礎(chǔ)關(guān)鍵字,是指集成開發(fā)環(huán)境所支持的代碼語言中事先定義的具有特定含義的單個(gè)標(biāo)識(shí)符。例如,以SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)程序語言為例,在SQL程序語言中通常包含諸如Select、Create、From、where等基礎(chǔ)關(guān)鍵字,每一個(gè)基礎(chǔ)關(guān)鍵字在SQL程序語言的語法中都具有一個(gè)特定的意義;比如,基礎(chǔ)關(guān)鍵字Select通常用于從數(shù)據(jù)列表中選取數(shù)據(jù)。對(duì)于IDE而言,其所支持的代碼語言通常會(huì)具有一個(gè)基礎(chǔ)關(guān)鍵字列表,在該基礎(chǔ)關(guān)鍵字列表中將包含該種代碼語言所定義的所有基礎(chǔ)關(guān)鍵字。當(dāng)該種代碼語言中新增了基礎(chǔ)關(guān)鍵字或者語法,開發(fā)人員可以對(duì)該基礎(chǔ)關(guān)鍵字清單進(jìn)行不斷完善和擴(kuò)充。上述連續(xù)關(guān)鍵字,是指由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字。在實(shí)際應(yīng)用中,開發(fā)人員可以通過對(duì)基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字進(jìn)行組合,得到連續(xù)關(guān)鍵字,對(duì)代碼語言的語法進(jìn)行擴(kuò)充。例如,仍以SQL程序語言為例,SQL程序語言中的基礎(chǔ)關(guān)鍵字Insert、into、table可以組成一個(gè)連續(xù)關(guān)鍵字Insertintotable,該連續(xù)關(guān)鍵字由3個(gè)基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字構(gòu)成,表示向數(shù)據(jù)表中插入數(shù)據(jù)這一特定含義。請(qǐng)參見圖1,圖1為本申請(qǐng)示出的一種代碼編輯器面向開發(fā)人員提供基礎(chǔ)關(guān)鍵字的代碼補(bǔ)全功能的示意圖。當(dāng)開發(fā)人員在代碼編輯器提供的代碼輸入界面中輸入代碼時(shí),代碼編輯器可以在后臺(tái)實(shí)時(shí)獲取開發(fā)人員輸入的代碼字符,將開發(fā)人員輸入的代碼字符作為起始字符與基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字執(zhí)行匹配。如圖1所示,當(dāng)開發(fā)人員輸入了代碼字符“S”后,代碼編輯器可以將該代碼字符“S”作為起始字符在基礎(chǔ)關(guān)鍵字列表中執(zhí)行匹配,然后將基礎(chǔ)關(guān)鍵字列表中所有以代碼字符“S”為起始字符的基礎(chǔ)關(guān)鍵字,在上述代碼字符“S”的輸入位置下方向開發(fā)人員輸出。此時(shí)開發(fā)人員可以在代碼編輯器輸出的所有以代碼字符“S”為起始字符的基礎(chǔ)關(guān)鍵字中,選擇想要輸入的基礎(chǔ)關(guān)鍵字,假設(shè)用戶選擇了基礎(chǔ)關(guān)鍵字“SELECT”,代碼編輯器可以基礎(chǔ)關(guān)鍵字“SELECT”對(duì)已輸入的代碼字符“S”進(jìn)行替換完成基礎(chǔ)關(guān)鍵字“SELECT”的輸入。在整個(gè)輸入過程中,開發(fā)人員只需要輸入基礎(chǔ)關(guān)鍵字“SELECT”的首字符,就可以快速的輸入該基礎(chǔ)關(guān)鍵字。在實(shí)際應(yīng)用中,為了更好的提高開發(fā)者的代碼編輯效率,代碼編輯器可以在基于基礎(chǔ)關(guān)鍵字的代碼補(bǔ)全功能的基礎(chǔ)上,進(jìn)一步支持基于連續(xù)關(guān)鍵字的代碼補(bǔ)全功能。請(qǐng)參見圖2,圖2為本申請(qǐng)示出的一種代碼編輯器面向開發(fā)人員提供連續(xù)關(guān)鍵字的代碼補(bǔ)全功能的示意圖。如圖2所示,當(dāng)開發(fā)人員輸入了代碼字符“Ins”后,代碼編輯器可以將該代碼字符“Ins”作為起始字符在連續(xù)關(guān)鍵字列表中執(zhí)行匹配,然后將連續(xù)關(guān)鍵字列表中所有以代碼字符“Ins”作為起始字符的連續(xù)關(guān)鍵字,在上述代碼字符“Ins”的輸入位置下方向開發(fā)人員輸出。此時(shí)開發(fā)人員可以在代碼編輯器輸出的所有以代碼字符“Ins”作為起始字符的連續(xù)關(guān)鍵字中,選擇想要輸入的連續(xù)關(guān)鍵字,假設(shè)開發(fā)人員選擇了連續(xù)關(guān)鍵字“INSERTINTOTABLE”,碼編輯器可以連續(xù)關(guān)鍵字“INSERTINTOTABLE”對(duì)已輸入的代碼字符“ins”進(jìn)行替換完成連續(xù)關(guān)鍵字“INSERTINTOTABLE”的輸入。在整個(gè)輸入過程中,開發(fā)人員只需要輸入連續(xù)關(guān)鍵字“INSERTINTOTABLE”的前幾個(gè)代碼字符,就可以快速的輸入該基礎(chǔ)關(guān)鍵字??梢?,在整個(gè)輸入過程中,與代碼編輯器提供的基于基礎(chǔ)關(guān)鍵字的代碼補(bǔ)全功能相比,更進(jìn)一步的提升了開發(fā)人員的代碼輸入速度,只需要輸入少量的代碼字符,就可以快速的輸入相應(yīng)的連續(xù)關(guān)鍵字。然而,在實(shí)際應(yīng)用中,由于IDE支持的程序語言的語法可能會(huì)發(fā)生變化,因此程序語言的語法中所支持的連續(xù)關(guān)鍵字,通常無法像基礎(chǔ)關(guān)鍵字那樣,能夠找到一個(gè)全集。因此,在目前的基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方案中,通常只能通過人工添加的方式來創(chuàng)建和維護(hù)連續(xù)關(guān)鍵字列表;例如,開發(fā)人員只能對(duì)用戶成功提交的指令代碼進(jìn)行人工分析,找到其中包含的連續(xù)關(guān)鍵字,然后手工添加到連續(xù)關(guān)鍵字列表中,供代碼編輯器在基于連續(xù)關(guān)鍵字進(jìn)行代碼補(bǔ)全時(shí)使用??梢姡ㄟ^人工對(duì)連續(xù)關(guān)鍵字列表進(jìn)行維護(hù),不僅維護(hù)效率低下,而且連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字不全,當(dāng)代碼語言中由于語法變化新增了連續(xù)關(guān)鍵字,并不能將最新的連續(xù)關(guān)鍵字及時(shí)添加到連續(xù)關(guān)鍵字列表中,從而無法實(shí)時(shí)反映當(dāng)前IDE支持的程序語言的語法變化。為解決上述問題,本申請(qǐng)?zhí)岢鲆环N基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方案,通過將基于基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字從用戶提交成功的指令代碼中提取出的連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表,將該連續(xù)關(guān)鍵字列表中被不同的用戶成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài),并基于基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全,實(shí)現(xiàn)了系統(tǒng)可以自動(dòng)從用戶提交成功的指令代碼中收集新的連續(xù)關(guān)鍵字,對(duì)連續(xù)關(guān)鍵字列表進(jìn)行補(bǔ)充,而不需要由開發(fā)人員人工對(duì)連續(xù)關(guān)鍵字列表進(jìn)行維護(hù),從而可以提升收集連續(xù)關(guān)鍵字時(shí)的完整性和實(shí)效性,使得在基于連續(xù)關(guān)鍵字進(jìn)行代碼補(bǔ)全時(shí),可以為開發(fā)人員提供更加豐富的連續(xù)關(guān)鍵字。下面通過具體實(shí)施例并結(jié)合具體的應(yīng)用場(chǎng)景對(duì)本申請(qǐng)進(jìn)行描述。請(qǐng)參考圖3,圖3是本申請(qǐng)一實(shí)施例提供的一種基于連續(xù)關(guān)鍵字的代碼補(bǔ)全方法,應(yīng)用于客戶端,所述方法執(zhí)行以下步驟:步驟301,基于預(yù)設(shè)的基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字提取用戶提交成功的指令代碼中的連續(xù)關(guān)鍵字;步驟302,將所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述連續(xù)關(guān)鍵字列表用于記錄從所述指令代碼中提取出的連續(xù)關(guān)鍵字以及所述連續(xù)關(guān)鍵字被成功提交的次數(shù);步驟303,將所述連續(xù)關(guān)鍵字列表中記錄的被成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài);步驟304,基于所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全。在本例中,上述客戶端可以包括開發(fā)人員用于進(jìn)行程序開發(fā)的客戶端軟件;在實(shí)際應(yīng)用中,該客戶端軟件具體可以是IDE中的程序開發(fā)工具;例如,假設(shè)IDE所支持的代碼語言為SQL程序語言,則上述客戶端軟件可以是一款用于進(jìn)行SQL開發(fā)的SQL開發(fā)工具。其中,承載上述客戶端軟件的硬件環(huán)境,在本實(shí)施例中不進(jìn)行特別限定;例如,可以是PC主機(jī)、也可以是服務(wù)器。上述IDE所支持的代碼語言,在本例中也不進(jìn)行特別限定;例如,可以是SQL程序語言或者其它類型的程序語言。在本例中,上述客戶端在面向開發(fā)人員提供基于連續(xù)關(guān)鍵字的代碼補(bǔ)全功能時(shí),可以在本地維護(hù)一基礎(chǔ)關(guān)鍵字列表、一連續(xù)關(guān)鍵字列表,以及一指令代碼列表。其中,上述基礎(chǔ)關(guān)鍵字列表,用于存儲(chǔ)IDE所支持的代碼語言中事先定義的所有基礎(chǔ)關(guān)鍵字。上述客戶端在完成初始化后,可以與IDE的后臺(tái)服務(wù)器進(jìn)行交互,將服務(wù)器上存儲(chǔ)的最新版本的基礎(chǔ)關(guān)鍵字列表同步至本地,從而確保本地維護(hù)的基礎(chǔ)關(guān)鍵字列表為最新版本的基礎(chǔ)關(guān)鍵字列表。上述連續(xù)關(guān)鍵字列表,用于記錄上述客戶端從用戶成功提交的指令代碼中提取出的連續(xù)關(guān)鍵字,以及連續(xù)關(guān)鍵字被成功提交的次數(shù)。其中,上述連續(xù)關(guān)鍵字被成功提交的次數(shù)可以包括該連續(xù)關(guān)鍵字被提供的總次數(shù),或者被成功提交的用戶數(shù)。在實(shí)際應(yīng)用中,客戶端本地的連續(xù)關(guān)鍵字列表可以與后臺(tái)服務(wù)器上的連續(xù)關(guān)鍵字列表保持同步;例如,一方面,客戶端可以將后臺(tái)服務(wù)器從用戶成功提交的指令代碼中提取出的連續(xù)關(guān)鍵字同步至本地;另一方面,客戶端也可以將從用戶成功提交的指令代碼中提取出的連續(xù)關(guān)鍵字同步至后臺(tái)服務(wù)器。其中,在初始狀態(tài)下,服務(wù)器上存儲(chǔ)的上述連續(xù)關(guān)鍵字列表,可以預(yù)先存儲(chǔ)若干由開發(fā)人員手動(dòng)添加的連續(xù)關(guān)鍵字,也可以為空,在本例中不進(jìn)行特別限定。上述指令代碼列表,用于存儲(chǔ)用戶在客戶端前臺(tái)成功提交的指令代碼,以及后臺(tái)執(zhí)行用戶提交的指令代碼后的結(jié)果日志;例如,假設(shè)IDE所支持的代碼語言為SQL程序語言,上述客戶端軟件為SQL開發(fā)工具,那么上述指令代碼列表可以是一張存儲(chǔ)了用戶在進(jìn)行日常的SQL查詢時(shí)所編輯的SQL指令代碼,以及相應(yīng)的查詢結(jié)果日志的用戶列表。上述客戶端在將用戶提交的指令代碼提交至后臺(tái)服務(wù)器后,如果后臺(tái)服務(wù)器成功執(zhí)行了該指令代碼,并且返回了相應(yīng)的結(jié)果日志,上述客戶端可以確定該指定代碼成功提交,此時(shí)可以將該指令代碼以及相應(yīng)的結(jié)果日志存儲(chǔ)至該指令代碼列表中。通過這種方式,上述客戶端可以通過不斷收集用戶成功提交的指令代碼,對(duì)上述指令代碼列表中存儲(chǔ)護(hù)的指令代碼進(jìn)行擴(kuò)充。在本例中,上述客戶端可以將上述指令代碼列表中存儲(chǔ)的用戶成功提交的指令代碼作為素材,從用戶成功提交的指令代碼中自動(dòng)識(shí)別和提取連續(xù)關(guān)鍵字,然后將提取到的連續(xù)關(guān)鍵字自動(dòng)添加至上述連續(xù)關(guān)鍵字列表,以供向開發(fā)人員提供基于連續(xù)關(guān)鍵字的代碼補(bǔ)全時(shí)使用。請(qǐng)參見圖4,圖4為本例示出的一種從用戶成功提交的指令代碼中自動(dòng)識(shí)別連續(xù)關(guān)鍵字的處理流程圖。如圖4所示,上述客戶端在開啟從用戶成功提交的指令代碼中識(shí)別連續(xù)關(guān)鍵字的處理流程后,可以從本地維護(hù)的上述指令代碼列表中讀取用戶成功提交的指令代碼,然后對(duì)該指令代碼進(jìn)行解析,基于基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字從該指令代碼中提取連續(xù)關(guān)鍵字。其中,上述客戶端在對(duì)從上述指令代碼列表中讀到的指令代碼進(jìn)行解析時(shí),可以將上述基礎(chǔ)關(guān)鍵字列表中存儲(chǔ)的基礎(chǔ)關(guān)鍵字作為參照,通過遍歷該指令代碼,來確定該指令代碼中是否包含由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字所組成的連續(xù)關(guān)鍵字。如果該指令代碼中包含由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字所組成的連續(xù)關(guān)鍵字,此時(shí)上述客戶端可以提取該連續(xù)關(guān)鍵字。例如,在實(shí)現(xiàn)時(shí),上述客戶端可以對(duì)該指令代碼中的關(guān)鍵字按照順序進(jìn)行拆分,然后逐一在上述基礎(chǔ)關(guān)鍵字列表中進(jìn)行匹配,如果發(fā)現(xiàn)該指令代碼中連續(xù)兩個(gè)或者兩個(gè)以上的關(guān)鍵字,均命中基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字時(shí),則可以確定該指令代碼中包含連續(xù)關(guān)鍵字。在這種情況下,上述客戶端可以將該指令代碼中,命中基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字的連續(xù)兩個(gè)或者兩個(gè)以上的關(guān)鍵字作為連續(xù)關(guān)鍵字進(jìn)行整體提取。比如,假設(shè)該指令代碼為“InsertintotableXXX”,命中了基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字Insert、into、table,則可以將該指令代碼中的基礎(chǔ)關(guān)鍵字Insert、into、table作為一個(gè)整體進(jìn)行提取,最終提取出的連續(xù)關(guān)鍵字為Insertintotable。當(dāng)然,如果該指令代碼中包含多個(gè)連續(xù)關(guān)鍵字,此時(shí)上述客戶端也可以分別進(jìn)行提取。在本例中,當(dāng)上述客戶端從讀取到的指令代碼中提取出連續(xù)關(guān)鍵字后,此時(shí)可以將提取出的該連續(xù)關(guān)鍵字存入上述連續(xù)關(guān)鍵字列表。請(qǐng)繼續(xù)參見圖4,上述客戶端在向連續(xù)關(guān)鍵字列表中存入提取出的連續(xù)關(guān)鍵字時(shí),可以將提取出的該連續(xù)關(guān)鍵字與該連續(xù)關(guān)鍵字列表中已有的連續(xù)關(guān)鍵字分別進(jìn)行完全匹配,其中上述完全匹配包括關(guān)鍵字的長(zhǎng)度和內(nèi)容均匹配。如果提取出的該連續(xù)關(guān)鍵字與該連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字均不完全匹配時(shí),此時(shí)表明提取出的該連續(xù)關(guān)鍵字為新的連續(xù)關(guān)鍵字,則可以直接存入上述連續(xù)關(guān)鍵字列表。當(dāng)然,如果提取出的連續(xù)關(guān)鍵字與該連續(xù)關(guān)鍵字列表中存儲(chǔ)任意一個(gè)連續(xù)關(guān)鍵字完全匹配時(shí),此時(shí)表明提取出的連續(xù)關(guān)鍵字為連續(xù)關(guān)鍵字列表中已有的連續(xù)關(guān)鍵字;在這種情況下,可以不需要將提出的連續(xù)關(guān)鍵字重復(fù)存入上述連續(xù)關(guān)鍵字列表,上述客戶端可以從上述指令代碼列表中讀取下一個(gè)用戶成功提交的指令代碼,然后重復(fù)以上識(shí)別連續(xù)關(guān)鍵字的流程。通過以上示出的連續(xù)關(guān)鍵字的自動(dòng)識(shí)別流程,上述客戶端可以將基礎(chǔ)關(guān)鍵字列表中存儲(chǔ)的基礎(chǔ)關(guān)鍵字作為素材,從用戶成功提交的指令代碼中自動(dòng)識(shí)別和提取連續(xù)關(guān)鍵字,然后將提取到的連續(xù)關(guān)鍵字自動(dòng)添加存儲(chǔ)至上述連續(xù)關(guān)鍵字列表。可見,通過這種方式,對(duì)于連續(xù)關(guān)鍵字列表的創(chuàng)建和維護(hù),將不再需要開發(fā)人員進(jìn)行人工干預(yù),上述客戶端可以基于用戶提交成功的代碼指令自動(dòng)識(shí)別新的連續(xù)關(guān)鍵字,當(dāng)IDE所支持的代碼語言中新增了連續(xù)關(guān)鍵字,或者語法發(fā)生了變化,上述客戶端可以第一時(shí)間識(shí)別出新增的連續(xù)關(guān)鍵字并存儲(chǔ)添加至連續(xù)關(guān)鍵字列表,而不會(huì)出現(xiàn)由于人工添加時(shí)造成的連續(xù)關(guān)鍵字遺漏以及不能及時(shí)反饋語法變化的問題,從而可以提升收集連續(xù)關(guān)鍵字時(shí)的完整性和實(shí)效性。需要說明的是,如圖4所示出的從用戶成功提交的指令代碼中識(shí)別連續(xù)關(guān)鍵字的處理流程,在實(shí)際應(yīng)用中也可以由與上述客戶端對(duì)接的后臺(tái)服務(wù)器來執(zhí)行。在這種情況下,后臺(tái)服務(wù)器可以定期將通過執(zhí)行上述處理流程從用戶成功提交的指令代碼中識(shí)別出的連續(xù)關(guān)鍵字同步至上述客戶端。請(qǐng)參見表1,表1為本例示出的上述連續(xù)關(guān)鍵字列表的存儲(chǔ)結(jié)構(gòu)。字段名字段描述字段取值ID序號(hào)IntegerContinue_Key_words連續(xù)關(guān)鍵字Varchar(N)First_Find_Date首次發(fā)現(xiàn)日期DateLast_Find_Date最后發(fā)現(xiàn)日期DateUse_count開發(fā)者使用次數(shù)IntegerStatus連續(xù)關(guān)鍵字狀態(tài)New/Valid/Invalid由表1可知,在上述連續(xù)關(guān)鍵字列表的存儲(chǔ)結(jié)構(gòu)中,包括ID字段、Continue_Key_words字段、First_Find_Date字段、Last_Find_Date字段、Use_count字段以及Status字段。其中:ID字段,用于記錄連續(xù)關(guān)鍵字的編號(hào),該編號(hào)可以基于連續(xù)關(guān)鍵字存入連續(xù)關(guān)鍵字列表的時(shí)間早晚進(jìn)行設(shè)定;例如,上述客戶端在向上述連續(xù)關(guān)鍵字列表中存入新的連續(xù)關(guān)鍵字時(shí),可以按照存入的時(shí)間早晚的順序從小到大設(shè)定編號(hào)。Continue_Key_words字段,用于存儲(chǔ)上述客戶端從用戶成功提交的指令代碼中提取出的新的連續(xù)關(guān)鍵字。Varchar(N)表示存入的連續(xù)關(guān)鍵字為最大字節(jié)長(zhǎng)度為N的字符串。First_Find_Date字段和Last_Find_Date字段,用于記錄上述客戶端提取到該連續(xù)關(guān)鍵字的時(shí)間戳。其中,從指令代碼中提取到上述連續(xù)關(guān)鍵字的時(shí)間戳,可以包括首次提取到該連續(xù)關(guān)鍵字的時(shí)間戳,以及最近一次提取到該連續(xù)關(guān)鍵字的時(shí)間戳。First_Find_Date字段即用于記錄首次提取到該連續(xù)關(guān)鍵字的時(shí)間戳;例如,當(dāng)上述客戶端從用戶成功提交的指令代碼中首次提取一新的連續(xù)關(guān)鍵字時(shí),可以將提取出的該連續(xù)關(guān)鍵字的精確時(shí)間換算為時(shí)間戳記錄至First_Find_Date字段。Last_Find_Date字段記錄最近一次提取到該連續(xù)關(guān)鍵字的時(shí)間戳。例如,當(dāng)上述客戶端從用戶成功提交的指令代碼中再次提取到一相同的連續(xù)關(guān)鍵字時(shí),可以將再次提取出的該連續(xù)關(guān)鍵字的精確時(shí)間換算為時(shí)間戳記錄至First_Find_Date字段,并在下次重復(fù)提取到該連續(xù)關(guān)鍵字時(shí)對(duì)First_Find_Date字段記錄的時(shí)間戳進(jìn)行更新。當(dāng)然,如果上述客戶端在首次提取出該連續(xù)關(guān)鍵字后,未再次提取到該連續(xù)關(guān)鍵字時(shí),則Last_Find_Date字段記錄的時(shí)間戳也可以為空值或者與First_Find_Date字段記錄的時(shí)間戳保持一致(即將首次提取到的時(shí)間戳作為最近一次提取到的時(shí)間戳)。Use_count字段,用于記錄該連續(xù)關(guān)鍵字被成功提交的次數(shù),其中該連續(xù)關(guān)鍵字被成功提交的次數(shù),可以包括該連續(xù)關(guān)鍵字被同一用戶成功提交的總次數(shù),也可以包括被不同的用戶成功提交的總的用戶數(shù)。例如,如果如圖4所示出的連續(xù)關(guān)鍵字的識(shí)別流程由客戶端自主完成時(shí),此時(shí)由于該客戶端的使用用戶通常為同一用戶,因此,在這種情況下,上述連續(xù)關(guān)鍵字被成功提交的次數(shù),可以是被成功提交的總次數(shù),而不區(qū)分成功提交的用戶。上述客戶端每次用戶提交成功的指令代碼中提取到相同的連續(xù)關(guān)鍵字時(shí),可以對(duì)Use_count字段記錄的使用次數(shù)進(jìn)行累加完成更新。又如,如果如圖4所示出的連續(xù)關(guān)鍵字的識(shí)別流程,由與客戶端對(duì)接的后臺(tái)服務(wù)器來完成,此時(shí)由于該后臺(tái)服務(wù)器通常面向不同的客戶端,因此,在這種情況下,上述連續(xù)關(guān)鍵字被成功提交的次數(shù),可以是該連續(xù)關(guān)鍵字被成功提交的總的用戶數(shù),此時(shí)如果某一連續(xù)關(guān)鍵字被同一用戶重復(fù)提交,將不對(duì)Use_count字段記錄的使用次數(shù)進(jìn)行累加更新。Status字段,用于記錄該連續(xù)關(guān)鍵字的狀態(tài)。在本例示出的一種實(shí)施方式中,對(duì)于存儲(chǔ)在上述連續(xù)關(guān)鍵字列表中的關(guān)鍵字,可以包括New、Valid、Invalid三種狀態(tài)。其中,New狀態(tài)表示該關(guān)鍵詞為識(shí)別出的新的關(guān)鍵詞,當(dāng)上述客戶端從用戶成功提交的指令代碼中首次識(shí)別出一新的連續(xù)關(guān)鍵詞時(shí),在將連續(xù)關(guān)鍵詞存入Continue_Key_words字段后,可以在Status字段將該連續(xù)關(guān)鍵字記錄為New狀態(tài)。Valid狀態(tài)表示該關(guān)鍵詞為可用狀態(tài),Invalid狀態(tài)表示該關(guān)鍵詞為非可用狀態(tài)。請(qǐng)繼續(xù)參見圖4,在示出的一種實(shí)施方式中,在確定上述連續(xù)關(guān)鍵字列表中存儲(chǔ)的連續(xù)關(guān)鍵字是否可用,可以通過判定Use_count字段記錄的被成功提交的次數(shù)是否達(dá)到預(yù)設(shè)閾值來實(shí)現(xiàn)。如果上述Use_count字段列表中記錄的該連續(xù)關(guān)鍵字被成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值N(比如3個(gè)),此時(shí)該連續(xù)關(guān)鍵字可能被同一用戶使用N次,或者被N個(gè)不同的用戶使用;在這種情況下,表明該連續(xù)關(guān)鍵字為可用狀態(tài),上述客戶端可以在上述連續(xù)關(guān)鍵字列表中與該連續(xù)關(guān)鍵字對(duì)應(yīng)的Status字段中將該連續(xù)關(guān)鍵字記錄為Valid狀態(tài)。相應(yīng)的,如果上述Use_count字段列表中記錄的該連續(xù)關(guān)鍵字被成功提交的次數(shù)未達(dá)到預(yù)設(shè)閾值N,此時(shí)表明該連續(xù)關(guān)鍵字被使用的次數(shù)較少,在這種情況下,該連續(xù)關(guān)鍵字可能為較罕見或者使用頻率較低的連續(xù)關(guān)鍵字。對(duì)于這類較罕見或者使用頻率較低連續(xù)關(guān)鍵字,上述客戶端可以在上述連續(xù)關(guān)鍵字列表中與該連續(xù)關(guān)鍵字對(duì)應(yīng)的Status字段中將該連續(xù)關(guān)鍵字記錄為Invalid狀態(tài)。對(duì)于Invalid狀態(tài)的連續(xù)關(guān)鍵字,將不會(huì)在執(zhí)行代碼補(bǔ)全時(shí)向用戶輸出,從而通過將這類較罕見或者使用頻率較低的連續(xù)關(guān)鍵字標(biāo)記為Invalid狀態(tài),可以減少上述客戶端在進(jìn)行代碼補(bǔ)全時(shí),輸出的連續(xù)關(guān)鍵字清單的長(zhǎng)度(輸出的連續(xù)關(guān)鍵字清單過長(zhǎng),用戶查詢不便)。在本例中,上述連續(xù)關(guān)鍵字列表中存儲(chǔ)的連續(xù)關(guān)鍵字的狀態(tài),還可以進(jìn)行實(shí)時(shí)或者周期性的更新。一方面,對(duì)于上述連續(xù)關(guān)鍵字列表中任一Invalid狀態(tài)的連續(xù)關(guān)鍵字來說,如果其Use_count字段中記錄的使用次數(shù)在某一時(shí)刻達(dá)到預(yù)設(shè)閾值N,則客戶端可以立即對(duì)該連續(xù)關(guān)鍵字的狀態(tài)進(jìn)行切換,將該連續(xù)關(guān)鍵字的狀態(tài)由Invalid狀態(tài)切換為valid狀態(tài)。另一方面,對(duì)于上述連續(xù)關(guān)鍵字列表中任一Invalid狀態(tài)或者New狀態(tài)的連續(xù)關(guān)鍵字來說,如果其在第一指定時(shí)長(zhǎng)內(nèi)未被用戶使用(即在第一指定時(shí)長(zhǎng)內(nèi)未從用戶成功提交的代碼指令中識(shí)別出該連續(xù)關(guān)鍵字),表明在該第一指定時(shí)長(zhǎng)內(nèi)該連續(xù)關(guān)鍵字均未被任何用戶所使用;在這種情況下,客戶端可以立即對(duì)該連續(xù)關(guān)鍵字的狀態(tài)進(jìn)行切換,將該連續(xù)關(guān)鍵字的狀態(tài)由valid狀態(tài)或者New狀態(tài)切換為Invalid狀態(tài)。另外,在實(shí)際應(yīng)用中,還可以基于IDE支持的代碼語言的語法更新周期(比如一年),來設(shè)置一個(gè)第二指定時(shí)長(zhǎng),其中該第二指定時(shí)長(zhǎng)大于第一指定時(shí)長(zhǎng)。對(duì)于上述連續(xù)關(guān)鍵字列表中任一Invalid狀態(tài)的連續(xù)關(guān)鍵字來說,如果其在第二指定時(shí)長(zhǎng)內(nèi)未被用戶使用,此時(shí)可DE支持的代碼語言的語法可能已經(jīng)發(fā)生變化,在這種情況下,可以將該連續(xù)關(guān)鍵字從上述連續(xù)關(guān)鍵字列表中刪除。通過這種方式,可以在語法更新周期內(nèi),對(duì)一些語法發(fā)生變化的連續(xù)關(guān)鍵字進(jìn)行清理。其中,在計(jì)算上述連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字未被使用的時(shí)長(zhǎng)時(shí),如果該連續(xù)關(guān)鍵字的Last_Find_Date字段記錄的時(shí)間戳為空,或者與First_Find_Date字段記錄的時(shí)間戳保持一致,表明該連續(xù)時(shí)間戳被首次提取到后,未從用戶成功提交的指令代碼中再次提取到該連續(xù)時(shí)間戳,在這種情況下,可以用First_Find_Date字段記錄的時(shí)間戳,與當(dāng)前的精確時(shí)間轉(zhuǎn)換后的時(shí)間戳之間的差值,來表征該連續(xù)關(guān)鍵字未被使用的時(shí)長(zhǎng)。當(dāng)然,如果該連續(xù)關(guān)鍵字的Last_Find_Date字段記錄的時(shí)間戳不為空,或者與First_Find_Date字段記錄的時(shí)間戳不一致,表明該連續(xù)時(shí)間戳被首次提取到后,從用戶成功提交的指令代碼中再次提取到過該連續(xù)時(shí)間戳,在這種情況下,可以用Last_Find_Date字段記錄的時(shí)間戳,與當(dāng)前的精確時(shí)間轉(zhuǎn)換后的時(shí)間戳之間的差值,來表征該連續(xù)關(guān)鍵字未被使用的時(shí)長(zhǎng)。在本例中,在基于基礎(chǔ)關(guān)鍵字中存儲(chǔ)的基礎(chǔ)關(guān)鍵字以及連續(xù)關(guān)鍵字列表中存儲(chǔ)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全時(shí),可以將上述基礎(chǔ)關(guān)鍵字中存儲(chǔ)的基礎(chǔ)關(guān)鍵字,以及上述連續(xù)關(guān)鍵字列表中被記錄為Valid狀態(tài)提交給上述客戶端的前端程序,由上述客戶端的前端程序來執(zhí)行代碼補(bǔ)全(上述連續(xù)關(guān)鍵字列表中所有New狀態(tài)和Invalid狀態(tài)的連續(xù)關(guān)鍵字不參與代碼補(bǔ)全功能)。其中,上述客戶端的前端程序,是指上述客戶端中面向開發(fā)人員的用于針對(duì)開發(fā)人員輸入的代碼字符進(jìn)行代碼補(bǔ)全的程序。在示出的一種實(shí)施方式中,上述前端程序在基于基礎(chǔ)關(guān)鍵字列表中存儲(chǔ)的基礎(chǔ)關(guān)鍵字以及上述連續(xù)關(guān)鍵字列表中被記錄為Valid狀態(tài)的連續(xù)關(guān)鍵字,進(jìn)行代碼補(bǔ)全時(shí),可以在前臺(tái)實(shí)時(shí)獲取開發(fā)人員輸入的代碼字符,然后將該代碼字符作為起始字符與基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字,以及上述連續(xù)關(guān)鍵字列表中所有Valid狀態(tài)的連續(xù)關(guān)鍵字進(jìn)行匹配。需要說明的是,所謂實(shí)時(shí)獲取是指開發(fā)人員每輸入一個(gè)新的代碼字符,上述前端程序執(zhí)行一次代碼字符的獲取操作。通過這種方式,可以提升代碼補(bǔ)全的實(shí)時(shí)性,在第一時(shí)間將與代碼字符匹配的連續(xù)關(guān)鍵字向開發(fā)人員輸出。當(dāng)前端程序?qū)?shí)時(shí)獲取到的代碼字符作為起始字符與所有Valid狀態(tài)的連續(xù)關(guān)鍵字完成匹配,可以基于匹配結(jié)果,將所有起始字符與開發(fā)人員輸入的上述代碼字符匹配的基礎(chǔ)關(guān)鍵字以及Valid狀態(tài)的連續(xù)關(guān)鍵字(比如所有以上述代碼字符開頭的基礎(chǔ)關(guān)鍵字和Valid狀態(tài)的連續(xù)關(guān)鍵字),在在開發(fā)人員輸入上述代碼字符的位置對(duì)應(yīng)的預(yù)設(shè)位置輸出。其中,開發(fā)人員輸入上述代碼字符的位置,具體可以是指上述客戶端提供的面向開發(fā)人員的圖形用戶界面上用于輸入代碼的輸入框。而上述預(yù)設(shè)位置,可以是上述輸入框的下方,或者其它便于開發(fā)人員查看的位置。當(dāng)前端程序向開發(fā)人員輸出了起始字符與開發(fā)人員輸入的代碼字符匹配的基礎(chǔ)關(guān)鍵字以及連續(xù)關(guān)鍵字后,此時(shí)開發(fā)人員可以在輸出的關(guān)鍵字中查找自己需要輸入的關(guān)鍵字,然后可以選定該關(guān)鍵字,對(duì)已經(jīng)輸入的上述代碼字符進(jìn)行替換更新。當(dāng)替換完成后,此時(shí)開發(fā)人員通過輸入基礎(chǔ)關(guān)鍵字或者連續(xù)關(guān)鍵字開頭的幾個(gè)代碼字符,快速的完成了整個(gè)關(guān)鍵字的輸入,從而可以提升代碼的輸入效率。通過以上實(shí)施例可知,在本申請(qǐng)中通過將基于基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字從用戶提交成功的指令代碼中提取出的連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表,將該連續(xù)關(guān)鍵字列表中被不同的用戶成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài),并基于基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全,實(shí)現(xiàn)了系統(tǒng)可以自動(dòng)從用戶提交成功的指令代碼中收集新的連續(xù)關(guān)鍵字,對(duì)連續(xù)關(guān)鍵字列表進(jìn)行補(bǔ)充,而不需要由開發(fā)人員人工對(duì)連續(xù)關(guān)鍵字列表進(jìn)行維護(hù),從而可以提升收集連續(xù)關(guān)鍵字時(shí)的完整性和實(shí)效性,使得在基于連續(xù)關(guān)鍵字進(jìn)行代碼補(bǔ)全時(shí),可以為開發(fā)人員提供更加豐富的連續(xù)關(guān)鍵字。與上述方法實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了裝置的實(shí)施例。請(qǐng)參見圖5,本申請(qǐng)?zhí)岢鲆环N基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置50,應(yīng)用于客戶端;其中,請(qǐng)參見圖6,作為承載所述基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置50的客戶端所涉及的硬件架構(gòu)中,通常包括CPU、內(nèi)存、非易失性存儲(chǔ)器、網(wǎng)絡(luò)接口以及內(nèi)部總線等;以軟件實(shí)現(xiàn)為例,所述基于連續(xù)關(guān)鍵字的代碼補(bǔ)全裝置50通??梢岳斫鉃榧虞d在內(nèi)存中的計(jì)算機(jī)程序,通過CPU運(yùn)行之后形成的軟硬件相結(jié)合的邏輯裝置,所述裝置50包括:提取模塊501,用于基于預(yù)設(shè)的基礎(chǔ)關(guān)鍵字列表中的基礎(chǔ)關(guān)鍵字提取用戶提交成功的指令代碼中的連續(xù)關(guān)鍵字;存入模塊502,用于將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述連續(xù)關(guān)鍵字列表用于記錄從所述指令代碼中提取出的連續(xù)關(guān)鍵字以及所述連續(xù)關(guān)鍵字被成功提交的次數(shù);標(biāo)記模塊503,用于將所述連續(xù)關(guān)鍵字列表中記錄的被成功提交的次數(shù)達(dá)到預(yù)設(shè)閾值的連續(xù)關(guān)鍵字標(biāo)記為有效狀態(tài);執(zhí)行模塊504,用于基于所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行代碼補(bǔ)全。在本例中,所述提取模塊501具體用于:讀取用戶提交成功的指令代碼;確定該指令代碼中是否包含由基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字;當(dāng)該指令代碼中包含由所述基礎(chǔ)關(guān)鍵字列表中的任意兩個(gè)或者兩個(gè)以上的基礎(chǔ)關(guān)鍵字組成的連續(xù)關(guān)鍵字時(shí),提取該連續(xù)關(guān)鍵字。在本例中,所述存入模塊502具體用于:將提取出的所述連續(xù)關(guān)鍵字在預(yù)設(shè)的連續(xù)關(guān)鍵字列表中執(zhí)行完全匹配;如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的任一連續(xù)關(guān)鍵字完全匹配時(shí),在所述連續(xù)關(guān)鍵字列表中記錄提取到該連續(xù)關(guān)鍵字的時(shí)間戳,以及更新該連續(xù)關(guān)鍵字被成功提交的次數(shù);如果提取出的所述連續(xù)關(guān)鍵字與所述連續(xù)關(guān)鍵字列表中的連續(xù)關(guān)鍵字均不完全匹配,將提取出的所述連續(xù)關(guān)鍵字存入預(yù)設(shè)的連續(xù)關(guān)鍵字列表;其中,所述完全匹配包括長(zhǎng)度和內(nèi)容均匹配。在本例中,所述存入模塊502進(jìn)一步用于:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第一指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),在所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字標(biāo)記為無效狀態(tài)。在本例中,所述存入模塊502進(jìn)一步用于:當(dāng)所述連續(xù)關(guān)鍵字列表中任一連續(xù)關(guān)鍵字,在第二指定時(shí)長(zhǎng)內(nèi)未被用戶成功提交時(shí),從所述連續(xù)關(guān)鍵字列表中將該連續(xù)關(guān)鍵字刪除;其中,所述第二指定時(shí)長(zhǎng)大于所述第一指定時(shí)長(zhǎng)。在本例中,所述連續(xù)關(guān)鍵字被成功提交的次數(shù)包括:被成功提交的總次數(shù),或者被成功提交的用戶數(shù)。在本例中,所述執(zhí)行模塊504具體用于:實(shí)時(shí)獲取用戶輸入的代碼字符;將所述代碼字符作為起始字符與所述基礎(chǔ)關(guān)鍵字列表中記錄的基礎(chǔ)關(guān)鍵字,以及所述連續(xù)關(guān)鍵字列表中被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字執(zhí)行匹配;將所述基礎(chǔ)關(guān)鍵字列表中起始字符與所述代碼字符匹配的基礎(chǔ)關(guān)鍵字,以及將所述連續(xù)關(guān)鍵字列表中起始字符與所述代碼字符匹配的被標(biāo)記為有效狀態(tài)的連續(xù)關(guān)鍵字,在與所述代碼字符的輸入位置對(duì)應(yīng)的預(yù)設(shè)位置輸出,以提示所述用戶在輸出的所述基礎(chǔ)關(guān)鍵字以及所述連續(xù)關(guān)鍵字中選擇相應(yīng)的關(guān)鍵字對(duì)所述代碼字符執(zhí)行代碼補(bǔ)全。本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本申請(qǐng)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本申請(qǐng)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請(qǐng)的一般性原理并包括本申請(qǐng)未公開的本
技術(shù)領(lǐng)域:
:中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本申請(qǐng)的真正范圍和精神由下面的權(quán)利要求指出。應(yīng)當(dāng)理解的是,本申請(qǐng)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本申請(qǐng)的范圍僅由所附的權(quán)利要求來限制。以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3