亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android 應(yīng)用程序的代碼異味檢測工具與方法綜述

        2022-07-29 06:54:18王露穎邊奕心
        智能計算機與應(yīng)用 2022年8期
        關(guān)鍵詞:檢測工具面向?qū)ο?/a>異味

        王露穎,邊奕心,趙 松,朱 曉,涂 杰

        (哈爾濱師范大學(xué) 計算機科學(xué)與信息工程學(xué)院,哈爾濱 150025)

        0 引言

        代碼異味又被稱為代碼壞味道,最初是由Fowler提出的。代碼異味的存在增加了程序的維護成本,降低了代碼質(zhì)量。近年來,隨著移動通信技術(shù)的迅猛發(fā)展,移動應(yīng)用程序已經(jīng)成為軟件行業(yè)的發(fā)展主體。因此,許多學(xué)者從不同的角度對Android應(yīng)用程序中的代碼異味進行了廣泛和深入的研究,開發(fā)了許多Android 應(yīng)用程序中代碼異味自動檢測工具。研究發(fā)現(xiàn),用于檢測傳統(tǒng)桌面應(yīng)用程序代碼異味的檢測工具也可檢測Android 應(yīng)用程序中的代碼異味。但是,這些傳統(tǒng)的工具只能檢測Android應(yīng)用程序中面向?qū)ο蟮拇a異味。

        不同于傳統(tǒng)的桌面應(yīng)用程序,Android 應(yīng)用程序中除了存在面向?qū)ο蟮拇a異味,還存在Android特有的代碼異味。隨著研究的不斷深入,研究者不斷提出針對Android 應(yīng)用程序中Android 特有代碼異味的檢測方法和工具,以便于日后對Android 應(yīng)用程序中特有的代碼異味展開進一步的研究。

        目前,針對Android 應(yīng)用程序中的代碼異味自動檢測工具種類繁多,功能和適用環(huán)境各不相同。本文對比分析了目前具有代表性的Android 應(yīng)用程序中的代碼異味檢測工具和方法,以便Android 應(yīng)用程序的研究人員在面對實際代碼異味時,能夠選擇合適的檢測工具。

        1 相關(guān)研究工作綜述

        本文重點關(guān)注Android 應(yīng)用程序的代碼異味檢測工具。為了調(diào)查檢測工具的應(yīng)用情況,通過以下3 個步驟對文獻進行檢索:

        (1)定義搜索字符串。本文定義了3 組搜索字符串用于文獻搜索,見表1。主要在IEEE Xplore、ACM、Springer 和Google scholar 使用搜索字符串對文獻進行了調(diào)查。

        表1 用于文獻調(diào)查的3 組搜索字符串Tab.1 Three sets of search strings for literatures survey

        (2)選擇主要研究對象。本文主要選取與Android 應(yīng)用程序中代碼異味研究相關(guān)的文獻。

        (3)篩選目前開源可獲取的自動檢測工具。在這一步中,過濾掉已經(jīng)不可獲取、無法用于今后研究的Android 應(yīng)用程序代碼異味自動檢測工具。

        本文最終選取了14 篇文獻,見表2。可以發(fā)現(xiàn),針對Android 應(yīng)用程序中代碼異味研究的論文,大多數(shù)都是在2015~2020 年發(fā)表的,并且在僅研究Android 應(yīng)用程序中面向?qū)ο蟮拇a異味時,研究人員大多仍使用傳統(tǒng)的檢測工具。

        表2 Android 應(yīng)用程序中代碼異味的相關(guān)文獻Tab.2 Literatures on code smells in Android applications

        2 代碼異味檢測方法

        2.1 代碼異味檢測流程

        目前,代碼異味檢測方法的基本流程是相似的,如圖1 所示。

        圖1 代碼異味檢測流程Fig.1 Code smells detection process

        首先,對輸入的項目源代碼進行預(yù)處理,提取出待測文件(如.java、.c 文件等);其次,根據(jù)不同的檢測方法,將處理好的代碼傳換成中間形式,如抽象語法樹列等結(jié)構(gòu);最后,使用不同的檢測方法對其中的代碼異味進行檢測,輸出檢測結(jié)果。

        2.2 代碼異味檢測方法分類

        由于代碼異味的存在增加了系統(tǒng)維護的難度,給軟件系統(tǒng)帶來了長期隱患。因此,對軟件系統(tǒng)中異味進行檢測是很有必要的?,F(xiàn)有的代碼異味檢測工具所使用的檢測方法主要可以分為5 類。對此可給出研究分述如下。

        (1)基于癥狀的檢測方法?;诎Y狀的異味檢測方法是利用不同的癥狀和概念來描述代碼異味,將異味的“癥狀”描述成中間形式后,轉(zhuǎn)化為檢測算法對其進行檢測。

        (2)基于度量的檢測方法?;诙攘康臋z測方法是最常用的代碼異味探測方法。這種檢測方法以邏輯表達式或條件表達式的形式,將一組度量和不同的閾值組合成一個檢測規(guī)則,以檢測代碼中的不同異味。

        (3)基于搜索的檢測方法?;谒阉鞯臋z測方法源于基于搜索的軟件工程(SBSE)相關(guān)研究。SBSE 使用基于搜索的方法來解決軟件工程中的優(yōu)化問題,其中絕大多數(shù)的技術(shù)都應(yīng)用了機器學(xué)習(xí)算法?;谒阉鞯漠愇稒z測方法的提出,一定程度上彌補了之前的檢測方法在精確度上的不足。

        (4)基于概率的檢測方法?;诟怕实臋z測方法通過確定一個類中存在異味的概率,來識別代碼中的異味類型。一些基于概率的檢測方法,還應(yīng)用了模糊邏輯規(guī)則和頻繁模式樹,對代碼異味進行探測。

        (5)基于可視化的檢測方法?;诳梢暬臋z測方法可以通過半自動化的過程來識別代碼中的異味類型。該方法使用如面向可視化的策略和可視化設(shè)計缺陷檢測策略等技術(shù),將人類的專業(yè)知識與自動化的檢測過程相結(jié)合。

        現(xiàn)有的檢測工具大多都是基于這些方法所提出的,本文對上述5 類檢測方法的優(yōu)缺點做了比較,見表3。

        表3 不同代碼異味檢測方法比較Tab.3 Comparison of different code smells detection methods

        3 Android 應(yīng)用程序的代碼異味檢測工具

        從對Android 應(yīng)用程序中不同種代碼異味檢測的角度,可將現(xiàn)有Android 應(yīng)用程序中代碼異味檢測工具分為3 類:一類是僅支持Android 應(yīng)用程序中面型對象的代碼異味檢測的工具,另一類是僅支持Android 特有代碼異味檢測的工具,第三類是既支持面向?qū)ο蟆⒂种С諥ndroid 特有的代碼異味檢測的工具。目前,可用于Android 應(yīng)用程序中代碼異味檢測的工具見表4。

        3.1 僅支持面向?qū)ο蟠a異味檢測的工具

        已有研究表明,傳統(tǒng)的代碼異味檢測工具可以用來檢測Android 應(yīng)用程序中面向?qū)ο蟮拇a異味。表4中加粗的JSpIRIT、DECOR、TACO、JDeodorant 和organic 表示已經(jīng)用于Android 應(yīng)用程序中的代碼異味檢測研究。

        表4 Android 應(yīng)用程序中代碼異味的檢測工具Tab.4 Tools for detecting code smells in Android applications

        同樣用于Android 應(yīng)用程序中面向?qū)ο蟮拇a異味檢測的工具還有inFusion。Mannan 等人使用inFusion 代碼異味檢測工具針對20 種面向?qū)ο蟮拇a異味,分析了其在Android 應(yīng)用程序和桌面應(yīng)用程序中的分布差異。但Rahkema 等人研究面向?qū)ο蟠a異味在Android 和IOS 應(yīng)用程序中的分布時,發(fā)現(xiàn)inFusion 代碼異味檢測工具目前已經(jīng)無法獲取。經(jīng)過調(diào)查,當下作為商業(yè)軟件的inFusion 確實已無法通過官方渠道免費獲取。因此,后續(xù)無法使用inFusion 對Android 應(yīng)用程序中面向?qū)ο蟮拇a異味進行研究,但iPlasma 可以替代inFusion 對部分面向?qū)ο蟮拇a異味進行檢測。iPlasma 是一個面向?qū)ο筌浖到y(tǒng)質(zhì)量評估的集成環(huán)境,相當于inFusion 的免費版。iPlasma 使用基于度量的方法對代碼異味進行檢測,但是iPlasma 的功能遠沒有inFusion 強大,也只能夠檢測到11 種代碼異味,而inFusion 則可以檢測到22 種代碼異味。

        綜上所述,研究者在研究桌面應(yīng)用程序中面向?qū)ο蟮拇a異味時,開發(fā)的檢測工具可以用于檢測Android 應(yīng)用程序中面向?qū)ο蟮拇a異味。但是由于這些檢測工具大多以插件的形式存在,所以在檢測Andriod 應(yīng)用程序中面向?qū)ο蟮拇a異味時,存在局限性。目前,Androd 應(yīng)用程序大多是在Android Studio 環(huán)境下開發(fā)的。而在此之前,Androd應(yīng)用程序都是在Eclipse IDE 和ADT 環(huán)境下開發(fā)的。在2015 年6 月ADT 不再提供更新支持后,開發(fā)者逐漸使用Android Studio 開發(fā)Android 應(yīng)用程序。因此,目前開源的Androd 項目存儲庫中混合了有Android Studio 和舊的Eclipse 開發(fā)的Android 項目。顯然,在Android Studio 中運行JDeodorant、TACO、JSpIRIT 等來檢測代碼異味是不可能的,這就導(dǎo)致在運行以Eclipse 插件的形式存在的工具、對Android 應(yīng)用程序中的代碼異味進行檢測時,會存在一些麻煩。雖然Google 公司為Eclipse 開發(fā)的Android 項目提供了自動遷移工具,使其可以由Android Studio 繼續(xù)開發(fā),但并不支持反向遷移的情況,這就意味著研究者要是想用JDeodorant、TACO、JSpIRIT 等檢測由Andriod Studio 開發(fā)的Andriod 項目時,需要將Andriod Studio 項目文件夾修改為Eclipse 的正確結(jié)構(gòu),手動完成反向遷移,不利于大規(guī)模實驗研究。

        3.2 僅支持Android 特有代碼異味檢測的工具

        目前,在對Android 特有代碼異味的研究中,使用的開源可獲取的自動檢測工具主要有2 個:aDoctor 和DAAP。2 個檢測工具的對比具體如下:

        (1)2 個檢測工具在設(shè)計時,參考的都是Reimann 等人提出的異味目錄。

        (2)2 個檢測工具都利用抽象語法樹當作中間形式來解析Java 程序。不同的是,DAAP 針對存在于XML 程序中的代碼異味,使用文檔對象模型(Document Object Model)來解析XML 程序。

        (3)aDoctor 可以對其中5 種與能耗相關(guān)的代碼異味進行重構(gòu),而DAAP 不能進行重構(gòu)操作。

        綜合前述分析可知,目前針對Android 特有代碼異味檢測的開源工具還很少,且檢測方法單一。

        3.3 既支持面向?qū)ο笥种С諥ndroid 特有代碼異味檢測的工具

        Android 應(yīng)用程序中不僅存在傳統(tǒng)面向?qū)ο蟮拇a異味,還存在Android 特有的代碼異味。目前,2 類代碼異味都可以檢測的開源工具只有PAPRIKA。PAPRIKA 采用基于度量的檢測方法,對Android 應(yīng)用程序中的代碼異味進行探測。PAPRIKA 通過以下步驟對Android 應(yīng)用程序中的代碼異味進行探測:

        (1)解析Android 應(yīng)用程序中的APK 文件,構(gòu)建PAPRIKA 模型。首先,使用Soot 框架及其Dexpler 模塊來分析APK 文件,從中提取度量信息,進而構(gòu)造PAPRIKA 模型。

        (2)將構(gòu)建好的PAPRIKA 模型存儲到一個圖形數(shù)據(jù)庫中。為了提供一種可擴展的方法來分析整個Android 應(yīng)用程序,PAPRIKA 采用的是Neo4j 圖形數(shù)據(jù)庫來存儲和查詢構(gòu)建好的PAPRIKA 模型,提取出度量信息。

        (3)查詢圖,以檢測Android 應(yīng)用程序中的代碼異味。當構(gòu)建好的PAPRIKA 模型被圖形數(shù)據(jù)庫加載和索引時,就可以使用數(shù)據(jù)庫查詢語言來探測代碼異味。

        在此基礎(chǔ)上分析可知,作為唯一一個既可以檢測Android 應(yīng)用程序中面向?qū)ο蟮拇a異味和特有代碼異味的工具,研究人員對PAPRIKA 檢測的異味種類不斷進行擴展。其中,Habchi 等人在研究Android 和IOS 應(yīng)用程序中的代碼異味時,對PAPRIKA 的功能進行了擴展,使其可以檢測由C 和Swift 語言開發(fā)的IOS 應(yīng)用程序中的代碼異味。研究結(jié)果表明,Android 應(yīng)用程序比IOS 應(yīng)用程序中存在的異味數(shù)量更多。Carette 等人在分析Android特有代碼氣味對應(yīng)用程序性能的影響時,對PAPRIKA 進行擴展使其可以檢測和重構(gòu)3 種Android 特有的代碼異味。去除代碼異味后,可以提高Android 應(yīng)用程序的性能。Mateus 等人在研究由Kotlin 語言開發(fā)Android 應(yīng)用程序是否可以提高軟件質(zhì)量時,改進PAPRIKA 使其可以檢測由Kotlin語言開發(fā)的應(yīng)用程序中的代碼異味。最新研究指出,在由Kotlin 語言開發(fā)的Android 應(yīng)用程序中,面向?qū)ο蟮拇a異味更為常見。目前,PAPRIKA 最多可以檢測4 種面向?qū)ο蟮拇a異味、13 種Android特有的代碼異味。

        4 異味檢測工具的評價

        不同的檢測工具對于不同規(guī)模、開發(fā)語言的項目具有不同的檢測效果。目前,常用于評估檢測工具性能的指標主要有 3 個,分別是查準率()、查全率()和值(),各指標數(shù)學(xué)定義分別如下:

        其中,(True Positive)為被檢測為正的正樣本數(shù);(False Positive)為被檢測為正的負樣本數(shù);(False Negative)為被檢測為負的正樣本數(shù)。

        在檢測Android 應(yīng)用程序中面向?qū)ο蟮拇a異味時,研究人員常使用傳統(tǒng)檢測桌面應(yīng)用程序中代碼異味的工具。對于此類檢測工具的檢測精度評價已有大量研究進行了總結(jié)。其中,Lim重點評價了JSpIRIT、JDeodorant、DECOR 和TACO 四個傳統(tǒng)的檢測工具對Android 應(yīng)用程序中代碼異味的檢測效果。結(jié)果表明,在對Andriod 應(yīng)用程序中的代碼異味進行檢測時,4 個檢測工具的漏檢率極高。針對Andriod 應(yīng)用程序中的異味Large Class,DECOR作為其中檢測效果最好的工具,結(jié)果中的值僅為36%,而JDeodoran 則無法檢測出該異味。

        目前,缺少對Android 特有代碼異味檢測工具的系統(tǒng)評價。因此,本文首先使用DAAP、aDoctor和PAPRIKA 分別對異味忽略成員的方法(Member Ignoring Method,MIM)進行檢測,然后利用查準率、查全率和值對3 個檢測工具的檢測效果進行評價,從而探討3 個工具的檢測精確度。MIM 是指某個類中的方法,該方法既是非靜態(tài)方法,也是非空方法,但該方法沒有訪問所在類的任何屬性。本文選取了6 個開源Android 應(yīng)用程序作為待測試程序,詳細描述見表5。

        表5 6 個Android 應(yīng)用程序及相關(guān)信息Tab.5 Six Android applications and related information

        3 個檢測工具對6 個Android 應(yīng)用程序中異味MIM 的平均檢測結(jié)果見表6,具體檢測結(jié)果如圖2所示。從表6 和圖2 中可以看出,3 個工具對MIM的檢測性能綜合排名為:aDoctor>PAPRIKA>DAAP。由此可知,aDoctor 的檢測效果最好,其值較DAAP 平均提高16.18%、較PAPRIKA 平均提高5.11%。

        圖2 不同工具在6 個Android 應(yīng)用程序上的檢測結(jié)果Fig.2 Detection results of different tools on 6 Android applications

        表6 3 個檢測工具對MIM 的平均檢測結(jié)果Tab.6 Average detection results for MIM by 3 detection tools %

        綜上所述,3 個工具對MIM 的檢測性能綜合排名為:aDoctor>PAPRIKA>DAAP。aDoctor 作為檢測效果最好的工具,值較DAAP 平均提高16.18%、較PAPRIKA 平均提高5.11%。

        5 結(jié)束語

        本文對近幾年用于Android 應(yīng)用程序中代碼異味檢測的工具和方法做了全面歸納與總結(jié),并對Android 特有代碼異味檢測工具的性能進行了簡單的評估。綜合目前的實際需求,Android 應(yīng)用程序中代碼異味的檢測工具和方法的未來研究方向包括:

        (1)由于Android 應(yīng)用程序與傳統(tǒng)桌面應(yīng)用程序在程序結(jié)構(gòu)、API 調(diào)用、內(nèi)存、CPU、網(wǎng)絡(luò)、電池等方面的諸多差異,Android 應(yīng)用程序中代碼異味的種類及分布比傳統(tǒng)桌面應(yīng)用程序中的更復(fù)雜。因此,將傳統(tǒng)的檢測工具直接應(yīng)用在Android 應(yīng)用程序中的代碼異味檢測上,其檢測效果差且存在局限性。目前,針對Android 應(yīng)用程序中面向?qū)ο蟠a異味檢測的工具僅有PAPRIKA 一個,且最多只能檢測其中的4 種代碼異味。為深入研究Android 應(yīng)用程序中的代碼異味,未來可以針對Android 應(yīng)用程序的架構(gòu),提出適合且檢測效果較好的代碼異味檢測工具。

        (2)目前,針對Android 特有代碼異味檢測的具有代表性的工具只有DAAP、aDoctor 和PAPRIKA,且這3 個檢測工具都是基于度量的檢測方法所設(shè)計的。因此,在檢測的過程中會受到閾值局限,出現(xiàn)漏檢的情況,其檢測結(jié)果也并不理想。因此,未來可以參考面向?qū)ο蟠a異味檢測方法,基于其他檢測方法研發(fā)出檢測效果更好的檢測工具。

        (3)許多研究者在研究傳統(tǒng)面向?qū)ο蟮拇a異味時,針對多種異味之間的聯(lián)系、如共存進行深入研究。而Android 應(yīng)用程序中不僅存在面向?qū)ο蟮拇a異味,還存在其特有的代碼異味。因此,針對2 類異味之間存在的聯(lián)系同樣也亟待繼續(xù)加大研發(fā)力度。目前,可同時檢測2 類代碼異味的工具有PAPRIKA,且其可檢測的異味種類有限。因此,為了方便探索Android 應(yīng)用程序中2 類代碼異味之間的聯(lián)系、進行大規(guī)模實驗,未來可以繼續(xù)對PAPRIKA 進行擴展,使其可以檢測更多種類的代碼異味,還可以繼續(xù)探索其他檢測方法來檢測2 類代碼異味,提出更高效、便捷的檢測工具。

        最后,本文研究可以給Android 應(yīng)用程序中的代碼異味的研究者提供一些參考,選擇合適的檢測和重構(gòu)工具,有助于后續(xù)對Android 應(yīng)用程序中的代碼異味進行深入研究。

        猜你喜歡
        檢測工具面向?qū)ο?/a>異味
        基于4G技術(shù)的VOCs及異味檢測系統(tǒng)
        面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
        電子測試(2018年15期)2018-09-26 06:01:34
        用這些告別異味吧!夏天就要清清爽爽過!
        PIC-408系列采用育種技術(shù)控制公豬異味
        面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
        高溫封隔器膠筒試驗檢測工具的研究
        化工管理(2017年16期)2017-06-23 13:49:36
        德國Rosen公司發(fā)布新型漏磁檢測工具
        面向?qū)ο骔eb開發(fā)編程語言的的評估方法
        面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
        河南科技(2014年10期)2014-02-27 14:09:03
        中國移動設(shè)計院自主研發(fā)安全檢測工具
        久久精品国产亚洲AⅤ无码| 亚洲精品无码永久在线观看| 午夜福利理论片高清在线观看| 久久久国产精品ⅤA麻豆| 精品国产迪丽热巴在线| 亚洲女同免费在线观看| 日本一区二区三区免费播放| 日日干夜夜操高清视频| 91福利精品老师国产自产在线| 国产精品国产三级国产专区50| 麻豆国产精品va在线观看不卡| 老司机在线精品视频网站 | 国产一区二区三区免费在线视频| 中国黄色偷拍视频二区| 国产在线无码不卡影视影院| 国产啪精品视频网站| 国产成人丝袜网站在线看| 国产一区二区资源在线观看 | 午夜蜜桃视频在线观看| 白丝爆浆18禁一区二区三区| 亚洲综合av在线在线播放| 亚洲青青草视频在线播放| 日本不卡一区二区三区在线视频 | 国内自拍愉拍免费观看| 国产精品欧美福利久久| 亚洲乱码一区二区三区成人小说| 国产三级一区二区三区在线观看 | 国产av精选一区二区| 国产精品综合色区在线观看| 国产精品久久久久久久久鸭| 亚洲又黄又大又爽毛片| 国产日产韩国av在线| 99精品一区二区三区无码吞精 | 日本人妻免费在线播放| 日本道精品一区二区三区| 亚洲成a人片在线观看导航| 男女搞基视频免费网站| 国产精品一卡二卡三卡| 国产精品无码无片在线观看| 亚洲av中文字字幕乱码| 97丨九色丨国产人妻熟女|