999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

動態分析JavaScript的代碼推薦方法

2017-02-20 09:16:33劉爽
數碼世界 2017年2期
關鍵詞:用戶分析模型

劉爽

遼寧錦州渤海大學信息科學與技術學院

動態分析JavaScript的代碼推薦方法

劉爽

遼寧錦州渤海大學信息科學與技術學院

本文基于現有靜態分析技術,編程時代碼靜態分析方式所推薦方法準確度很低,更加重要的是推薦的響應速度慢,本文動態分析的JavaScript代碼推薦方式,根據Eclipse插件所實現的推薦平臺。本文采取一種預先建模方式用來保存動態代碼推薦的存儲數據結構和運行環境,根據對象節點上下文特征建立特征索引。同時將用戶程序代碼片段進行分解,分解的抽象語法樹是代碼分塊的執行基礎,在用戶代碼解釋執行過程中基于對象節點之間的相似度修正個別變量代碼推薦方式,并在文章結尾給出模擬、解釋執行動態代碼推薦產生的方法,實現動態分析代碼推薦的方法。根據文章最后的實驗結果分析可知,與靜態分析比較而言,JavaScript要實現動態分析代碼推薦必然能夠實現代碼推薦準確性有所提高和響應速度有所加快。

JavaScript 靜態分析 動態分析 代碼推薦 抽象語法樹

1 引言

目前,JavaScript技術作為非常流行腳本編程語言,JS腳本語言在不同的瀏覽器上應用,重要的是不限于瀏覽版本,除此之外的還有網絡服務器、智能手機操作系統。正是由于JavaScript技術的正盛,JavaScript本身擁有的全部集成開發環境(IDE)新特性和新功能,新特性和新功能備受關注。

很多IDE開發環境為用戶提供了JavaScript腳本代碼推薦的功能,當程序員輸入了某個關鍵字時,在繼續輸入一個點號“·”操作符,IDE自帶的開發平臺會自動彈出相關的代碼推薦列表,會根據實際情況自動推薦出有可能出現在點號之后的一些屬性或者是函數名稱,推薦給你能夠大大的縮短程序員系統內的類庫或本人已經定義的類庫進行使用,減輕程序編寫過大的工作量,避免開發過程中因為拼寫錯誤出現的異常處理,從而提高程序的開發效率,縮短軟件開發周期。

目前,代碼推薦在靜態分析的基礎上進行的分析過程,通過對代碼分析過程和數據流程分析構建基于靜態分析代碼推薦系統,另一種方法是通過分析歷史使用過的代碼進行靜態分析過程。另外,JavaScript某些特性是動態的,使用原型(prototype)開發模式實現JS類中部分屬性聲明和類與類之間的繼承特性,JavaScript在HTML網頁上可以通過先解釋后執行的方式運行用戶程序代碼片段,對象節點的類型在解釋運行代碼的過程中有可能變量類型發生改變。

為了能夠解決在JavaScript程序代碼推薦所產生的困難,JavaScript中的變量類型可以實現動態分析,動態分析JavaScript的變量或者函數推薦問題,通過模擬代碼解釋執行環境與系統的應用環境,按照解釋運行用戶代碼順序,獲得合理的推薦類型和代碼推薦信息。

2 建立動態分析代碼推薦模型問題

2.1 初始化運行環境

初始化代碼推薦的運行環境是為了讓用戶程序片段能夠解釋執行,其中包括:上下文對象節點和JavaScript的內置變量類型和函數,實際上,不同的JavaScript引擎需要運行在不同的平臺之上。讓JavaScript運行在Eclipse平臺中,與Java代碼進行結合,一方面可以實現字符串類型作為輸入參數,另一方面可以選擇直接解釋執行某段代碼,在完成用戶代碼解釋執行,用戶方可獲取代碼解釋執行與之相關的上下文數據,包括:定義的變量和函數等等。

2.2 添加類庫文件并保存上下文數據

當JavaScript程序開發時,需要基于第三方或者程序員定義的類庫文件,通過這種方式有利于減輕軟件開發負擔。但是,大量開源類庫給動態分析的代碼推薦工作有效性提供了可能。首先,由于類庫文件內容普遍較大且類庫的結構復雜,基于靜態分析程序效果不佳,要實現準確得到類庫對象類型較難。另外,由于類庫的動態分析要求時間和空間開銷較大,每次代碼推薦過程都必須完成動態分析操作,需要重復地完成上述操作,并將動態類庫分析結果進行保存便于后面的代碼調用。由于現有的類庫數量較多,且新的類庫正在不斷的涌現,并不需對全部的類庫都進行分析和保存。

2.3 保存全部可達對象節點

在模擬代碼推薦過程中,由于程序代碼片段并不完整地呈現,代碼推薦模擬過程中需要進行對象節點的替換操作,需要替換對象節點是代碼解釋執行中所創建的對象,也就是通過new的對象需要實時更新,在模擬運行環境中替換的所有已經創建的對象。將所有的從根節點出發可達的JavaScript解析數節點對象都可以進行替換操作,因此,需要保存從根節點到任何可達對象節點的全部記錄。

2.4 建立對象索引數據結構

本節中建立對象索引數據結構是根據已經獲得的所有已經保存的JavaScript對象節點數據,獲取兩種特征值作為對象節點數據Map結構的鍵和值,鍵值變量的存儲類型均為字符串類型,因此,本文所使用對象節點數據Map類型作為存儲對象節點索引的數據組織結構。

序號COI(objects)CreateObjectIndex建立對象索引函數,并輸入參數為對象集合輸入: objects- JavaScript 關于 JavaScript節點的對象集合;輸出:index,記錄對象索引信息的存儲數據結構Map,數據類型為string 1 Index←0;//下標的參數2for i←0 to objects .size-1//循環整個對象索引數組3for j←0 to map.size-1//循環變量在記錄對象索引的全部數據4 If(比較對象索引的對象名稱與記錄對象索引的對象名稱是否相同) map.add(對象名稱,對象索引數組); //在這判斷對象索引的對象名稱與記錄對象索引的對象名稱是否相同,相同的則添加到對象索引信息的存儲數據結構Map中5 String [] lists=分割函數(對象名稱) //取出對象索引數組中的對象名稱,將對象節點名稱數據放入lists數組中;6Foreach String list in lists Do//遍歷全部的對象節點名稱7 index←對象節點數據結構.添加函數(對象節點列表,對象索引數組) //取出對象節點名稱的下標值8 End Foreach 9 End if 10End for 11End for

2.5 生成代碼推薦

在本小節中,需要生成代碼推薦模型,并結合對象索引需要推薦的用戶代碼片段中,通過該模型建立代碼推薦信息。本文敘述的代碼推薦模型和代碼片段相關,當用戶提出代碼推薦請求時。在進行代碼推薦模型的同時需要先對用戶代碼劃分,建立代碼推薦模型之后運行代碼片段,根據節點推薦對象的類型,給出待代碼推薦的排序結果對象列表。

在生成代碼推薦模型的初期,本文將根據代碼推薦模型發出推薦代碼,在全程生成代碼推薦時,必須進行預處理的數據都保存在代碼推薦模型里。再次,由于本文所列出的代碼推薦模型針對HTML網頁中的JavaScript推薦程序,本文想要提供了一個待選的代碼步驟,由用戶推薦時決定是否進行網頁頁面綁定的結果,在應用程序中JS的代碼推薦應用,代碼推薦應用主要的作用是對網頁頁面XML對象節點樹狀結構的修改操作,這種能夠修改XML對象節點綁定相關頁面,為下一步的代碼推薦的準確度。然后,本文提出了一種動態分析用戶代碼片段的推薦方法,通過預分析代碼片段中無關代碼塊進行剔除,剔除在代碼片段中函數無關代碼也能夠被運行。最后,當運行用戶代碼片段的模擬運行開始,在代碼運行期間一般會出現不同異常問題,本文通過替換某些變量等方式實現代碼推薦。當在模擬代碼推薦運行結束之后,在生成代碼推薦得到關注的是對象類型信息,在對代碼推薦結果進行排序之后,給出代碼推薦序列。

3 執行代碼的模擬過程

當接收來自程序員提交功能請求時,通過模擬代碼解釋和執行用戶代碼片段的方式,以此方式獲得對象節點的數據信息,并實現動態分析類中變量類型代碼推薦方式。動態分析對象類型給出準確的推薦請求,另外,推薦對象適用于復雜表達式,在多個方法連續調用或者數組變量存在的地方,首先將用戶自定義的代碼片段分解成若干個不同的用戶代碼塊,其次,按照順序的方式執行已經分解過的代碼塊。

3.1 用戶代碼塊分解

在此處將用戶要執行的代碼片段進行逐個分解。在下述代碼片段中,程序員在①處提出了代碼推薦請求操作,此請求不但位于類對象節點T2的定義中,重要的是也位于Bp2函數代碼段,此種相互調用方式并不能順序執行請求。

下述的偽代碼片段以JavaScript語言結構轉換成的抽象語法樹,得到的轉化結果則是一個包含抽象的對象結點列表數據。在抽象語法樹上實現對對象節點的遍歷操作,如果對象結點是方法名稱或者對象節點的屬性時,表明該對象節點可能為用戶動態分析代碼推薦點,將對象結點中除了表達式之外的父結點都置于結果列表中,反之,需要添加在表達式之前節點上即可,循環遍歷結束為止。

序號用戶代碼片段的分解示意1 Var T1{//定義一個代碼段T1 2 a=1;//初始化變量值3函數(參數){renturn a;}//調用某個函數4 } 5 T1.ap3=2;//定義一個全局變量,并賦值6 Var T2{//定義一個代碼段T2 7Bp1:b=1;//在bp位置定義一個變量,并賦參數值8Bp2:函數(參數){//調用某個函數,并傳遞進一個相關參數9ap.a++; ap.ap3=2;//改變參數a和ap3的參數值10Return bp3.計算函數()①}//①處調用T2代碼段的compute函數11Bp3:T1 12}

3.2 用戶代碼塊的順序執行

上面研究的依次執行代碼塊是基于動態分析實現代碼推薦過程中的主要內容。在代碼解釋執行時,變量未被定義則會拋出異常處理請求,必須進行某些對象節點的替換操作。

在上面的代碼分解后開始順序執行代碼塊時,此時會出現在T1類中ap參數未定義的異常,必須進行某些對象節點的替換操作。先提取要替換對象Bp3的基本特征:屬性名(a,ap3),變量名(a,ap3,ap)。接著根據對象節點提取的這些特征值進行匹配對象節點模型,獲取包含全部對象節點的特征序列,將ap參數替換具有這些特征信息的對象節點a,并繼續順序執行用戶定義的代碼塊。

4 結論與展望

本文研究的動態分析方式實現的JavaScript類屬性和類方法的代碼推薦方法,動態分析特性實現具有準確度較高、響應速度較快的優點,今后有可能將對JavaScript代碼推薦結果的實現排序優化操作,使得代碼推薦方法的實用性實現大范圍擴展。

在以后的實踐工作中,研究動態分析代碼推薦方法指的關注的兩方面的問題:

①在JavaScript實現的代碼推薦過程中,現在網頁中存在大量數據解析和代碼運行問題,有可能通過創建一種動態代碼推薦排序功能實現對應用程序的實現,將相似度高的推薦對象節點放在推薦列表上端。本文提出的代碼推薦排序結果比較為簡單,但是效果一般,在這一方面值得進行下一步深入研究代碼推薦工作。

②進行有目的性的JavaScript使用代碼推薦模式,目前存在不少工作量是針對使用動態方式的代碼推薦,而針對在JS技術中實現的動態代碼推薦分析的方法相關研究比較少,由于JavaScript技術的某種特性,使得動態的代碼推薦方法有研究的可能性。

[1]葉云,李春強,胡軍山.基于CK610的Dalvik虛擬機移植與優化[J].計算機工程,2011,37(16):291-292

[2]周毅敏,陳榕.Dalvik虛擬機進程模型分析[J].計算機技術與發展,2010,20(2):83-86

[3]吳通.基于程序分析和機器學習的JavaScript代碼推薦研究[D].上海交通大學.2014

[4]吳通,陳雨亭.基于動態分析的JavaScript代碼推薦[J],計算機工程.2014:40(10),66-68

猜你喜歡
用戶分析模型
一半模型
隱蔽失效適航要求符合性驗證分析
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
電力系統及其自動化發展趨勢分析
3D打印中的模型分割與打包
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
主站蜘蛛池模板: 成人精品亚洲| 成人午夜在线播放| 她的性爱视频| 国产乱人伦AV在线A| 伊人久久久久久久久久| 美女内射视频WWW网站午夜| 亚洲首页在线观看| 日本www色视频| 色综合五月| 91久久国产成人免费观看| 国产精品综合久久久| 亚洲欧美人成电影在线观看| 999国内精品久久免费视频| 国产精品深爱在线| 毛片在线播放a| 亚洲成在人线av品善网好看| 成人精品午夜福利在线播放| 国产在线专区| 欧美性精品| 国产精品自在线天天看片| 一本久道久综合久久鬼色| 在线观看欧美精品二区| 婷婷丁香在线观看| 亚洲人成电影在线播放| 嫩草国产在线| 日本在线亚洲| 2021国产乱人伦在线播放| 99青青青精品视频在线| 亚洲成人手机在线| 国产精品极品美女自在线看免费一区二区| h网址在线观看| 免费三A级毛片视频| 国产成人在线无码免费视频| 1024你懂的国产精品| 在线一级毛片| a网站在线观看| 欧美日韩国产在线人成app| 亚洲综合网在线观看| 真实国产乱子伦视频| 中文字幕永久视频| 男女性色大片免费网站| 国产精品久久久免费视频| 亚洲美女操| 国产va欧美va在线观看| 亚洲日韩精品无码专区97| 午夜国产精品视频黄| 亚洲不卡影院| 综合成人国产| 精品国产网站| 97在线公开视频| 久无码久无码av无码| 国产va在线观看| 99精品热视频这里只有精品7 | 免费看av在线网站网址| a级免费视频| 久久一日本道色综合久久| 免费a级毛片18以上观看精品| 大香伊人久久| 日本草草视频在线观看| 国产视频 第一页| 黄色在线不卡| 国产99精品视频| 亚洲一区二区成人| 999国内精品久久免费视频| 久操中文在线| 99ri国产在线| 最新午夜男女福利片视频| 全部免费毛片免费播放| 亚洲最大福利网站| 熟女成人国产精品视频| 亚洲最大福利网站| 国产又黄又硬又粗| 久久99国产综合精品1| 国产成人精品一区二区秒拍1o| 亚洲国产精品一区二区高清无码久久| 无码人中文字幕| 亚洲久悠悠色悠在线播放| 久久精品91麻豆| 亚洲国产亚洲综合在线尤物| 白丝美女办公室高潮喷水视频| 色婷婷狠狠干| 高清码无在线看|