[發(fā)明專利]一種基于AST的Java代碼SSA單路徑的生成方法有效
| 申請?zhí)枺?/td> | 201611233521.7 | 申請日: | 2016-12-28 |
| 公開(公告)號: | CN106649118B | 公開(公告)日: | 2019-02-19 |
| 發(fā)明(設(shè)計)人: | 張?zhí)?/a>;姜人和;潘敏學(xué);陳鑫;吳少博 | 申請(專利權(quán))人: | 南京大學(xué) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京知識律師事務(wù)所 32207 | 代理人: | 張?zhí)K沛 |
| 地址: | 210093 江*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 ast java 代碼 ssa 路徑 生成 方法 | ||
本發(fā)明公開了一種基于AST的Java代碼SSA單路徑的生成方法,其特征是包括如下步驟:步驟10:輸入存放.java文件的src目錄的路徑;步驟11:使用ASTParser獲得Java代碼的AST;步驟12:使用ASTVisitor處理所有的MethodDeclaration,將每一個方法都拆分成若干條單路徑代碼;步驟13:使用JDT AST修改單路徑代碼的AST,將單路徑轉(zhuǎn)化為SSA的格式;步驟14:將SSA格式的單路徑封裝成符合Java語法規(guī)范的Java類,存放在path目錄下,作為輸出。本發(fā)明可以使研究者在該工具的基礎(chǔ)上進行代碼分析,降低了直接從代碼文本進行分析的復(fù)雜性。
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于AST的Java代碼SSA單路徑的生成方法。
背景技術(shù)
程序靜態(tài)分析(Program Static Analysis)是在不運行程序的前提下進行的代碼分析工作,隨著越來越多的代碼被上傳到開源代碼庫中,大多數(shù)代碼不可以直接運行,我們要對這些開源代碼進行分析理解,就需要借助靜態(tài)分析技術(shù)。靜態(tài)分析技術(shù)中經(jīng)常會涉及到符號執(zhí)行(Symbolic Execution),抽象語法樹(Abstract Syntax Tree,AST)分析,控制流分析(Control Flow Analysis)等,借鑒這些靜態(tài)分析技術(shù)的思想,我們旨在提供一種Java代碼靜態(tài)單賦值(Static Single Assignment,SSA)格式的單路徑的生成方法支持Java代碼靜態(tài)分析方面的工作,研究者可以在該工具的基礎(chǔ)上進行Java代碼的分析,降低了直接從代碼文本進行分析的復(fù)雜性。
JDT(Java Development Tools)是Eclipse提供的一組用于實現(xiàn)Java IDE的工具,核心是AST,利用JDT提供的AST訪問API,我們可以將Java代碼轉(zhuǎn)化成AST,遍歷AST樹節(jié)點,修改AST樹結(jié)構(gòu)并將修改寫回到源代碼。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明目的是,提供一種Java代碼SSA格式的單路徑的生成方法支持Java代碼靜態(tài)分析方面的工作,研究者可以在該工具的基礎(chǔ)上進行Java代碼的分析,降低了直接從代碼文本進行分析的復(fù)雜性。
本發(fā)明是通過以下的技術(shù)方案實現(xiàn)的:一種基于AST的Java代碼SSA單路徑的生成方法,包括步驟:
步驟10:輸入存放.java文件的src目錄的路徑;
步驟11:使用ASTParser獲得Java代碼的AST;
步驟12:使用ASTVisitor處理所有的MethodDeclaration,將每一個方法都拆分成若干條單路徑代碼;
步驟13:使用JDT AST修改單路徑代碼的AST,將單路徑轉(zhuǎn)化為SSA的格式;
步驟14:將SSA格式的單路徑封裝成符合Java語法規(guī)范的Java類,存放在path目錄下,作為輸出。
其中步驟10所輸入的Java工程源代碼具有如下的目錄結(jié)構(gòu):
TestCase類的包名為testcase,有test和test2兩個方法,經(jīng)過步驟14之后,最終的輸出結(jié)果如下,其中每一個類中均包含若干條path_no方法,其參數(shù)和返回值均與路徑所在方法相同,no為路徑編號:
在步驟12中,使用ASTVisitor處理所有的MethodDeclaration,將每一個方法都拆分成若干條單路徑代碼的過程包括:
步驟20:獲得MethodDeclaration的Body語句塊Block
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于南京大學(xué),未經(jīng)南京大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611233521.7/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:沙發(fā)(佳美娜)
- 下一篇:椅子(斑馬)





