国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于程序切片技術的網(wǎng)頁過濾方法

      文檔序號:6545168閱讀:216來源:國知局
      基于程序切片技術的網(wǎng)頁過濾方法
      【專利摘要】本發(fā)明給出了一種基于程序切片技術的網(wǎng)頁過濾方法。該方法包括HTML依賴關系的生成、HTML切片的生成、嵌套在HTML里面的JavaScript依賴關系的生成、JavaScript切片這幾個功能模塊。以客戶端網(wǎng)頁的腳本源代碼為輸入,對腳本源代碼進行分析,根據(jù)HTML中的標簽中的依賴關系生成基于HTML的依賴圖,之后跟據(jù)這個依賴圖生成HTML切片。之后再抽取嵌套在HTML中的JavaScript代碼,對JavaScript代碼的對象級、方法級、語句級代碼做出依賴關系的構建,根據(jù)依賴關系構造出相對應的依賴圖,最后根據(jù)切片準則,用圖的可達性算法計算出切片。利用這些分層切片對網(wǎng)頁的腳本代碼進行層層切片處理,篩選出自己感興趣的內容,過濾掉不感興趣的或者不良的內容,以達到網(wǎng)頁過濾的效果。
      【專利說明】基于程序切片技術的網(wǎng)頁過濾方法
      【技術領域】
      [0001]本發(fā)明給出了一種基于程序切片技術的網(wǎng)頁過濾的設計方案,主要解決對網(wǎng)頁中不良信息的過濾問題,屬于信息安全領域。
      【背景技術】
      [0002]互聯(lián)網(wǎng)作為一個開放和使用信息資源的全球性網(wǎng)絡,已經(jīng)和正在對世界各國的經(jīng)濟、政治、文化、科技、軍事等各個領域產(chǎn)生重大影響,使人們的生活方式發(fā)生深刻變化?;ヂ?lián)網(wǎng)的開放性、互連性以及使用的高自由性、信息來源的不可控性等,使得網(wǎng)絡內容安全對社會的潛在威脅和危害是不可估量的。隨著互聯(lián)網(wǎng)的迅速普及,“網(wǎng)絡垃圾”已經(jīng)開始侵入我們的生活;黑客也開始利用互聯(lián)網(wǎng)進行惡意代碼、犯罪軟件的感染和傳播,從中獲取利益;不法分子更是利用互聯(lián)網(wǎng)作為滲透我們國家的秘密通道。因此,如何有效地過濾這些非法數(shù)據(jù),如何更有針對性地提取網(wǎng)頁內容,如何更加準確快捷地幫助用戶尋找其感興趣的信息,日益成為網(wǎng)絡安全領域的一個熱點問題。
      [0003]以跨平臺、可擴展、結構化等為特點的XML語言(可擴展標記語言)推出已經(jīng)有幾年的時間了,但據(jù)統(tǒng)計,互聯(lián)網(wǎng)上信息的載體大部分還是以HTML(超文本標記語言)網(wǎng)頁為主的。因此,對網(wǎng)頁信息的處理,尤其是對HTML網(wǎng)頁信息的處理已經(jīng)成為互聯(lián)網(wǎng)信息處理的重點,并由此產(chǎn)生了一些與互聯(lián)網(wǎng)信息處理有關的研究領域,如:網(wǎng)頁的檢索、網(wǎng)頁分類、網(wǎng)頁信息抽取、網(wǎng)頁摘要和新詞預測等。這些領域幾乎都是在網(wǎng)頁正文信息的基礎之上建立的,網(wǎng)頁正文信息抽取的質量和性能會直接影響到它們的處理結果和性能,因此網(wǎng)頁信息的過濾與抽取對互聯(lián)網(wǎng)信息處理來說是一個重要的基礎性的工作和研究課題。
      [0004]程序切片是一種重要的程序分析和理解技術,對程序進行切片的過程就是刪除無關代碼的過程,程序切片技術在程序調試、回歸測試、軟件維護、程序理解以及逆向工程等方面有著廣泛的應用。本專利將程序切片思想與網(wǎng)頁過濾技術相結合,一方面拓展了程序切片技術的應用領域,另一方面充分利用程序切片結果,優(yōu)化網(wǎng)頁過濾方法。
      [0005]參考文獻:
      [0006][I]蘇小魯,郭文明.基于DOM的HTML網(wǎng)頁正文信息抽取模塊的設計和實現(xiàn).北京郵電大學碩士研究生學位論文,2011.[0007][2]張迎周,徐寶文.一種新型形式化程序切片方法.中國科學E輯:信息科學,2008,38(2):161-176.
      【發(fā)明內容】

      [0008]技術問題:本發(fā)明的目的是提出一種基于程序切片技術的網(wǎng)頁過濾方法。該方案從HTML文件中標簽、元素以及嵌套在里面的JavaScript之間的依賴關系出發(fā),對依賴關系進行分析,構建一個多層次的切片方法來對HTML中各個標簽、元素以及嵌套的JavaScript的進行切片處理。針對現(xiàn)有的傳統(tǒng)切片在面向腳本語言切片功能的匱乏以及在的類似于JavaScript這種面向對象語言存在的效率和準確率上的技術瓶頸,本發(fā)明著手于客戶端腳本語言HTML里面標簽、元素以及嵌套在HTML中的JavaScript之間的依賴關系,結合程序切片技術,提出一種網(wǎng)頁過濾的方法。
      [0009]技術方案:本發(fā)明提出了一種基于程序切片技術的網(wǎng)頁過濾方法,包括對HTML標簽和內容進行切片處理、嵌套在HTML中的JavaScript進行切片處理,進而達到對客戶端網(wǎng)頁內容的過濾。
      [0010]在本發(fā)明中,所有的功能模塊都是基于程序切片技術的。在網(wǎng)頁過濾方法設計中,我們設計利用多鐘不同的切片思想,首先針對客戶端腳本源代碼中的HTML文件中的標簽和元素進行構造依賴關系的構造,而后在嵌套在HTML中的面向對象語言JavaScript中對象級、方法級以及語句級等等層次進行依賴圖的構建。然后對這些依賴關系,我們采取逐步求精算法來分層計算JavaScript的切片。
      [0011]目前的程序切片技術主要集中在處理面向過程和面向對象的語言,而網(wǎng)頁過濾方法采用的是基于對象的語言(JavaScript),因此需要對基于對象語言的程序切片方法開展相關研究在網(wǎng)頁檢測過程中通過瀏覽器內核解析網(wǎng)頁源代碼并提取出源代碼,以此作為網(wǎng)頁檢測的依據(jù),具體實現(xiàn)步驟為:
      [0012]該方法以圖論知識為理論基礎,以程序切片為技術手段,通過超級文本標記語言HTML (HyperTextMarkupLanguage,)以及嵌套在HTML中的一種腳本語言JavaScript中的依賴關系進行切片開發(fā)的模型,以達到對網(wǎng)頁源代碼進行切片處理;該方法包括文檔對象模型 HTMLDOM(HTMLDocumentObjectModel,)樹構造、JavaScript 方法級依賴圖、JavaScript語句級依賴圖、通過依賴圖建立切片等這幾個功能模塊;利用這些分層切片對網(wǎng)頁的腳本代碼進行層層切片處理,篩選出自己感興趣的內容,過濾掉不感興趣的或者不良的內容,以達到網(wǎng)頁過濾的效果,所包含的步驟為:
      [0013]步驟I)基于DOM樹的抽取方式:
      [0014]基于DOM樹的抽取方式是基于單一頁面的處理,該方式并不關心頁面的布局,首先將網(wǎng)頁轉換成DOM樹,根據(jù)所處理頁面的DOM樹按照某種算法把網(wǎng)頁內的噪音信息去除,從而抽取出正文信息;
      [0015]步驟2)將HTML文檔構建成DOM樹的依賴圖
      [0016]DOM把一份文檔表不為一棵樹,DOM樹中的一切是以最外層的HTML包含兀素即html元素開始的,使用樹的比喻,叫做根元素,從根流出的線表示不同標記部分之間的關系;head和body元素是html根元素的孩子;title是head的孩子,head是title的父親;處在同一層次的且互不包含的兩個分支之間稱為兄弟關系,整個樹就這樣組織下去,直到最后的葉子節(jié)點變?yōu)閷傩灾禐橹?html, head, body, title均為HTML語言中成對出現(xiàn)的標簽);
      [0017]步驟3)根據(jù)DOM依賴圖構建切片
      [0018]根據(jù)已知的樹形依賴圖,根據(jù)圖的可達性算法構建出相應的切片;
      [0019]步驟4)抽取JavaScript代碼
      [0020]JavaScript代碼在HTML —般以標簽格式存在,編寫程序或者使用開放源碼的JavaScript引擎SpiderMonkey工具(一種用C語言實現(xiàn)的JavaScript腳本引擎)來抽取JavaScript 代碼;
      [0021]步驟5)構建出JavaScript程序的依賴關系[0022]通過對JavaScript源程序進行基于掃描的語法分析,找出所有的對象、變量、方法的定義;按照邏輯結構將JavaScript分為對象層、方法層和語句層,逐層抽取程序語句間的數(shù)據(jù)依賴和控制依賴關系;通過對JavaScript源程序中賦值語句的左值右值,控制語句的謂詞、函數(shù)調用語句對實參和全局變量的影響以及對象繼承時的多態(tài)進行語義分析;針對JavaScript中動態(tài)定義對象的模式,實現(xiàn)對象中數(shù)據(jù)和方法的統(tǒng)一封裝處理;
      [0023]步驟6)基于對象的系統(tǒng)依賴圖的構造方法
      [0024]根據(jù)數(shù)據(jù)依賴和控制依賴關系構造出由對象層次子圖0HG、控制依賴子圖CDG、數(shù)據(jù)依賴子圖DDG三個基本層次組成的基于對象的系統(tǒng)依賴圖BOSOG ;0HG描述了基本對象的結構信息和對象層次信息,其中的頂點包括每個對象的對象首部頂點、定義在每個對象中的每個方法的方法首部頂點:邊包括每個對象得對象首部頂點到與其有繼承關系的對象的相應對象首部頂點的繼承邊,由方法首部表示的方法節(jié)點到定義該方法的對象的對象首部頂點的類成員邊;當一個對象和另一個對象或者系統(tǒng)結合時,通過對象首部節(jié)點和對象成員邊就能夠方便的訪問方法的信息,同時圖中子對象沒有重新表示從超對象中CDG中描述了函數(shù)方法的具體語句現(xiàn)過程,采用繼承的方法,因此消除了對繼承方法的重復表示;用靜態(tài)后向切片的方法,包含了方法的多態(tài)性表示;DDG中包括了對象的實現(xiàn),消息動態(tài)綁定到對象中的特定方法表 示對象間的數(shù)據(jù)依賴關系;
      [0025]步驟7) JavaScript切片算法實現(xiàn)
      [0026]根據(jù)JavaScript自身的特點建立JavaScript語言的分層切片模型,采用對傳統(tǒng)的系統(tǒng)依賴圖進行基于對象擴充的方案進行JavaScript腳本切片;
      [0027]步驟8)相關的程序片段切分與計算方法
      [0028]利用兩階段圖形可達性算法逆向遍歷基于對象的系統(tǒng)依賴圖B0S0G,首先在BOSOG上找出從節(jié)點η出發(fā),沿數(shù)據(jù)依賴邊或者控制依賴邊可以到達的節(jié)點進行標記,構成程序關于節(jié)點η的程序切片;其次標記在BOSOG中與η相連的節(jié)點,然后標記跟這些節(jié)點相連的節(jié)點,依次計算到不能找到新的節(jié)點為止,通過上述遍歷過程中的節(jié)點標記,計算出相關的程序片段。
      [0029]有益效果:作為網(wǎng)頁過濾方法,本發(fā)明基本上實現(xiàn)了網(wǎng)頁過濾所應該具有的功能。具有以下的一些特點和創(chuàng)新之處:
      [0030]多層次的程序切片技術:本發(fā)明中使用的程序切片技術是基于層次結構依賴圖的程序切片,它不同于傳統(tǒng)的程序切片僅僅在斷言或者語句的細粒度級別上的切片方法,它屬于一種多層次的切片方法,在這種切片方法中,不必構造整個程序的系統(tǒng)依賴圖,對比傳統(tǒng)的切片方法,多層次的切片方法有如下的優(yōu)點:
      [0031]?復雜度低:
      [0032]構造依賴圖的復雜度取決于以下元素:
      [0033](I)節(jié)點數(shù)(Vertices),即一個方法或過程中謂詞和賦值語句的最大數(shù);
      [0034](2)邊數(shù)(Edges),即一個方法或過程中邊的最大數(shù);
      [0035](3)參數(shù)個數(shù)(Params),即一個方法或過程中形式參數(shù)的最大數(shù);
      [0036](4)全局變量數(shù)(Globals),即系統(tǒng)中的全局變量數(shù);
      [0037](5)局部變量數(shù)(Locals),即函數(shù)內部的局部變量數(shù);
      [0038](6)調用位置數(shù)(CallSites),即一個方法或過程中調用位置的最大數(shù);[0039](7)繼承樹深度(TreeD印th),即確定可能的間接調用目標的繼承樹深度;
      [0040](8)方法(Methods),即系統(tǒng)中方法或過程的數(shù)目。
      [0041]令ParamVertices (m) = Params+Globals+Locals,則有 SDG 的大小的上界滿足下列條件:
      [0042]Size(SDG(m)) = Vertices+CallSites* (1+TreeDepth*(2*ParamVertices(m))) +2*ParamVertices(m)
      [0043]利用層次切片,首先不必構造整個程序的系統(tǒng)依賴圖,而是根據(jù)切片準則構造方法級依賴圖,刪除每個對象中與切片準則無關的方法和變量;最后根據(jù)切片準則構造語句級依賴圖,在每個方法中刪除與切片準則無關的語句和謂詞等。在分層模型中,由于刪除了所有與切片準則無關的 方法等等,這使得依賴關系的數(shù)量同樣得到刪減,因而,層次切片模型的復雜度比傳統(tǒng)的方法低。
      [0044]?精確度高:分層切片方法將對象級和方法級的無關的對象和方法排除,而后考慮這些對象和方法里面變量,語句之間關系的這些細節(jié)問題,最后選用恰當?shù)恼Z句級依賴圖和切片算法,實為更為精確的切片。
      [0045]?可復用性強:分層切片方法可以將網(wǎng)頁腳本中的JavaScript都抽取出來放在一個源代碼文件中,這個源代碼文件經(jīng)過少量修改甚至不需要修改就可以編譯。當別人需要調用這個構件的時候,只需要使用切片后的代碼。
      [0046]基于HTML的切片技術:本發(fā)明客戶端的網(wǎng)頁源代碼出發(fā),對網(wǎng)頁中腳本語言進行分析。HTML是由標簽和屬性構成,因為HTML中的每個標簽之間都存在著互相依存的關系,標簽之間存在著相互調用。一個HTML文件中所有標簽之間的依賴關系對于理解網(wǎng)頁結構,分析網(wǎng)頁結構以及切分網(wǎng)頁結構都可以起到很重要的作用。本發(fā)明對HTML中的所有標簽進行分析,從中抽取出所有標簽之間的依賴關系,得到一個HTML標簽依賴關系圖,然后用程序切片技術來分析這個標簽依賴圖,將某一個標簽作為切片節(jié)點,對標簽依賴圖進行切片,得到這個標簽所依賴的其他所有標簽。將所有切片后得到的標簽的定義從HTML文件中抽取出來,生成一個切片代碼,這個代碼就包含了運行這個標簽所需要的所有的、最精簡的代碼,從而實現(xiàn)源代碼的切分,達到生成網(wǎng)頁過濾的目的。
      [0047]基于對象的切片技術:在面向對象語言切片技術的基礎上,提出了基于對象語言的切片算法JavaScript語言是基于對象的語言。在對JavaScript程序進行語法和語義分析構建JavaScript程序的依賴程序層次模型,構造對象層次子圖、控制依賴與數(shù)據(jù)依賴子圖,從而構建基于對象的系統(tǒng)依賴圖。再次利用依據(jù)網(wǎng)頁分析模塊構建的切片準則來逆向遍歷基于對象的系統(tǒng)依賴圖,最后計算出相關的切片
      【專利附圖】

      【附圖說明】
      [0048]圖1是本發(fā)明的網(wǎng)頁過濾方法的整體流程框圖。
      [0049]圖2描述了 JavaScript抽取的過程。
      [0050]圖3描述了 JavaScript切片構造的過程。
      [0051]圖4描述了網(wǎng)頁代碼分層切片模型的過程。
      【具體實施方式】[0052]本發(fā)明中基于程序切片的Web服務平臺包含對HTML標簽和內容進行切片處理、嵌套在HTML中的JavaScript進行切片等功能。
      [0053]JavaScript是一種基于對象的編程語言,不同于其它面向對象的語言,它沒有類的概念,只有對象。JavaScript語言的對象有三個來源=JavaScript內部對象、主機環(huán)境中對象、程序創(chuàng)建的對象。任何對象都可以作為原型對象與另一個對象聯(lián)系起來,允許后一個對象來共享前一個對象的所有屬性。JavaScript提供動態(tài)繼承,繼承可以根據(jù)單個對象的不同而不同。而且還支持不需要任何聲明的函數(shù),函數(shù)可以是對象的屬性,作為寬松類型的方法被調用執(zhí)行。
      [0054]任一個對象都可以定義自己的屬性,不管是在創(chuàng)建階段還是在運行階段。JavaScript在運行時可以動態(tài)的增加或者刪除任何對象的屬性。如果為一組對象的原型對象增加一個屬性的話,那么所有繼承于這個原型對象的所有對象都可獲取這個新增加的屬性。JavaScript沒有Java等面向對象語言所具有的靜態(tài)類型,也沒有嚴格的類型檢查機制。但JavaScript支持大部分的Java語言的語法和控制流結構。Java等面向對象語言的類是通過聲明來創(chuàng)建并在編譯階段就固定好了的,而JavaScript支持基于以下幾個基本數(shù)據(jù)類型的運行時類系統(tǒng):數(shù)字類型,布爾類型和字符串類型。
      [0055]圖1給出了本發(fā)明方法的一個整體的流程框圖,描述了各個模塊的作用以及模塊之間的聯(lián)系。下面的內容是對本發(fā)明中的網(wǎng)頁過濾方法的各個功能在實現(xiàn)上的詳細描述。
      [0056]I,將HTML構造成DOM樹
      [0057]DOM接口提供了一種通過分層對象模型來訪問XML文檔信息的方式,這些對象模型依據(jù)XML的文檔結構,即元素間有序的嵌套結構,形成一棵對象節(jié)點樹,本文中稱此結構為DOM樹,它將XML文檔表示為節(jié)點構成的樹。org.w3c.dom包中的不同接口可以表示元素、屬性、已分析的字符數(shù)據(jù)、注釋和處理指令,它們都是公用Node接口的子接口。Node接口提供了在樹中導航與處理的基本方法。
      [0058]2,對DOM樹進行切片處理
      [0059]DTD切片算法描述:
      [0060]DTD切片分兩個步驟:切片規(guī)則生成、切片文檔生成,以下將討論這兩個步驟的算法。
      [0061]算法I切片規(guī)則生成:
      [0062]輸入:DTD文檔dtdFile切片選取的元素節(jié)點集合criterionSet。
      [0063]輸出:切片規(guī)則樹criterionT。
      [0064]步驟1:解析dtdFile得到樹型結構dtdT,獲取dtdT根元素節(jié)點boot ;
      [0065]步驟2:如果boot為非空,則轉步驟3,否則算法結束;
      [0066]步驟3:從criterionSet中選取一個元素節(jié)點,并在dtdT中搜索,如果存在該元素節(jié)點,則轉步驟4 ;
      [0067]否則算法結束;
      [0068]步驟4:在criterionT中生成從根元素節(jié)點到搜索元素節(jié)點的樹分支,轉步驟3。
      [0069]算法2切片文檔生成:
      [0070]輸人:HTML文檔 srcHTMLFile,DTD 文檔 dtdFile,切片規(guī)則樹 criterionT。
      [0071]輸出:DTD切片文檔 sliceDtdFile, XML 切片文檔 slicedHTMLFile[0072]步驟1:解析sourceFile形成DOM樹document ;解析dtdFile得到dtd樹型結構dtdT ;
      [0073]步驟2:先序遍歷。criterionT獲取元素節(jié)點node,如果節(jié)點不為空,貝U轉步驟3,否則算法結束;
      [0074]步驟3:先序遍歷document獲取與node匹配的元素節(jié)點及其內容,寫入slicedHTMLFile ;先序遍歷dtdT獲取與node匹配的元素節(jié)點信息,寫入slicedDtdFile,轉步驟2 ;
      [0075]3, JavaScript 代碼的抽取
      [0076]JavaScript代碼在HTML —般以這樣的格式存在的〈scripttype = "text/javascript"〉和〈/script〉之間,這種是目前嵌入JavaScript的一般方式。JavaScript代碼可以在head區(qū)或body區(qū),但有些區(qū)別。JavaScript代碼隨網(wǎng)頁的其他元素順序載入,載入后先經(jīng)過一次語法檢查,然后順序執(zhí)行;如果JavaScript代碼中不包含document,write或document, writeln語句,寫在head區(qū)比較好,因為這樣會先執(zhí)行。
      [0077]根據(jù)已知的網(wǎng)頁,遍歷該網(wǎng)頁的每個節(jié)點,通過上述對JavaScript嵌入方式的分析來判斷,如果是script節(jié)點,并且是JavaScript類型,則分析是文件還是代碼;若是文件,則通過HTTP請求獲取此文件;若是代碼,直接將這些代碼保存為本地文件。最后將所有JavaScript文件交給程序
      [0078]4, JavaScript對象級依賴圖
      [0079]開放源碼的JavaScript引擎SpiderMonkey提供了一個最基本的且易于擴展的JavaScript分析器。通過包裝SpiderMonkey使其包裝后的接口能接收從頁面提取的JavaScript 代石馬。
      [0080]一個完整的對象級依賴圖除了包含對象節(jié)點之外,還必須能準確地反映這些節(jié)點之間的各種依賴關系。在JavaScript語言的程序中,主要存在以下幾種依賴關系。
      [0081](I)對象間的創(chuàng)建關系
      [0082]對象之間的創(chuàng)建關系是一種委托關系的具體實現(xiàn)。一個對象在其方法中依靠創(chuàng)建另一種對象,而后再委托它進行部分工作,最后完成自己的工作。這種關系發(fā)生在一個對象在實現(xiàn)某個方法時使用另一個對象的時候。
      [0083](2)對象之間的聚合關系
      [0084]對象之間的聚合關系是很常見的。例如飛機是由機頭、機身、機翼和尾翼等組成,這是一種聚合關系,它不能用繼承關系來描述,但可以用對象之間的聚合關系或包含關系來描述。這種關系是直接的。
      [0085](3)對象通信(消息)關系
      [0086]消息流圖描述了系統(tǒng)中對象間的消息流。目標不在于描述系統(tǒng)中的所有消息流,只是描述那些相關對象間交換的主要消息。這種圖可以反映相互創(chuàng)建的對象是如何交互來完成所賦予的任務的,這樣就可以檢查設計中的缺點。有兩種不同的消息圖,一種描述從一個對象到其他對象的外向消息流;另一種是從其他對象到本對象的內向消息流。
      [0087]5, JavaScript語句級依賴圖
      [0088]語句依賴圖是對對象的方法體進行分析所得到的,它包括所有語句類型。對于方法調用需要分析出方法形參之間的關系,即是否一部分形參受到另一部分形參的影響即可,通過形參與實參的對應關系把調用函數(shù)與被調用函數(shù)聯(lián)系起來。New語句的處理:如果相應的類沒有構造函數(shù),我們則給出缺省的構造函數(shù),即給對象中的每個數(shù)據(jù)成員賦缺省的初值。
      [0089]語句級依賴圖由語句節(jié)點和語句之間的依賴關系組成,其中語句節(jié)點可分為以下三大種類型:
      [0090](I)復合語句開始節(jié)點
      [0091]用語句體第一個語句的sequence表示,但是要標明是語句體開始節(jié)點。
      [0092](2)復合語句結束節(jié)點
      [0093]用語句體最后一個語句的sequence表示,但是要標明是語句體結束節(jié)點;復合語句指:方法體、if-else語句、if-else的肯定部分、if_else的否定部分、switch語句、while語句、do-while語句、for語句。
      [0094](3)其他的語句節(jié)點
      [0095]I)簡單語句節(jié)點,用該語句的sequence表示;
      [0096]2)謂詞節(jié)點,即條件語句(包括switch語句)和循環(huán)語句的判斷部分,用該語句謂詞的sequence表示;
      [0097]3)方法調用節(jié)點,用該語句的sequence表示;
      [0098]4)結構化跳轉語句節(jié)點,包括break, continue, return語句,用它們的sequence表不。
      [0099]語句之間的依賴關系包括:
      [0100]I)數(shù)據(jù)依賴:即變量X在語句節(jié)點i的定義是語句節(jié)點j的一個到達定義,則j數(shù)據(jù)依賴于i,該指針是從j指向i;
      [0101]2)普通依賴:即一般的順序語句結構,如果語句節(jié)點j的下一個語句節(jié)點是i,則指針從j指向i,由于我們的程序中不存在goto語句,所以我們在每建立一個節(jié)點以后,都和它前面的節(jié)點建立“普通依賴”關系的連接,這里“普通依賴”關系只存在于平級(即同一層次)的語句節(jié)點之間;
      [0102]3)控制的依賴關系:只局限于條件語句和循環(huán)語句內部,只要把指針從條件體或循環(huán)體內的語句指向條件判斷部分即可。
      [0103]6, JavaScript語句級切片算法
      [0104]K.L.0ttenstein等人提出的用于計算過程內切片的程序依賴圖和S.Horwitz等人提出的用于解決過程間切片計算問題的系統(tǒng)依賴圖(SDG)都是在語句級表示程序。我們稱之為語句級依賴圖。這類依賴圖的節(jié)點表示出現(xiàn)在程序中的語句和斷言。邊表示程序組件之間的依賴關系。在利用依賴圖的方法中,若一個切片準則C在依賴圖G中確定了一個開始節(jié)點n,則關于C的切片就是G中從η經(jīng)過依賴邊能夠到達的節(jié)點相應的語句和斷言構成的集合(考慮后向切片)或者是G中從C能夠到達的節(jié)點相應的語句和斷言構成的集合(考慮前向切片)。
      [0105]定義I (語句級切片準則)語句級切片準則是一個二元組<η,V, P〉,其中η是程序P的一條語句,V是在η點定義或引用的變量集合。
      [0106]定義2 (語句級切片)語句級切片是一種程序分解技術。一個程序P和一個切片準則<η,V, P〉,其中η是程序P中的某條語句,V是在η定義或引用的一個變量集合,程序P關于切片準則 <n,V, P〉的程序切片Slice ?η, V, P?是由程序P中影響變量V在η點的值的語句和謂詞構成(后向切片);或由變量V影響的語句和謂詞構成(前向切片)。
      【權利要求】
      1.一種基于程序切片技術的網(wǎng)頁過濾方法,其特征在于該方法以圖論知識為理論基礎,以程序切片為技術手段,通過超級文本標記語言HTML以及嵌套在HTML中的一種腳本語言JavaScript中的依賴關系進行切片開發(fā)的模型,以達到對網(wǎng)頁源代碼進行切片處理;該方法包括文檔對象模型HTMLDOM樹構造、JavaScript方法級依賴圖、JavaScript語句級依賴圖、通過依賴圖建立切片等這幾個功能模塊;利用這些分層切片對網(wǎng)頁的腳本代碼進行層層切片處理,篩選出自己感興趣的內容,過濾掉不感興趣的或者不良的內容,以達到網(wǎng)頁過濾的效果,所包含的步驟為: 步驟I)基于DOM樹的抽取方式: 基于DOM樹的抽取方式是基于單一頁面的處理,該方式并不關心頁面的布局,首先將網(wǎng)頁轉換成DOM樹,根據(jù)所處理頁面的DOM樹按照某種算法把網(wǎng)頁內的噪音信息去除,從而抽取出正文信息; 步驟2)將HTML文檔構建成DOM樹的依賴圖 DOM把一份文檔表不為一棵樹,DOM樹中的一切是以最外層的HTML包含兀素即html兀素開始的,使用樹的比喻,叫做根元素,從根流出的線表示不同標記部分之間的關系;head和body元素是html根元素的孩子;title是head的孩子,head是title的父親;處在同一層次的且互不包含的兩個分支之間稱為兄弟關系,整個樹就這樣組織下去,直到最后的葉子節(jié)點變?yōu)閷傩灾禐橹梗? 步驟3)根據(jù)DOM依賴圖構建切片 根據(jù)已知的樹形依賴圖,根據(jù)圖的可達性算法構建出相應的切片; 步驟4)抽取JavaScript代碼 JavaScript代碼在HTML—般以標簽格式存在,編寫程序或者使用開放源碼的JavaScript 引擎 SpiderMonkey 工具來抽取 JavaScript 代碼; 步驟5)構建出JavaScript程序的依賴關系 通過對JavaScript源程序進行基于掃描的語法分析,找出所有的對象、變量、方法的定義;按照邏輯結構將JavaScript分為對象層、方法層和語句層,逐層抽取程序語句間的數(shù)據(jù)依賴和控制依賴關系;通過對JavaScript源程序中賦值語句的左值右值,控制語句的謂詞、函數(shù)調用語句對實參和全局變量的影響以及對象繼承時的多態(tài)進行語義分析;針對JavaScript中動態(tài)定義對象的模式,實現(xiàn)對象中數(shù)據(jù)和方法的統(tǒng)一封裝處理; 步驟6)基于對象的系統(tǒng)依賴圖的構造方法 根據(jù)數(shù)據(jù)依賴和控制依賴關系構造出由對象層次子圖0HG、控制依賴子圖CDG、數(shù)據(jù)依賴子圖DDG三個基本層次組成的基于對象的系統(tǒng)依賴圖BOSOG ;OHG描述了基本對象的結構信息和對象層次信息,其中的頂點包括每個對象的對象首部頂點、定義在每個對象中的每個方法的方法首部頂點:邊包括每個對象得對象首部頂點到與其有繼承關系的對象的相應對象首部頂點的繼承邊,由方法首部表示的方法節(jié)點到定義該方法的對象的對象首部頂點的類成員邊;當一個對象和另一個對象或者系統(tǒng)結合時,通過對象首部節(jié)點和對象成員邊就能夠方 便的訪問方法的信息,同時圖中子對象沒有重新表示從超對象中CDG中描述了函數(shù)方法的具體語句現(xiàn)過程,采用繼承的方法,因此消除了對繼承方法的重復表示;用靜態(tài)后向切片的方法,包含了方法的多態(tài)性表示;DDG中包括了對象的實現(xiàn),消息動態(tài)綁定到對象中的特定方法表示對象間的數(shù)據(jù)依賴關系;步驟7) JavaScript切片算法實現(xiàn) 根據(jù)JavaScript自身的特點建立JavaScript語言的分層切片模型,采用對傳統(tǒng)的系統(tǒng)依賴圖進行基于對象擴充的方案進行JavaScript腳本切片; 步驟8)相關的程序片段切分與計算方法 利用兩階段圖形可達性算法逆向遍歷基于對象的系統(tǒng)依賴圖BOSOG,首先在BOSOG上找出從節(jié)點η出 發(fā),沿數(shù)據(jù)依賴邊或者控制依賴邊可以到達的節(jié)點進行標記,構成程序關于節(jié)點η的程序切片;其次標記在BOSOG中與η相連的節(jié)點,然后標記跟這些節(jié)點相連的節(jié)點,依次計算到不能找到新的節(jié)點為止,通過上述遍歷過程中的節(jié)點標記,計算出相關的程序片段。
      【文檔編號】G06F17/30GK103970845SQ201410175921
      【公開日】2014年8月6日 申請日期:2014年4月28日 優(yōu)先權日:2014年4月28日
      【發(fā)明者】張迎周, 孫健, 仉雪玲, 孫韋翠, 高海燕, 陳棟, 王子元, 嵇宇 申請人:南京郵電大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1