[發(fā)明專利]一種基于定值到達(dá)分析方法的Java空指針?lè)治鱿到y(tǒng)在審
| 申請(qǐng)?zhí)枺?/td> | 201910200070.4 | 申請(qǐng)日: | 2019-03-15 |
| 公開(kāi)(公告)號(hào): | CN110188029A | 公開(kāi)(公告)日: | 2019-08-30 |
| 發(fā)明(設(shè)計(jì))人: | 陳森海;周曉聰 | 申請(qǐng)(專利權(quán))人: | 中山大學(xué) |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 廣州粵高專利商標(biāo)代理有限公司 44102 | 代理人: | 林麗明 |
| 地址: | 510275 廣東*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 源碼 空指針 分析系統(tǒng) 結(jié)果展示模塊 軟件靜態(tài)分析 過(guò)濾器模塊 控制臺(tái)模塊 分析模塊 開(kāi)發(fā)過(guò)程 軟件系統(tǒng) 項(xiàng)目模塊 易讀性 異常源 分析 開(kāi)發(fā) 跳轉(zhuǎn) 直觀 風(fēng)格 展示 幫助 發(fā)現(xiàn) | ||
本發(fā)明涉及軟件靜態(tài)分析領(lǐng)域,更具體的,涉及一種基于定值到達(dá)分析方法的Java空指針?lè)治鱿到y(tǒng)。包括項(xiàng)目模塊、過(guò)濾器模塊、源碼模塊、控制臺(tái)模塊、空指針?lè)治瞿K、結(jié)果展示模塊;本發(fā)明將能夠幫助開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中及時(shí)發(fā)現(xiàn)源碼中存在空指針異常的懷疑源碼行,通過(guò)工具能夠直接展示和跳轉(zhuǎn)到疑似異常源碼行,給予開(kāi)發(fā)人員更加方便和直觀的查看源碼和分析,從而能夠?qū)?yīng)的源碼進(jìn)行修改,對(duì)源碼結(jié)構(gòu)進(jìn)一步完善和增強(qiáng)源碼的易讀性,形成更好的源碼風(fēng)格,以及開(kāi)發(fā)出更完善的軟件系統(tǒng)。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件靜態(tài)分析領(lǐng)域,更具體的,涉及一種基于定值到達(dá)分析方法的Java空指針?lè)治鱿到y(tǒng)。
背景技術(shù)
作為面向?qū)ο笳Z(yǔ)言的兩大語(yǔ)言Java和C++,在開(kāi)發(fā)當(dāng)中,指針/引用是非常普遍的。指針,即代表了一個(gè)數(shù)據(jù)類型的內(nèi)存存儲(chǔ)地址,在開(kāi)發(fā)當(dāng)中,如果調(diào)用了一個(gè)指向空地址的指針,就會(huì)引發(fā)空指針異常,往往會(huì)導(dǎo)致系統(tǒng)直接崩潰宕機(jī),因此空指針錯(cuò)誤在軟件開(kāi)發(fā)當(dāng)中是非常常見(jiàn)的。所以,開(kāi)發(fā)工程師往往會(huì)在很多調(diào)用方法的返回結(jié)果進(jìn)行空引用判斷,有些方法即使結(jié)果永不為空也會(huì)進(jìn)行判斷,從而影響源碼的美感和易讀性。
根據(jù)過(guò)去一兩年的TIBO編程語(yǔ)言排行榜,Java語(yǔ)言的ratings基本上是C++語(yǔ)言的兩倍之多,同時(shí)大部分時(shí)間位于第一名,而ratings指數(shù)往往反應(yīng)該語(yǔ)言在編程語(yǔ)言中的熱度和使用人數(shù)。而在網(wǎng)上,Java語(yǔ)言所常用的靜態(tài)分析工具有FindBugs、CheckStyle、PMD、Spotsbugs等。而這些語(yǔ)言中,有些工具僅僅提供的程序包是以IDE的插件或以命令行方式進(jìn)行源碼分析,而因?yàn)檫@些工具并不是單獨(dú)針對(duì)空指針?lè)治觯栽谶@些工具靜態(tài)分析的結(jié)果中,空指針相關(guān)的異常或提示僅僅占所有結(jié)果中的小比例同時(shí)該結(jié)果也并不完全準(zhǔn)確。
FindBugs只針對(duì)Java字節(jié)碼進(jìn)行靜態(tài)分析,不方便直接定位到報(bào)錯(cuò)的源碼位置,不方便開(kāi)發(fā)人員的迅速定位和分析,同時(shí)該工具并不只針對(duì)空指針?lè)治觯逸敵鼋Y(jié)果關(guān)于空引用的錯(cuò)誤檢測(cè)率并不高。CheckStyle對(duì)源碼的檢查僅僅是源碼規(guī)范風(fēng)格上的檢查和糾錯(cuò),在空指針引用上判斷的條件利用的不多,同時(shí)CheckStyle并沒(méi)有可以直接運(yùn)行的程序包,只能以IDE插件或者命令行方式去讀取項(xiàng)目和分析項(xiàng)目。剩余工具的不足基本和FindBugs和Checkstyle的不足類似。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)進(jìn)行靜態(tài)分析時(shí)無(wú)法展示空指針?lè)治鲞^(guò)程和跳轉(zhuǎn)到報(bào)錯(cuò)的源碼位置的不足,本發(fā)明提供了一種基于定值到達(dá)分析方法的Java空指針?lè)治鱿到y(tǒng)。
為實(shí)現(xiàn)以上發(fā)明目的,采用的技術(shù)方案是:
所述的項(xiàng)目模塊通過(guò)java.swing.JTree以樹(shù)形結(jié)構(gòu)展示每個(gè)項(xiàng)目結(jié)構(gòu),通過(guò)繼承javax.swing.tree.TreeNode來(lái)展示和保存包、類、方法和屬性,java.util.ArrayList類保存項(xiàng)目源碼和分析結(jié)果數(shù)據(jù);
所述的過(guò)濾器模塊利用java,io.FIle類保存和讀取硬盤(pán)上過(guò)濾器配置信息,并將配置信息轉(zhuǎn)換成自定義的配置信息實(shí)體類;
所述的源碼模塊通過(guò)java.swing.JTextPane控件展示源碼文件信息和行號(hào);
所述的控制臺(tái)模塊基于java.swing.TextArea控件,能夠?qū)⒎治鲞^(guò)程輸出到工具界面;
所述的空指針?lè)治瞿K基于定值到達(dá)分析方法,實(shí)現(xiàn)對(duì)源碼掃描和空指針的分析;
所述的結(jié)果展示模塊將通過(guò)java.swing.JTextPane以HTML格式展示空指針的分析結(jié)果。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中山大學(xué),未經(jīng)中山大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910200070.4/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 坐席資源碼的分配方法和分配系統(tǒng)
- 一種服務(wù)器軟件源碼開(kāi)發(fā)管理方法
- 基于源碼庫(kù)上傳容器鏡像至鏡像倉(cāng)庫(kù)的方法及系統(tǒng)
- 一種漏洞檢測(cè)方法、裝置、服務(wù)器及存儲(chǔ)介質(zhì)
- 商品的溯源碼關(guān)聯(lián)方法及裝置
- 一種基于數(shù)據(jù)可執(zhí)行特征的網(wǎng)頁(yè)后門(mén)檢測(cè)方法與系統(tǒng)
- 文件打包方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 源碼轉(zhuǎn)換方法、裝置、計(jì)算機(jī)設(shè)備及可讀存儲(chǔ)介質(zhì)
- 一種多人模式下修改源碼文件的方法、系統(tǒng)及介質(zhì)
- 一種牲畜胴體表皮溯源碼噴印方法、噴碼機(jī)、溯源碼和服務(wù)器
- 網(wǎng)絡(luò)資源搜索管理系統(tǒng)及網(wǎng)絡(luò)資源搜索管理方法
- 一種新型可排序反爬蟲(chóng)多領(lǐng)域垂直搜索網(wǎng)站的設(shè)計(jì)方法
- 一種適用于衛(wèi)星通信網(wǎng)絡(luò)效能評(píng)估的仿真架構(gòu)
- 一種應(yīng)用服務(wù)器全時(shí)段及時(shí)搶救監(jiān)測(cè)系統(tǒng)的監(jiān)測(cè)方法
- 一種工控?cái)?shù)據(jù)分析結(jié)果雙視角展示系統(tǒng)
- 一種數(shù)據(jù)庫(kù)會(huì)話管理方法及裝置
- 一種儲(chǔ)能容量配置軟件系統(tǒng)
- 報(bào)表展示與編輯方法及裝置
- 一種基于WebGis的礦山數(shù)據(jù)可視化系統(tǒng)以及方法
- 一種基于特征融合的細(xì)粒度車輛屬性分析系統(tǒng)及方法





