1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments
近年來,學(xué)習(xí)型Android惡意軟件檢測(cè)器不斷增多。這些檢測(cè)器可以分為三種類型:基于字符串、基于圖像和基于圖形。它們大多在理想情況下取得了良好的檢測(cè)性能。然而,在現(xiàn)實(shí)中,檢測(cè)器常常面臨不在分布范圍之內(nèi)的樣本,原因可能是代碼混淆、概念漂移(例如,軟件開發(fā)技術(shù)的演變和新的惡意軟件類別的出現(xiàn))以及對(duì)抗樣本。這一問題引起了越來越多的關(guān)注,但缺乏對(duì)現(xiàn)有各種類型的檢測(cè)器在這些具有挑戰(zhàn)性環(huán)境下進(jìn)行比較研究。為了填補(bǔ)這一空白,我們從三種類型的檢測(cè)器中選擇了12個(gè)代表性的檢測(cè)器,并分別在涉及代碼混淆、概念漂移和對(duì)抗樣本的具有挑戰(zhàn)性的場(chǎng)景中對(duì)它們進(jìn)行評(píng)估。實(shí)驗(yàn)結(jié)果顯示,沒有任何一個(gè)評(píng)估的檢測(cè)器能夠保持其理想情況下的檢測(cè)性能,而不同類型的檢測(cè)器在各種具有挑戰(zhàn)性的環(huán)境下的性能差異顯著。我們確定了幾個(gè)導(dǎo)致檢測(cè)器性能下降的因素,包括特征提取方法和學(xué)習(xí)模型的局限性。我們還分析了不同類型的檢測(cè)器在面對(duì)代碼混淆、概念漂移和對(duì)抗樣本時(shí)為何表現(xiàn)出明顯性能差異的原因。最后,我們分別從用戶和研究者的角度提供了實(shí)用建議。我們希望我們的工作能夠幫助理解不同類型的檢測(cè)器,并為增強(qiáng)它們的性能和魯棒性提供指導(dǎo)。
論文鏈接:https://doi.org/10.1145/3597503.3623320
2、A Large-Scale Survey on the Usability of AI Programming Assistants: Successes and Challenges
最近,軟件工程領(lǐng)域廣泛部署了AI編程助手,如GitHub Copilot。然而,在實(shí)踐中,開發(fā)人員并不高頻地接受AI編程助手的初始建議。這引發(fā)了許多關(guān)于這些工具可用性的問題。為了了解開發(fā)人員在使用這些工具時(shí)的實(shí)踐以及他們面臨的重要可用性挑戰(zhàn),我們向大量開發(fā)人員進(jìn)行了調(diào)查,并收到了來自410位不同背景的開發(fā)人員的回應(yīng)。通過定性和定量分析的混合方法,我們發(fā)現(xiàn)開發(fā)人員最主要的動(dòng)機(jī)是使用AI編程助手來幫助減少按鍵次數(shù)、快速完成編程任務(wù)和記憶語法,但對(duì)于幫助構(gòu)思潛在解決方案的使用意愿較低。我們還發(fā)現(xiàn)開發(fā)人員不使用這些工具的最重要原因是因?yàn)檫@些工具沒有輸出符合特定功能或非功能要求的代碼,以及開發(fā)人員在控制工具以生成所需輸出時(shí)遇到困難。我們的研究結(jié)果對(duì)于AI編程助手的開發(fā)者和用戶都有重要影響,比如設(shè)計(jì)與這些工具的最小認(rèn)知努力交互,以減少用戶在編程時(shí)的干擾。
論文鏈接:https://doi.org/10.1145/3597503.3608128
3、Attention! Your Copied Data is Under Monitoring: A Systematic Study of Clipboard Usage in Android Apps
最近,剪貼板在移動(dòng)應(yīng)用程序中的使用變得普遍,使用戶能夠在同一應(yīng)用程序內(nèi)或跨不同應(yīng)用程序之間復(fù)制和粘貼文本。然而,在移動(dòng)操作系統(tǒng)中的剪貼板上缺乏足夠的訪問控制,將其包含的數(shù)據(jù)暴露給高風(fēng)險(xiǎn),其中一個(gè)應(yīng)用程序可以讀取其他應(yīng)用中復(fù)制的數(shù)據(jù)并將其存儲(chǔ)在本地甚至發(fā)送到遠(yuǎn)程服務(wù)器。不幸的是,文獻(xiàn)中只有零星的研究,在這方面缺乏對(duì)整個(gè)移動(dòng)應(yīng)用程序生態(tài)系統(tǒng)的全面和系統(tǒng)性研究。為了建立缺失的聯(lián)系,本文提出了一種自動(dòng)化工具 ClipboardScope,它利用基于原則的靜態(tài)程序分析方法,通過定義使用方式的兩個(gè)方面的組合,揭示了移動(dòng)應(yīng)用程序中的剪貼板數(shù)據(jù)使用。即,剪貼板數(shù)據(jù)如何被驗(yàn)證以及它去向何處。根據(jù)應(yīng)用程序中的剪貼板使用,它定義了四種主要的剪貼板數(shù)據(jù)操作類別,分別是“點(diǎn)對(duì)點(diǎn)”、“全壁球”、“選擇性”和“挑選”, ClipboardScope在截至2022年6月Google Play上共有220萬款移動(dòng)應(yīng)用中,評(píng)估了26201款應(yīng)用程序,這些應(yīng)用程序訪問和處理了剪貼板文本。它識(shí)別出23948、848、1075和330款應(yīng)用程序分別被認(rèn)定為四種指定類別。此外,我們還發(fā)現(xiàn)了一種流行的編程習(xí)慣,即使用SharedPreferences對(duì)象存儲(chǔ)歷史數(shù)據(jù),這可能成為一種不易察覺的隱私泄漏渠道。
論文鏈接:https://doi.org/10.1145/3597503.3623317
4、BOMs Away! Inside the Minds of Stakeholders: A Comprehensive Study of Bills of Materials for Software Systems
軟件物料清單(SBOMs)已成為促進(jìn)軟件依賴關(guān)系、漏洞、許可證和供應(yīng)鏈管理的工具。雖然已經(jīng)投入了大量精力提高SBOM意識(shí)并開發(fā)SBOM格式和工具,但最近的研究表明SBOM仍然是一種尚未被充分采用的早期技術(shù)。本文在之前的研究基礎(chǔ)上報(bào)告了一項(xiàng)全面的研究,調(diào)查了利益相關(guān)者在創(chuàng)建和使用SBOMs時(shí)遇到的當(dāng)前挑戰(zhàn)。該研究對(duì)屬于五個(gè)利益相關(guān)者群體(熟悉SBOMs的從業(yè)者、關(guān)鍵開源項(xiàng)目成員、AI/ML、網(wǎng)絡(luò)物理系統(tǒng)和法律從業(yè)者)的138位從業(yè)者進(jìn)行了調(diào)查,使用不同問卷,還對(duì)8位調(diào)查受訪者進(jìn)行了訪談,以進(jìn)一步了解他們的經(jīng)驗(yàn)。我們確定了面臨創(chuàng)建和使用SBOMs的12個(gè)主要挑戰(zhàn),包括與SBOM內(nèi)容相關(guān)的挑戰(zhàn)、SBOM工具的不足、SBOM的維護(hù)和驗(yàn)證,以及特定領(lǐng)域的挑戰(zhàn)。我們提出并討論了針對(duì)所確定挑戰(zhàn)的4個(gè)可行解決方案,并提出了未來研究和發(fā)展的主要途徑。
論文鏈接:https://doi.org/10.1145/3597503.3623347
5、BinAug: Enhancing Binary Similarity Analysis with Low-Cost Input Repairing
二進(jìn)制代碼相似性分析(BCSA)是各種軟件安全、逆向工程和再工程應(yīng)用的基本構(gòu)建模塊。現(xiàn)有研究已應(yīng)用深度神經(jīng)網(wǎng)絡(luò)(DNNs)來衡量二進(jìn)制代碼之間的相似性,這是在DNNs在處理媒體數(shù)據(jù)如圖像方面取得重大突破之后的產(chǎn)物。盡管基于DNN的BCSA取得了有益的結(jié)果,但由于DNN的不穩(wěn)定性和黑匣子特性,它并沒有被廣泛應(yīng)用于工業(yè)領(lǐng)域。
在本研究中,我們首先對(duì)最先進(jìn)的BCSA工具進(jìn)行了廣泛研究,并從定量和定性的角度調(diào)查了它們的錯(cuò)誤預(yù)測(cè)。然后,我們相應(yīng)地設(shè)計(jì)了一個(gè)低成本且通用的框架,名為Binaug,通過修復(fù)它們的輸入二進(jìn)制代碼來提高BCSA工具的準(zhǔn)確性。與基于DNN的BCSA的典型工作流程相一致,Binaug獲取了代碼相似性的排序前K結(jié)果,然后使用一組精心設(shè)計(jì)的轉(zhuǎn)換重新排列結(jié)果。Binaug支持黑盒和白盒設(shè)置,取決于DNN模型內(nèi)部的可訪問性。我們的實(shí)驗(yàn)結(jié)果表明,在黑盒和白盒設(shè)置下,Binaug可通過平均提高2.38pt和6.46pt來不斷改善SoTA BCSA工具的性能。此外,通過Binaug,在黑盒和白盒設(shè)置下,我們將二進(jìn)制軟件組件分析的F1分?jǐn)?shù)平均提高了5.43pt和7.45pt。
論文鏈接:https://doi.org/10.1145/3597503.3623328
6、Block-based Programming for Two-Armed Robots: A Comparative Study
編程工業(yè)機(jī)器人是困難且昂貴的。雖然最近的工作在使更廣泛的用戶能夠使用方面取得了重大進(jìn)展,但通常僅限于簡(jiǎn)單的程序,并且其可用性在實(shí)踐中尚未經(jīng)過測(cè)試。在本文中,我們介紹了Duplo,一種基于塊的編程環(huán)境,允許最終用戶為雙臂機(jī)器人編程并解決需要協(xié)調(diào)的任務(wù)。Duplo將每個(gè)手臂的程序并排放置,利用來自每個(gè)程序的塊之間的空間關(guān)系來表示并行性,以便最終用戶能夠輕松理解。這個(gè)設(shè)計(jì)是由先前的工作提出的,但在實(shí)際編程環(huán)境中尚未實(shí)施或評(píng)估。我們進(jìn)行了一項(xiàng)隨機(jī)實(shí)驗(yàn),共有52名參與者對(duì)Duplo進(jìn)行了評(píng)估,他們需要完成包含多個(gè)子任務(wù)的復(fù)雜編程任務(wù)。我們將Duplo與商業(yè)解決方案RobotStudio Online YuMi進(jìn)行了比較,發(fā)現(xiàn)Duplo允許參與者更快地完成相同的任務(wù),并取得更大的成功。通過分析我們?cè)谟脩粞芯恐惺占男畔?,我們進(jìn)一步確定了解釋這種性能差異的因素,以及仍然存在的障礙,比如調(diào)試問題和與機(jī)器人交互的困難。這項(xiàng)工作是朝著讓更廣泛的非專業(yè)用戶進(jìn)行編程邁出的又一步,這可能促使機(jī)器人技術(shù)的更廣泛部署。
論文鏈接:https://doi.org/10.1145/3597503.3623329
7、Characterizing Software Maintenance Meetings: Information Shared, Discussion Outcomes, and Information Captured
迄今為止,在軟件工程文獻(xiàn)中很少研究的一種會(huì)議類型是我們所稱的軟件維護(hù)會(huì)議:定期召開的團(tuán)隊(duì)會(huì)議,在這些會(huì)議中通常討論超出日常站立會(huì)議范圍的新問題,但又不一定具有必要召開完全獨(dú)立會(huì)議的挑戰(zhàn)性。這些會(huì)議往往涉及各種各樣的話題,在保持軟件開發(fā)項(xiàng)目進(jìn)行中起著關(guān)鍵作用,但關(guān)于這些會(huì)議以及它們的進(jìn)程知之甚少。在本文中,我們報(bào)告了一項(xiàng)單一的探索性案例研究,我們分析了一家重要醫(yī)療軟件提供商的連續(xù)十次維護(hù)會(huì)議。我們分析了這些會(huì)議中討論的信息種類以及如何討論,討論產(chǎn)生的結(jié)果,以及為下游使用捕獲的信息。我們的研究結(jié)果多種多樣,提出了對(duì)于進(jìn)行這類會(huì)議的人員實(shí)際考慮的問題,以及對(duì)于進(jìn)一步理解和支持這種會(huì)議的新的研究方向。
論文鏈接:https://doi.org/10.1145/3597503.3623330
8、Co-Creation in Fully Remote Software Teams
本文利用協(xié)同創(chuàng)造的視角(這一概念最初在管理和設(shè)計(jì)領(lǐng)域中被創(chuàng)造和應(yīng)用,表明一群人通過人、活動(dòng)和工具的協(xié)同創(chuàng)造出有意義的東西),研究如何完全遠(yuǎn)程的軟件團(tuán)隊(duì)共同創(chuàng)造可以被看作一種文檔形式的數(shù)字化工件。我們報(bào)告了一項(xiàng)定性的、基于面試的研究結(jié)果,對(duì)象為25名在遠(yuǎn)程團(tuán)隊(duì)中工作的軟件專業(yè)人員。我們的主要發(fā)現(xiàn)包括定義了四種協(xié)同創(chuàng)造模型,示例表明如何將這些模型順序化為工作鏈以產(chǎn)生工件,影響開發(fā)人員如何將任務(wù)匹配到模型和鏈的因素,以及協(xié)同創(chuàng)造工具支持的一些見解。綜合起來,我們的研究結(jié)果說明了協(xié)同創(chuàng)造是一項(xiàng)有意義的活動(dòng),在遠(yuǎn)程軟件團(tuán)隊(duì)選擇如何結(jié)構(gòu)他們的協(xié)同活動(dòng)中發(fā)揮著重要作用。
論文鏈接:https://doi.org/10.1145/3597503.3623297
9、CoderEval: A Benchmark of Pragmatic Code Generation with Generative Pre-trained Models
基于預(yù)訓(xùn)練和微調(diào)范式的代碼生成模型越來越受到學(xué)術(shù)界和工業(yè)界的嘗試,導(dǎo)致了眾所周知的工業(yè)模型,如Codex、CodeGen和PanGu-Coder。為了評(píng)估這些模型的有效性,提出了多個(gè)現(xiàn)有基準(zhǔn)(例如HumanEval和AiXBench),其中僅包括生成獨(dú)立函數(shù)的情況,即可能調(diào)用或訪問僅內(nèi)置函數(shù)和標(biāo)準(zhǔn)庫的函數(shù)。然而,非獨(dú)立函數(shù),通常不包括在現(xiàn)有基準(zhǔn)中,組成了流行開源項(xiàng)目中超過70%的函數(shù),并且僅在獨(dú)立函數(shù)上評(píng)估模型的有效性無法反映這些模型在實(shí)際代碼生成場(chǎng)景(即生成用于開源或?qū)S写a的實(shí)際代碼)上的有效性。
為了幫助填補(bǔ)前面的差距,本文提出了一個(gè)名為CoderEval的基準(zhǔn),包括從流行實(shí)際開源項(xiàng)目中精心策劃的230個(gè)Python和230個(gè)Java代碼生成任務(wù),以及一個(gè)獨(dú)立執(zhí)行平臺(tái),以自動(dòng)評(píng)估生成代碼的功能正確性。 CoderEval支持來自六個(gè)不同級(jí)別的上下文依賴的代碼生成任務(wù),其中上下文指的是函數(shù)生成過程中定義在外部的依賴第三方庫、當(dāng)前類、文件或項(xiàng)目中的類型、API、變量和常量等代碼元素。 CoderEval可用于評(píng)估模型在生成代碼時(shí)的有效性,而不僅僅是獨(dú)立函數(shù)。通過在CoderEval和HumanEval上評(píng)估三種最先進(jìn)的代碼生成模型(CodeGen、PanGu-Coder和ChatGPT),我們發(fā)現(xiàn)這些模型在生成獨(dú)立函數(shù)方面的有效性明顯高于生成非獨(dú)立函數(shù)的有效性。我們的分析突出了當(dāng)前的進(jìn)展,并指出了進(jìn)一步利用上下文信息來提高模型有效性的未來方向。
論文鏈接:https://doi.org/10.1145/3597503.3623316
10、CrashTranslator: Automatically Reproducing Mobile Application Crashes Directly from Stack Trace
崩潰報(bào)告對(duì)于軟件維護(hù)至關(guān)重要,因?yàn)樗鼈兛梢宰岄_發(fā)人員了解移動(dòng)應(yīng)用程序遇到的問題。在修復(fù)之前,開發(fā)人員需要復(fù)現(xiàn)崩潰,這是一項(xiàng)非常耗時(shí)且繁瑣的任務(wù)?,F(xiàn)有研究通過自然語言描述的復(fù)現(xiàn)步驟進(jìn)行了自動(dòng)崩潰復(fù)現(xiàn)。然而,我們發(fā)現(xiàn)有相當(dāng)一部分崩潰報(bào)告只包含發(fā)生崩潰時(shí)的堆棧跟蹤。這種僅包含堆棧跟蹤的崩潰僅顯示發(fā)生崩潰時(shí)的最后一個(gè)GUI頁面,并且缺乏逐步指導(dǎo)。開發(fā)人員往往需要花費(fèi)更多的精力來理解問題和復(fù)現(xiàn)崩潰,現(xiàn)有技術(shù)無法處理這種情況,因此迫切需要自動(dòng)化支持。本文提出了一種名為CrashTranslator的方法,可以直接從堆棧跟蹤自動(dòng)復(fù)現(xiàn)移動(dòng)應(yīng)用程序崩潰。它通過利用預(yù)先訓(xùn)練的大型語言模型來預(yù)測(cè)觸發(fā)崩潰的探索步驟,并設(shè)計(jì)基于強(qiáng)化學(xué)習(xí)的技術(shù)來減輕不準(zhǔn)確的預(yù)測(cè)并全面引導(dǎo)搜索。我們?cè)谏婕?8個(gè)熱門Android應(yīng)用的75份崩潰報(bào)告上評(píng)估了CrashTranslator,它成功復(fù)現(xiàn)了61.3%的崩潰,超過了現(xiàn)有技術(shù)基線109%至206%。此外,平均復(fù)現(xiàn)時(shí)間為68.7秒,超過了基線302%至1611%。我們還評(píng)估了CrashTranslator的實(shí)用性,結(jié)果令人鼓舞。
論文鏈接:https://doi.org/10.1145/3597503.3623298
11、DEMISTIFY: Identifying On-device Machine Learning Models Stealing and Reuse Vulnerabilities in Mobile Apps
移動(dòng)應(yīng)用程序通過設(shè)備上的機(jī)器學(xué)習(xí)技術(shù)提供人工智能(AI)服務(wù)變得越來越受歡迎。與傳統(tǒng)上在遠(yuǎn)程服務(wù)器上完成這些AI服務(wù)不同,這些設(shè)備上的技術(shù)會(huì)在本地處理AI服務(wù)所需的敏感信息,可以減輕遠(yuǎn)程數(shù)據(jù)收集的嚴(yán)重?fù)?dān)憂。然而,這些設(shè)備上的技術(shù)必須將機(jī)器學(xué)習(xí)專業(yè)知識(shí)的核心(例如模型)本地推送到智能手機(jī)上,這些仍然容易受到遠(yuǎn)程云和服務(wù)器上類似漏洞的影響,尤其是在面對(duì)模型竊取攻擊時(shí)。為了防御這些攻擊,開發(fā)人員采取了各種保護(hù)措施。不幸的是,我們發(fā)現(xiàn)這些保護(hù)措施仍然不夠,移動(dòng)應(yīng)用中的設(shè)備上機(jī)器學(xué)習(xí)模型可以被無限制地提取和重復(fù)使用。為了更好地展示其不足的保護(hù)措施和這種攻擊的可行性,本文提出了DeMistify,它會(huì)在應(yīng)用程序中靜態(tài)定位機(jī)器學(xué)習(xí)模型,切片相關(guān)的執(zhí)行組件,并最終自動(dòng)生成腳本來使移動(dòng)應(yīng)用程序成功地竊取和重復(fù)使用目標(biāo)機(jī)器學(xué)習(xí)模型。為了評(píng)估DeMistify并展示其適用性,我們將其應(yīng)用于從谷歌Play商店的安裝數(shù)量基礎(chǔ)上使用設(shè)備上機(jī)器學(xué)習(xí)專業(yè)知識(shí)為幾種機(jī)器學(xué)習(xí)服務(wù)的1,511個(gè)熱門移動(dòng)應(yīng)用程序,DeMistify可以成功執(zhí)行1250個(gè)(占82.73%)。此外,還進(jìn)行了深入研究,以了解移動(dòng)應(yīng)用程序中的設(shè)備上機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)。
論文鏈接:https://doi.org/10.1145/3597503.3623325
12、Dataflow Analysis-Inspired Deep Learning for Efficient Vulnerability Detection
基于深度學(xué)習(xí)的漏洞檢測(cè)顯示出了很好的性能,在一些研究中甚至優(yōu)于靜態(tài)分析工具。然而,表現(xiàn)最好的方法使用基于標(biāo)記的變壓器模型,這些模型并不是捕獲漏洞檢測(cè)所需的代碼語義最有效的方式。經(jīng)典的程序分析技術(shù),例如數(shù)據(jù)流分析,可以根據(jù)其根本原因檢測(cè)許多類型的錯(cuò)誤。在本文中,我們提出將這種基于因果關(guān)系的漏洞檢測(cè)算法與深度學(xué)習(xí)相結(jié)合,旨在實(shí)現(xiàn)更高效和有效的漏洞檢測(cè)。具體地,我們?cè)O(shè)計(jì)了DeepDFA,一個(gè)受數(shù)據(jù)流分析啟發(fā)的圖學(xué)習(xí)框架和一種嵌入技術(shù),使圖學(xué)習(xí)能夠模擬數(shù)據(jù)流計(jì)算。我們展示了DeepDFA既性能卓越又高效。DeepDFA優(yōu)于所有非變壓器基準(zhǔn)。它在9分鐘內(nèi)訓(xùn)練完成,比性能最好的基線模型快了75倍。當(dāng)只使用50多個(gè)易受攻擊和數(shù)百個(gè)總例子作為訓(xùn)練數(shù)據(jù)時(shí),該模型保持了與100%數(shù)據(jù)集相同的性能。DeepDFA還推廣到了DbgBench中的真實(shí)世界漏洞;它在所有fold中平均檢測(cè)到了17個(gè)漏洞中的8.7個(gè),并且能夠區(qū)分修補(bǔ)和有缺陷的版本,而性能最好的基準(zhǔn)模型未能檢測(cè)到任何漏洞。通過將DeepDFA與大型語言模型結(jié)合,我們?cè)贐ig-Vul數(shù)據(jù)集上實(shí)現(xiàn)了最新的漏洞檢測(cè)性能,F(xiàn)1分?jǐn)?shù)為96.46,精確度為97.82,召回率為95.14。我們的復(fù)制包位于https://doi.org/10.6084/m9.figshare.21225413。
論文鏈接:https://doi.org/10.1145/3597503.3623345
13、Deep Learning or Classical Machine Learning? An Empirical Study on Log-Based Anomaly Detection
雖然深度學(xué)習(xí)(DL)已經(jīng)成為一種強(qiáng)大的技術(shù),但其優(yōu)勢(shì)必須在與計(jì)算成本相關(guān)的情況下進(jìn)行仔細(xì)考慮。具體而言,盡管DL方法在日志異常檢測(cè)方面表現(xiàn)出色,但它們通常需要較長(zhǎng)時(shí)間進(jìn)行日志預(yù)處理、模型訓(xùn)練和模型推斷,從而阻礙了它們?cè)谛枰焖俨渴鹑罩井惓z測(cè)服務(wù)的在線分布式云系統(tǒng)中的采用。
本文研究了在日志異常檢測(cè)中DL方法相對(duì)于更簡(jiǎn)單技術(shù)的優(yōu)越性。我們?cè)谖鍌€(gè)公共日志異常檢測(cè)數(shù)據(jù)集(如HDFS)上評(píng)估基本算法(例如KNN、SLFN)和DL方法(例如CNN)。我們的研究結(jié)果表明,簡(jiǎn)單算法在時(shí)間效率和準(zhǔn)確性方面優(yōu)于DL方法。例如,在Thunderbird數(shù)據(jù)集上,K最近鄰算法的訓(xùn)練速度比NeuralLog快1000倍,同時(shí)F1-Score高出0.0625。我們還確定了導(dǎo)致這種現(xiàn)象的三個(gè)因素,即:(1)冗余的日志預(yù)處理策略,(2)數(shù)據(jù)集的簡(jiǎn)單性,以及(3)日志異常檢測(cè)中的二元分類的性質(zhì)。為了評(píng)估DL的必要性,我們提出了LightAD,這是一種優(yōu)化訓(xùn)練時(shí)間、推理時(shí)間和性能得分的體系結(jié)構(gòu)。通過自動(dòng)化超參數(shù)調(diào)整,LightAD允許在日志異常檢測(cè)模型之間進(jìn)行公平比較,從而使工程師能夠評(píng)估復(fù)雜DL方法的適用性。
我們的研究結(jié)果為日志異常檢測(cè)社區(qū)提供了一則警示,強(qiáng)調(diào)在采用DL方法之前需要對(duì)數(shù)據(jù)集和研究任務(wù)進(jìn)行批判性分析。提出計(jì)算成本昂貴模型的研究人員應(yīng)該將他們的工作與輕量級(jí)算法進(jìn)行基準(zhǔn)測(cè)試,以確保全面評(píng)估。
論文鏈接:https://doi.org/10.1145/3597503.3623308
14、Deeply Reinforcing Android GUI Testing with Deep Reinforcement Learning
隨著 Android 應(yīng)用程序的規(guī)模和復(fù)雜性繼續(xù)增長(zhǎng),以滿足市場(chǎng)和用戶需求的增加,質(zhì)量保證挑戰(zhàn)變得更加重要。盡管先前的研究已經(jīng)證明了強(qiáng)化學(xué)習(xí)(RL)在 Android GUI 測(cè)試中的優(yōu)越性,但其有效性仍然受到限制,特別是在大型、復(fù)雜的應(yīng)用程序中。這種限制源自于表格 RL 在學(xué)習(xí)被測(cè)試應(yīng)用程序(AUT)的大狀態(tài)-動(dòng)作空間內(nèi)的知識(shí)時(shí)的無效性,以及在使用更先進(jìn)的 RL 技術(shù)時(shí)獲得的知識(shí)的次優(yōu)利用。為了解決這些限制,本文提出了 DQT,一種基于深度強(qiáng)化學(xué)習(xí)的新型自動(dòng)化 Android GUI 測(cè)試方法。DQT 使用圖嵌入技術(shù)保留了小部件的結(jié)構(gòu)和語義信息,為識(shí)別相似狀態(tài)或動(dòng)作以及區(qū)分不同狀態(tài)或動(dòng)作構(gòu)建了堅(jiān)實(shí)的基礎(chǔ)。此外,一個(gè)專門設(shè)計(jì)的深度 Q 網(wǎng)絡(luò)(DQN)通過學(xué)習(xí)與 AUT 的運(yùn)行時(shí)交互中的測(cè)試知識(shí),有效地引導(dǎo)由好奇心驅(qū)動(dòng)的探索,并在狀態(tài)或動(dòng)作之間共享這些知識(shí)。在 30 個(gè)不同的開源應(yīng)用程序上進(jìn)行的實(shí)驗(yàn)表明,DQT 在代碼覆蓋和故障檢測(cè)方面均優(yōu)于現(xiàn)有的最先進(jìn)的測(cè)試方法,特別是對(duì)于大型、復(fù)雜的應(yīng)用程序。DQT 檢測(cè)到的故障已被重現(xiàn)并報(bào)告給開發(fā)人員;到目前為止,已明確確認(rèn)了報(bào)告的問題中的 21 個(gè),并已修復(fù)了 14 個(gè)。
論文鏈接:https://doi.org/10.1145/3597503.3623344
15、Demystifying Compiler Unstable Feature Usage and Impacts in the Rust Ecosystem
Rust編程語言由于其安全性保證和出色性能,在構(gòu)建可靠和安全系統(tǒng)方面迅速地獲得了人們的青睞。為了提供額外功能,Rust編譯器引入了Rust不穩(wěn)定特性(RUF)來擴(kuò)展編譯器功能、語法和標(biāo)準(zhǔn)庫支持。然而,這些特征是不穩(wěn)定的,有可能被移除,導(dǎo)致依賴包編譯失敗。更糟糕的是,它們的影響會(huì)通過傳遞依賴關(guān)系傳播,引起整個(gè)生態(tài)系統(tǒng)的大規(guī)模失敗。盡管RUF在Rust中被廣泛使用,但以往的研究主要集中在Rust代碼安全方面,對(duì)于Rust編譯器中RUF的使用和影響卻鮮有探討。因此,我們的目標(biāo)是通過系統(tǒng)地分析Rust生態(tài)系統(tǒng)中RUF的使用和影響來彌合這一鴻溝。我們提出了一種提取RUF的新技術(shù),并通過準(zhǔn)確解析包依賴關(guān)系來定量評(píng)估其在整個(gè)生態(tài)系統(tǒng)中的影響。我們已經(jīng)分析了包含590,000個(gè)包版本和1.4億個(gè)傳遞依賴關(guān)系的整個(gè)Rust生態(tài)系統(tǒng)。我們的研究顯示,Rust生態(tài)系統(tǒng)使用了1000種不同的RUF,且最多44%的包版本受到RUF的影響,導(dǎo)致最多12%的包版本編譯失敗。為了減輕RUF的廣泛影響,我們進(jìn)一步設(shè)計(jì)和實(shí)現(xiàn)了一款RUF編譯失敗恢復(fù)工具,可以恢復(fù)高達(dá)90%的失敗情況。我們相信我們的技術(shù)、發(fā)現(xiàn)和工具可以幫助穩(wěn)定Rust編譯器,最終提升Rust生態(tài)系統(tǒng)的安全性和可靠性。
論文鏈接:https://doi.org/10.1145/3597503.3623352
16、Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Query Transformation
圖數(shù)據(jù)庫管理系統(tǒng)(GDBMSs)將圖形作為數(shù)據(jù)存儲(chǔ)。它們自然地應(yīng)用于社交網(wǎng)絡(luò)、推薦系統(tǒng)和程序分析等應(yīng)用中。然而,它們可能受到邏輯錯(cuò)誤的影響,導(dǎo)致GDBMSs計(jì)算出錯(cuò)誤的結(jié)果,進(jìn)而影響依賴于它們的應(yīng)用程序。在這項(xiàng)工作中,我們提出了注射和滿射圖查詢轉(zhuǎn)換(GQT)來檢測(cè)GDBMSs中的邏輯錯(cuò)誤。給定查詢Q,我們推導(dǎo)出一個(gè)突變查詢Q',使得它們的結(jié)果集要么是:(i)在語義上等效;或者(ii)根據(jù)突變而形成其中一個(gè)是另一個(gè)的子集或超集。當(dāng)結(jié)果之間期望的關(guān)系不成立時(shí),就會(huì)檢測(cè)到GDBMSs中的邏輯錯(cuò)誤。突變Q的關(guān)鍵見解在于圖查詢中的圖模式允許從Q和Q'之間的有向邊集的注射和滿射映射導(dǎo)出系統(tǒng)化的查詢轉(zhuǎn)換。我們?cè)谝粋€(gè)名為GraphGenie的工具中實(shí)現(xiàn)了注射和滿射圖查詢轉(zhuǎn)換(GQT),并在6個(gè)流行且成熟的GDBMSs上對(duì)其進(jìn)行了評(píng)估。GraphGenie發(fā)現(xiàn)了25個(gè)未知的錯(cuò)誤,包括16個(gè)邏輯錯(cuò)誤、3個(gè)內(nèi)部錯(cuò)誤和6個(gè)性能問題。我們的結(jié)果表明,GraphGenie在檢測(cè)GDBMSs中的邏輯錯(cuò)誤方面具有實(shí)用性和有效性,有助于提高依賴于這些GDBMSs的應(yīng)用程序的可靠性。
論文鏈接:https://doi.org/10.1145/3597503.3623307
17、Do Automatic Test Generation Tools Generate Flaky Tests?
非確定性測(cè)試行為,或稱為不穩(wěn)定性,在開發(fā)人員中是普遍且令人擔(dān)憂的現(xiàn)象。研究人員已經(jīng)研究了這個(gè)問題,并提出了減輕其影響的方法。然而,先前的絕大多數(shù)工作只考慮了開發(fā)人員編寫的測(cè)試。測(cè)試生成工具產(chǎn)生的不穩(wěn)定測(cè)試的普遍性和特性仍然大多數(shù)未知。我們探討這些工具是否也會(huì)產(chǎn)生不穩(wěn)定測(cè)試,以及這些測(cè)試與開發(fā)人員編寫的測(cè)試有何不同。此外,我們?cè)u(píng)估了抑制不穩(wěn)定測(cè)試生成的機(jī)制。我們對(duì)使用Java或Python編寫的6,356個(gè)項(xiàng)目進(jìn)行抽樣。對(duì)于每個(gè)項(xiàng)目,我們使用EvoSuite(Java)和Pynguin(Python)生成測(cè)試,并執(zhí)行每個(gè)測(cè)試200次,以尋找不一致的結(jié)果。我們的結(jié)果顯示,生成的測(cè)試中不穩(wěn)定性至少與開發(fā)人員編寫的測(cè)試一樣普遍。然而,EvoSuite中已實(shí)施的現(xiàn)有不穩(wěn)定性抑制機(jī)制在緩解這一問題方面是有效的(減少71.7%不穩(wěn)定測(cè)試)。與開發(fā)人員編寫的不穩(wěn)定測(cè)試相比,生成的不穩(wěn)定測(cè)試的原因分布不同。它們的非確定性行為更常由隨機(jī)性引起,而不是由網(wǎng)絡(luò)和并發(fā)引起。使用不穩(wěn)定性抑制,剩余的不穩(wěn)定測(cè)試與先前報(bào)告過的任何不穩(wěn)定性均有顯著差異,其中大多數(shù)可歸因于運(yùn)行時(shí)優(yōu)化和EvoSuite內(nèi)部資源閾值。這些見解連同伴隨的數(shù)據(jù)集,可以幫助維護(hù)人員改進(jìn)測(cè)試生成工具,為使用這些工具的開發(fā)人員提供建議,并為未來測(cè)試不穩(wěn)定性或測(cè)試生成領(lǐng)域的研究奠定基礎(chǔ)。
論文鏈接:https://doi.org/10.1145/3597503.3608138
18、DocFlow: Extracting Taint Specifications from Software Documentation
安全從業(yè)者通常使用靜態(tài)分析來檢測(cè)安卓應(yīng)用中的安全問題和隱私違規(guī)行為。這些分析的準(zhǔn)確性取決于平臺(tái)的建模方式和敏感方法列表。由于可用方法的數(shù)量眾多,安卓平臺(tái)更新速度快,谷歌在每個(gè)新版本上發(fā)布專有庫,因此收集這些方法通常變得不切實(shí)際。盡管安卓平臺(tái)不斷演化,但應(yīng)用開發(fā)者通過每個(gè)新版本附帶的文檔應(yīng)對(duì)這些新功能。在這項(xiàng)工作中,我們利用像安卓這樣的平臺(tái)提供的豐富文檔,提出了DocFlow,一個(gè)從文檔中直接生成平臺(tái)污點(diǎn)規(guī)范的框架。DocFlow使用API方法的文檔建模語義來檢測(cè)敏感方法(源和匯)并為其分配語義標(biāo)簽。我們的方法不需要訪問源代碼,可以分析無法獲取代碼的專有庫。我們使用安卓平臺(tái)包和封閉源谷歌Play服務(wù)庫對(duì)DocFlow進(jìn)行評(píng)估。我們的結(jié)果顯示,我們的框架以高精度檢測(cè)敏感方法,適應(yīng)新的API版本,并可以輕松擴(kuò)展以檢測(cè)其他方法類型。我們的方法證明了安卓文檔編碼了豐富的語義信息,可以對(duì)敏感方法進(jìn)行分類,無需分析源代碼或執(zhí)行特征提取。
論文鏈接:https://doi.org/10.1145/3597503.3623312
19、Domain Knowledge Matters: Improving Prompts with Fix Templates for Repairing Python Type Errors
作為一種動(dòng)態(tài)編程語言,Python在近年來變得越來越流行。雖然Python的動(dòng)態(tài)類型系統(tǒng)有助于開發(fā)人員編寫Python程序,但也會(huì)在運(yùn)行時(shí)引發(fā)類型錯(cuò)誤,這些錯(cuò)誤雖然普遍存在,但卻不容易修復(fù)。目前存在基于規(guī)則的方法自動(dòng)修復(fù)Python類型錯(cuò)誤。這些方法可以為手動(dòng)定義的模板覆蓋的類型錯(cuò)誤生成準(zhǔn)確的修補(bǔ)程序,但需要領(lǐng)域?qū)<以O(shè)計(jì)修補(bǔ)方案規(guī)則,并且在真實(shí)世界類型錯(cuò)誤的模板覆蓋率較低。學(xué)習(xí)為基礎(chǔ)的方法減輕了設(shè)計(jì)修補(bǔ)程序規(guī)則的手動(dòng)工作,由于深度學(xué)習(xí)的最新進(jìn)展,這些方法變得流行起來。在學(xué)習(xí)為基礎(chǔ)的方法中,基于提示的方法利用通過預(yù)定義提示的代碼預(yù)訓(xùn)練模型的知識(shí)庫,在一般程序修復(fù)任務(wù)中獲得了最先進(jìn)的性能。然而,這些提示是手動(dòng)定義的,沒有涉及修復(fù)Python類型錯(cuò)誤的任何特定線索,因此效果有限。如何自動(dòng)利用領(lǐng)域知識(shí)來改進(jìn)提示以進(jìn)行類型錯(cuò)誤修復(fù)是具有挑戰(zhàn)性且未被充分探討的問題。
本文提出了TypeFix,一種將修復(fù)模板結(jié)合到基于提示的方法中,用于修復(fù)Python類型錯(cuò)誤。TypeFix首先通過一種新穎的層次聚類算法挖掘廣義的修復(fù)模板。確定的修復(fù)模板指示了現(xiàn)有類型錯(cuò)誤修復(fù)的常見編輯模式和上下文。然后,TypeFix通過采用廣義修復(fù)模板作為領(lǐng)域知識(shí),為代碼預(yù)先訓(xùn)練的模型生成代碼提示,在其中,對(duì)于每個(gè)類型錯(cuò)誤,掩碼是自適應(yīng)位置而不是預(yù)先確定的。在包括BugsInPy和TypeBugs在內(nèi)的兩個(gè)基準(zhǔn)上進(jìn)行的實(shí)驗(yàn)表明,TypeFix成功修復(fù)了26和55個(gè)類型錯(cuò)誤,分別優(yōu)于最佳基線方法9和14個(gè)。此外,提出的修復(fù)模板挖掘方法可以覆蓋75%的開發(fā)人員在兩個(gè)基準(zhǔn)中的修補(bǔ)程序,將最佳基于規(guī)則的方法PyTER提高超過30%。
論文鏈接:https://doi.org/10.1145/3597503.3608132
20、ECFuzz: Effective Configuration Fuzzing for Large-Scale Systems
一個(gè)大規(guī)模系統(tǒng)包含了大量的配置空間,這是因?yàn)樗哂写罅康呐渲脜?shù)。當(dāng)探索配置空間時(shí),這導(dǎo)致了配置參數(shù)之間的組合爆炸?,F(xiàn)有的配置測(cè)試技術(shù)首先使用模糊測(cè)試來生成不同的配置參數(shù),然后直接將它們注入到測(cè)試程序中,以發(fā)現(xiàn)由配置引起的錯(cuò)誤。然而,它們沒有充分考慮大規(guī)模系統(tǒng)的復(fù)雜性,導(dǎo)致測(cè)試效果較低。在本文中,我們提出了ECFuzz,一個(gè)針對(duì)大規(guī)模系統(tǒng)的有效配置模糊器。我們的核心方法包括:(i)多維配置生成策略。ECFuzz根據(jù)不同的依賴關(guān)系設(shè)計(jì)不同的變異策略,并從候選配置參數(shù)中選擇多個(gè)配置參數(shù),有效生成配置參數(shù);(ii)面向單元測(cè)試的配置驗(yàn)證策略。ECFuzz將單元測(cè)試引入配置測(cè)試技術(shù)中,以在執(zhí)行系統(tǒng)測(cè)試之前篩選出不太可能產(chǎn)生錯(cuò)誤的配置參數(shù),并有效驗(yàn)證生成的配置參數(shù)。我們?cè)诎℉Common、HDFS、HBase、ZooKeeper和Alluxio在內(nèi)的現(xiàn)實(shí)世界大規(guī)模系統(tǒng)中進(jìn)行了大量實(shí)驗(yàn)。我們的評(píng)估結(jié)果顯示,ECFuzz在發(fā)現(xiàn)由配置引起的崩潰錯(cuò)誤方面是有效的。與包括ConfTest、ConfErr和ConfDiagDetector等最先進(jìn)的配置測(cè)試工具相比,當(dāng)相同的1000個(gè)測(cè)試用例被注入系統(tǒng)時(shí),ECFuzz發(fā)現(xiàn)了60.3-67個(gè)更多的意外失敗,增加了1.87x-2.63x。此外,ECFuzz還暴露了14個(gè)之前未知的錯(cuò)誤,其中5個(gè)已經(jīng)被確認(rèn)。
論文鏈接:https://doi.org/10.1145/3597503.3623315
21、EDEFuzz: A Web API Fuzzer for Excessive Data Exposures
API通常會(huì)向客戶端應(yīng)用程序傳輸比它們實(shí)際需要的數(shù)據(jù)多得多,并且在Web應(yīng)用程序環(huán)境下,這些數(shù)據(jù)通常會(huì)通過公共渠道傳輸。這個(gè)問題被稱為過度數(shù)據(jù)泄露(EDE),是OWASP在2019年排名第三的最重要的API漏洞。然而,在研究或工業(yè)界中,很少有自動(dòng)化工具能夠有效地發(fā)現(xiàn)和修復(fù)此類問題。這并不奇怪,因?yàn)樵搯栴}缺乏明確的測(cè)試預(yù)言:這種漏洞不會(huì)通過顯式的異常行為(例如程序崩潰或內(nèi)存訪問違規(guī))來表現(xiàn)出來。
在這項(xiàng)工作中,我們開發(fā)了一種形態(tài)學(xué)關(guān)系來解決這一挑戰(zhàn),并構(gòu)建了第一個(gè)模糊測(cè)試工具——我們稱之為EDEFuzz——來系統(tǒng)地檢測(cè)EDE。EDEFuzz可以顯著減少手動(dòng)檢查和臨時(shí)文本匹配技術(shù)中發(fā)生的誤報(bào),這是目前最常用的方法。
我們對(duì)來自Alexa Top-200的69個(gè)適用目標(biāo)進(jìn)行了EDEFuzz測(cè)試,并發(fā)現(xiàn)了33,365個(gè)潛在的泄露情況,說明了我們工具的廣泛適用性和可擴(kuò)展性。在澳大利亞八個(gè)熱門網(wǎng)站的更為嚴(yán)格控制的實(shí)驗(yàn)中,EDEFuzz以最小配置實(shí)現(xiàn)了高達(dá)98.65%的真實(shí)陽性率,展示了我們工具的準(zhǔn)確性和效率。
論文鏈接:https://doi.org/10.1145/3597503.3608133
22、EGFE: End-to-end Grouping of Fragmented Elements in UI Designs with Multimodal Learning
在工業(yè)界將UI設(shè)計(jì)原型轉(zhuǎn)化為代碼時(shí),從設(shè)計(jì)原型自動(dòng)生成代碼可以加快應(yīng)用開發(fā)和GUI迭代的速度。然而,在沒有嚴(yán)格設(shè)計(jì)規(guī)范的設(shè)計(jì)原型中,UI組件可能由碎片化元素組成。將這些碎片化元素進(jìn)行分組可以極大提高生成代碼的可讀性和可維護(hù)性。當(dāng)前的方法采用兩階段策略,引入手工制作的規(guī)則來對(duì)碎片化元素進(jìn)行分組。然而,由于視覺重疊和微小的UI元素,這些方法的性能并不令人滿意。在本研究中,我們提出了一種名為EGFE的新方法,通過UI序列預(yù)測(cè)自動(dòng)進(jìn)行端到端分組碎片化元素。為了便于UI理解,我們創(chuàng)新地構(gòu)建了一個(gè)Transformer編碼器來建模UI元素之間的關(guān)系,并采用多模態(tài)表示學(xué)習(xí)。對(duì)來自專業(yè)UI設(shè)計(jì)師的4606個(gè)UI原型數(shù)據(jù)集的評(píng)估表明,我們的方法在編輯距離閾值為4時(shí),在精確度(提高了29.75%)、召回率(提高了31.07%)和F1分?jǐn)?shù)(提高了30.39%)方面優(yōu)于最先進(jìn)的基線方法。此外,我們進(jìn)行了一項(xiàng)實(shí)證研究來評(píng)估生成的前端代碼的改進(jìn)情況。結(jié)果表明我們的方法在實(shí)際軟件工程應(yīng)用中具有有效性。我們的端到端碎片化元素分組方法為改進(jìn)與UI相關(guān)的軟件工程任務(wù)創(chuàng)造了機(jī)會(huì)。
論文鏈接:https://doi.org/10.1145/3597503.3623313
23、Enabling Runtime Verification of Causal Discovery Algorithms with Automated Conditional Independence Reasoning
因果發(fā)現(xiàn)是一種用于在數(shù)據(jù)中識(shí)別變量之間因果關(guān)系的強(qiáng)大技術(shù)。它已在軟件工程的各種應(yīng)用中得到廣泛應(yīng)用。因果發(fā)現(xiàn)廣泛涉及條件獨(dú)立性(CI)測(cè)試。因此,其輸出質(zhì)量高度依賴于CI測(cè)試的性能,而實(shí)際中這些測(cè)試往往不可靠。此外,當(dāng)進(jìn)行過多的CI測(cè)試時(shí)會(huì)引發(fā)隱私問題。
盡管不可靠和過多的CI測(cè)試之間的性質(zhì)不同,本文確定了一種統(tǒng)一而基本的方法來解決這兩個(gè)問題。一般來說,CI語句,即CI測(cè)試的輸出,遵循Pearl的公理,這是有關(guān)條件獨(dú)立性的一組既定完整性約束條件。因此,我們可以通過檢測(cè)違反Pearl公理的CI語句來識(shí)別錯(cuò)誤的CI語句,或者通過檢測(cè)邏輯地包含在Pearl公理中的過多CI語句來修剪它們。綜合地看,這兩個(gè)問題都?xì)w結(jié)為在Pearl公理下推理CI語句的一致性問題(稱為CIR問題)。
我們提出了一種名為CICheck的運(yùn)行時(shí)驗(yàn)證工具,旨在從可靠性和隱私的角度加強(qiáng)因果發(fā)現(xiàn)算法。CICheck采用一種經(jīng)過驗(yàn)證和可判定的編碼方案,將CIR轉(zhuǎn)化為SMT問題。為了高效解決CIR問題,CICheck引入了一個(gè)四階段決策過程,并通過三種輕量級(jí)優(yōu)化主動(dòng)證明或反駁一致性,并只在必要時(shí)采用昂貴的基于SMT的推理?;趯?duì)CIR的決策過程,CICheck包括兩個(gè)變體:ED-Check和P-Check,分別用于檢測(cè)錯(cuò)誤的CI測(cè)試(以增強(qiáng)可靠性)和修剪過多的CI測(cè)試(以增強(qiáng)隱私性)。我們?cè)谒膫€(gè)真實(shí)數(shù)據(jù)集和100個(gè)CIR實(shí)例上對(duì)CICheck進(jìn)行了評(píng)估,結(jié)果表明它在檢測(cè)錯(cuò)誤的CI測(cè)試和減少過多的CI測(cè)試的有效性的同時(shí)保持了實(shí)用性能。
論文鏈接:https://doi.org/10.1145/3597503.3623348
24、Exploring the Potential of ChatGPT in Automated Code Refinement: An Empirical Study
代碼審查是確保軟件項(xiàng)目質(zhì)量和可維護(hù)性的關(guān)鍵活動(dòng)。然而,這是一項(xiàng)耗時(shí)且常常存在錯(cuò)誤的任務(wù),可能會(huì)對(duì)開發(fā)過程產(chǎn)生重大影響。最近,最先進(jìn)的語言模型ChatGPT在各種自然語言處理任務(wù)中展現(xiàn)出令人印象深刻的性能,表明它有潛力自動(dòng)化代碼審查流程。然而,目前尚不清楚ChatGPT在代碼審查任務(wù)中的表現(xiàn)如何。為了填補(bǔ)這一空白,本文開展了第一項(xiàng)實(shí)證研究,以了解ChatGPT在代碼審查任務(wù)中的能力,重點(diǎn)關(guān)注基于給定代碼審查的自動(dòng)化代碼修正。為了進(jìn)行該研究,我們選擇現(xiàn)有的基準(zhǔn)數(shù)據(jù)集CodeReview,并構(gòu)建了一個(gè)質(zhì)量高的新代碼審查數(shù)據(jù)集。我們將CodeReviewer作為比較基線,與ChatGPT進(jìn)行對(duì)比。我們的研究結(jié)果顯示,ChatGPT在代碼修正任務(wù)中表現(xiàn)優(yōu)于CodeReviewer。具體來說,我們的結(jié)果顯示,ChatGPT分別實(shí)現(xiàn)了更高的EM和BLEU分?jǐn)?shù),分別為22.78和76.44,而最先進(jìn)的方法在高質(zhì)量代碼審查數(shù)據(jù)集上僅實(shí)現(xiàn)了15.50和62.88。我們進(jìn)一步確定了ChatGPT表現(xiàn)不佳的根本原因,并提出了幾種緩解這些挑戰(zhàn)的策略。我們的研究為ChatGPT在自動(dòng)化代碼審查過程中的潛力提供了見解,并強(qiáng)調(diào)了潛在的研究方向。
論文鏈接:https://doi.org/10.1145/3597503.3623306
25、FAIR: Flow Type-Aware Pre-Training of Compiler Intermediate Representations
盡管大多數(shù)現(xiàn)有的從代碼學(xué)習(xí)源代碼特征的預(yù)訓(xùn)練模型,如代碼標(biāo)記和抽象語法樹,但也有一些工作集中在從編譯器中間表示(IR)中學(xué)習(xí)?,F(xiàn)有的基于IR的模型通常利用諸如指令、控制和數(shù)據(jù)流圖(CDFGs)、調(diào)用圖等IR特征。然而,這些方法混淆了CDFG中的變量節(jié)點(diǎn)和指令節(jié)點(diǎn),并未區(qū)分不同類型的流,而它們使用的神經(jīng)網(wǎng)絡(luò)無法捕捉遠(yuǎn)距離依賴關(guān)系,并存在過度平滑和過度壓縮的問題。為了解決這些弱點(diǎn),我們提出了FAIR,一種針對(duì)IR的流類型感知預(yù)訓(xùn)練模型,涉及采用(1) IR程序的新型輸入表示;(2) 圖形變換器來解決過度平滑、過度壓縮和長(zhǎng)依賴問題;和(3) 我們專門提出的五項(xiàng)預(yù)訓(xùn)練任務(wù),使FAIR能夠?qū)W習(xí)IR標(biāo)記的語義、流類型信息和整體IR表示。實(shí)驗(yàn)結(jié)果表明,F(xiàn)AIR在四個(gè)與代碼相關(guān)的下游任務(wù)上均能達(dá)到最先進(jìn)的結(jié)果。
論文鏈接:https://doi.org/10.1145/3597503.3608136
26、Fine-SE: Integrating Semantic Features and Expert Features for Software Effort Estimation
可靠的工作量估算對(duì)軟件規(guī)劃和管理至關(guān)重要,特別是在需要有效和準(zhǔn)時(shí)交付的行業(yè)中。盡管已經(jīng)提出了各種估算方法(例如規(guī)劃撲克和類比),但它們可能是手動(dòng)的和/或主觀的,難以應(yīng)用于其他項(xiàng)目。近年來,依賴于學(xué)習(xí)專家特征或語義特征的工作量估算深度學(xué)習(xí)方法得到了廣泛研究,并被發(fā)現(xiàn)具有潛力。語義特征和專家特征分別從不同角度描述軟件任務(wù),然而在文獻(xiàn)中,這兩種特征的最佳組合尚未被探索以增強(qiáng)工作量估算。此外,有一些研究討論了在工業(yè)中估算工作量時(shí)哪些專家特征是有用的。為了實(shí)現(xiàn)這一目標(biāo),我們通過對(duì)26名企業(yè)員工進(jìn)行訪談,調(diào)查了可用于估算工作量的潛在13個(gè)專家特征?;诖?,我們提出了一種新穎的模型,稱為Fine-SE,利用語義特征和專家特征進(jìn)行工作量估算。為了驗(yàn)證我們的模型,在全球信息和通信技術(shù)企業(yè)的17個(gè)工業(yè)項(xiàng)目和四個(gè)開源軟件項(xiàng)目中,對(duì)超過30,000個(gè)軟件任務(wù)進(jìn)行了一系列評(píng)估。評(píng)估結(jié)果表明,F(xiàn)ine-SE在評(píng)估指標(biāo)(即平均絕對(duì)誤差、相對(duì)誤差的平均幅度和性能指標(biāo))上提供比基線更高的性能,特別是在具有大量軟件任務(wù)的工業(yè)項(xiàng)目中,這意味著工作量估算有了顯著改善。與專家估算相比,F(xiàn)ine-SE在項(xiàng)目?jī)?nèi)估算中提高了32.0%-45.2%的評(píng)估指標(biāo)。與最先進(jìn)的模型Deep-SE和GPT2SP相比,它在工業(yè)項(xiàng)目中也實(shí)現(xiàn)了8.9%-91.4%的提高。實(shí)驗(yàn)結(jié)果揭示了在工作量估算中集成專家特征和語義特征的價(jià)值。
論文鏈接:https://doi.org/10.1145/3597503.3623349
27、FuzzSlice: Pruning False Positives in Static Analysis Warnings through Function-Level Fuzzing
手動(dòng)確認(rèn)靜態(tài)分析報(bào)告是一項(xiàng)艱巨的任務(wù)。這是由于警告數(shù)量龐大,其中虛警的密度也很高。已經(jīng)提出了模糊測(cè)試技術(shù)來驗(yàn)證靜態(tài)分析警告。然而,一個(gè)主要的限制是對(duì)整個(gè)項(xiàng)目進(jìn)行模糊測(cè)試以達(dá)到所有靜態(tài)分析警告是不可行的。這可能需要幾天時(shí)間和指數(shù)級(jí)的機(jī)器時(shí)間才能線性增加代碼覆蓋率。
因此,我們提出了FuzzSlice,這是一個(gè)新穎的框架,可以自動(dòng)剪枝靜態(tài)分析警告中的可能虛警。與以前主要專注于確認(rèn)靜態(tài)分析警告中的真陽性的工作不同,這不可避免地需要端到端的模糊測(cè)試,F(xiàn)uzzSlice專注于排除潛在的虛警,這在靜態(tài)分析報(bào)告中占大多數(shù)。我們工作的關(guān)鍵見解是,在給定的時(shí)間預(yù)算內(nèi),在函數(shù)級(jí)別進(jìn)行模糊測(cè)試時(shí),不會(huì)導(dǎo)致崩潰的警告可能是虛警。為了實(shí)現(xiàn)這一點(diǎn),F(xiàn)uzzSlice首先旨在在函數(shù)級(jí)別生成可編譯的代碼片段。然后,F(xiàn)uzzSlice對(duì)這些代碼片段進(jìn)行模糊測(cè)試,而不是對(duì)整個(gè)二進(jìn)制文件,以剪除可能的虛警。FuzzSlice也不太可能將真實(shí)漏洞錯(cuò)誤地分類為虛警,因?yàn)樵诤瘮?shù)級(jí)別,模糊測(cè)試工具也可以重現(xiàn)導(dǎo)致崩潰的輸入。我們?cè)贘uliet綜合數(shù)據(jù)集和真實(shí)世界復(fù)雜的C項(xiàng)目上評(píng)估了FuzzSlice:openssl、tmux和openssh-portable。我們的評(píng)估顯示,Juliet數(shù)據(jù)集中有864個(gè)虛警,這些虛警都被FuzzSlice檢測(cè)到。對(duì)于開源軟件庫,我們能夠讓兩個(gè)開源軟件庫的開發(fā)人員獨(dú)立標(biāo)記這些警告。FuzzSlice自動(dòng)識(shí)別了這兩個(gè)庫中開發(fā)人員確認(rèn)的53個(gè)虛警中的33個(gè)。這意味著FuzzSlice可以在開源軟件庫中將虛警數(shù)量減少62.26%,在Juliet數(shù)據(jù)集中減少100%。
論文鏈接:https://doi.org/10.1145/3597503.3623321
28、How do Developers Talk about GitHub Actions? Evidence from Online Software Development Community
持續(xù)集成、部署和交付(CI/CD)已經(jīng)成為DevOps實(shí)踐的基石。最近幾年,GitHub Action(GHA)迅速取代了GitHub上的傳統(tǒng)CI/CD工具,為開發(fā)人員提供了高效自動(dòng)化的工作流程。隨著GHA的廣泛應(yīng)用和影響力,了解GHA開發(fā)人員在實(shí)踐中面臨的現(xiàn)有問題以及這些問題的潛在解決方案至關(guān)重要。不幸的是,目前我們?cè)谶@個(gè)領(lǐng)域的知識(shí)相對(duì)較少。為了填補(bǔ)這一空白,我們進(jìn)行了一項(xiàng)規(guī)模龐大的實(shí)證研究,涵蓋了6590個(gè)Stack Overflow(SO)問題和315個(gè)GitHub問題。我們的研究得出了與GHA相關(guān)問題的首個(gè)全面分類法,涵蓋了4個(gè)類別和16個(gè)子類別。然后,我們分析了問題類別的受歡迎程度和困難程度以及它們之間的相關(guān)性。此外,我們總結(jié)了針對(duì)不同GHA問題的56種解決策略。我們還從不同受眾的角度提煉了我們發(fā)現(xiàn)的實(shí)際啟示。我們相信我們的研究對(duì)新興的GHA實(shí)踐的研究做出了貢獻(xiàn),并指導(dǎo)了未來工具和技術(shù)的支持。
論文鏈接:https://doi.org/10.1145/3597503.3623327
29、How to Support ML End-User Programmers through a Conversational Agent
機(jī)器學(xué)習(xí)(ML)在最終用戶程序員(EUP)應(yīng)用中正日益受到重視。然而,沒有正確背景知識(shí)的機(jī)器學(xué)習(xí)最終用戶程序員(ML-EUP)面臨陡峭的學(xué)習(xí)曲線,以及在建模過程中出現(xiàn)錯(cuò)誤和缺陷的風(fēng)險(xiǎn)增加。在這項(xiàng)工作中,我們?cè)O(shè)計(jì)了一個(gè)名為“牛頓”的對(duì)話代理,作為專家來支持ML-EUP。牛頓的設(shè)計(jì)是通過對(duì)現(xiàn)有文獻(xiàn)的全面審查進(jìn)行的,從中我們確定了ML-EUP面臨的六個(gè)主要挑戰(zhàn)以及五種輔助策略。為了評(píng)估牛頓設(shè)計(jì)的有效性,我們進(jìn)行了一項(xiàng)帶主觀特征的“奧茲巫術(shù)”研究,參與者為12位ML-EUP。我們的研究結(jié)果表明,牛頓有效地幫助了ML-EUP,解決了文獻(xiàn)中所強(qiáng)調(diào)的挑戰(zhàn)。我們還提出了六項(xiàng)未來對(duì)話代理的設(shè)計(jì)指南,這可以幫助其他EUP應(yīng)用程序和軟件工程活動(dòng)。
論文鏈接:https://doi.org/10.1145/3597503.3608130
30、ITER: Iterative Neural Repair for Multi-Location Patches
自動(dòng)程序修復(fù)(APR)在使用神經(jīng)網(wǎng)絡(luò)的情況下取得了令人期待的結(jié)果。然而,大多數(shù)由APR工具生成的補(bǔ)丁僅限于一個(gè)單一位置。觀察使用神經(jīng)修復(fù)生成的補(bǔ)丁時(shí),大部分補(bǔ)丁無法編譯,而少數(shù)無法編譯的補(bǔ)丁則朝著正確的方向發(fā)展。在這兩種情況下,基本問題是忽視了局部補(bǔ)丁的潛力。在本文中,我們提出了一種基于改進(jìn)局部補(bǔ)丁直至它們變得合理和正確的迭代程序修復(fù)范例,稱為ITER。首先,ITER通過修復(fù)編譯錯(cuò)誤和進(jìn)一步細(xì)化先前生成的代碼,通過迭代改善局部單一位置的補(bǔ)丁。其次,ITER通過故障定位重新執(zhí)行,通過迭代改善局部補(bǔ)丁以構(gòu)建多位置補(bǔ)丁。ITER基于經(jīng)過驗(yàn)證的深度神經(jīng)網(wǎng)絡(luò)和代碼表示為Java實(shí)現(xiàn)。ITER在Defects4J 2.0中的10個(gè)開源項(xiàng)目中的476個(gè)缺陷上進(jìn)行評(píng)估。ITER成功修復(fù)了其中的15.5%,包括9個(gè)獨(dú)特修復(fù)的多位置錯(cuò)誤。
論文鏈接:https://doi.org/10.1145/3597503.3623337
31、Improving Testing Behavior by Gamifying IntelliJ
測(cè)試是軟件開發(fā)中重要的方面,但不幸的是,它經(jīng)常被忽視。盡管測(cè)試質(zhì)量分析(如代碼覆蓋率或變異分析)可以告知開發(fā)人員他們測(cè)試的質(zhì)量,但這些報(bào)告只在持續(xù)集成或代碼審查期間偶爾被查看,如果有的話,對(duì)開發(fā)人員的測(cè)試行為的影響往往微乎其微。為了實(shí)際影響開發(fā)人員的行為,可能需要直接在他們編程環(huán)境中激勵(lì)開發(fā)人員。我們介紹了IntelliGame,這是一個(gè)為流行的IntelliJ Java集成開發(fā)環(huán)境提供的游戲化插件,通過多級(jí)成就系統(tǒng)獎(jiǎng)勵(lì)開發(fā)人員積極的測(cè)試行為:共有27個(gè)不同的成就,每個(gè)成就都有不同的級(jí)別,當(dāng)開發(fā)人員展示出值得稱贊的測(cè)試行為時(shí)提供肯定的反饋,并激勵(lì)他們進(jìn)一步繼續(xù)和改進(jìn)這種行為。一項(xiàng)對(duì)49名參與者進(jìn)行的Java編程任務(wù)的控制實(shí)驗(yàn)顯示了IntelliGame引發(fā)的測(cè)試行為的顯著差異:受激勵(lì)的開發(fā)人員編寫更多的測(cè)試,獲得更高的覆蓋率和變異分?jǐn)?shù),更經(jīng)常地運(yùn)行他們的測(cè)試,并更早實(shí)現(xiàn)功能。
論文鏈接:https://doi.org/10.1145/3597503.3623339
32、Inferring Data Preconditions from Deep Learning Models for Trustworthy Prediction in Deployment
深度學(xué)習(xí)模型在開發(fā)階段通過對(duì)數(shù)據(jù)的某些假設(shè)進(jìn)行訓(xùn)練,然后在部署階段用于預(yù)測(cè)。在部署期間,理解模型對(duì)未知數(shù)據(jù)的預(yù)測(cè)結(jié)果的可信度非常重要。現(xiàn)有的用于規(guī)定和驗(yàn)證傳統(tǒng)軟件的方法對(duì)于這項(xiàng)任務(wù)是不足夠的,因?yàn)樗鼈儫o法處理深度神經(jīng)網(wǎng)絡(luò)模型架構(gòu)和預(yù)期結(jié)果的復(fù)雜性。在這項(xiàng)工作中,我們提出了一種新穎的技術(shù),該技術(shù)利用從神經(jīng)網(wǎng)絡(luò)計(jì)算中得出的規(guī)則來推斷深度神經(jīng)網(wǎng)絡(luò)模型的數(shù)據(jù)前提條件,以確定其預(yù)測(cè)結(jié)果的可信度。我們的方法DeepInfer引入了一種新穎的訓(xùn)練后DNN模型抽象,利用Dijkstra的謂詞變換語義進(jìn)行最弱前置條件推理。通過對(duì)神經(jīng)網(wǎng)絡(luò)抽象表示的歸納類型推導(dǎo)規(guī)則,我們可以克服由從輸出層向輸入層的反向非線性計(jì)算而引起的矩陣維度問題。我們利用每種激活函數(shù)的規(guī)則進(jìn)行最弱前提條件計(jì)算,以從深度神經(jīng)網(wǎng)絡(luò)的最終輸出的給定后置條件計(jì)算每層的前提條件。我們?cè)趤碜晕鍌€(gè)不同來源的四個(gè)不同數(shù)據(jù)集上廣泛評(píng)估了DeepInfer在29個(gè)現(xiàn)實(shí)世界DNN模型上的效果,并展示了其與密切相關(guān)工作相比的效用性、有效性和性能改進(jìn)。DeepInfer有效地檢測(cè)到高準(zhǔn)確度模型的正確和錯(cuò)誤預(yù)測(cè),具有很高的召回率(0.98)和高的F-1得分(0.84),并且相對(duì)于先前的技術(shù)SelfChecker有了顯著的改進(jìn)。DeepInfer的平均運(yùn)行時(shí)開銷很低,對(duì)于所有未知數(shù)據(jù)集只有0.22秒。我們還使用相同的硬件設(shè)置比較了運(yùn)行時(shí)開銷,并發(fā)現(xiàn)DeepInfer比SelfChecker快3.27倍,是該領(lǐng)域的最新技術(shù)。
論文鏈接:https://doi.org/10.1145/3597503.3623333
33、It's Not a Feature, It's a Bug: Fault-Tolerant Model Mining from Noisy Data
數(shù)據(jù)挖掘模型在工業(yè)中得到廣泛應(yīng)用。存在各種模型推斷方法適用于完全確定的行為,然而,在實(shí)際應(yīng)用中,由于諸如消息丟失或環(huán)境因素等故障導(dǎo)致的數(shù)據(jù)中往往包含噪聲,許多推理算法在處理這些問題時(shí)存在困難。我們提出了一種新穎的模型挖掘方法,使用部分最大可滿足性(Partial Max-SAT)求解來推斷一組帶有噪聲的執(zhí)行軌跡中最佳可能的自動(dòng)機(jī)。這種方法使我們能夠忽略最小數(shù)量的可能有誤的觀察結(jié)果,以便構(gòu)建確定性自動(dòng)機(jī)。不需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。評(píng)估了該方法的性能以及一些實(shí)際應(yīng)用方面的考慮,包括三個(gè)工業(yè)用例,我們從中推斷出正確的模型。
論文鏈接:https://doi.org/10.1145/3597503.3623346
34、Kind Controllers and Fast Heuristics for Non-Well-Separated GR(1) Specifications
非良好分離(NWS)是反應(yīng)合成規(guī)范中已知的質(zhì)量問題。NWS的問題發(fā)生在合成系統(tǒng)可以通過阻止環(huán)境無法滿足其假設(shè)來避免滿足其保證的情況下。
在這項(xiàng)工作中,我們提出了兩個(gè)方面的貢獻(xiàn),以更好地處理NWS。首先,我們展示了如何合成系統(tǒng)以避免利用NWS,即不阻止任何環(huán)境假設(shè)的滿足,即使可能。其次,我們提出了一組用于快速檢測(cè)NWS的啟發(fā)式方法。從文獻(xiàn)中的基準(zhǔn)測(cè)試結(jié)果顯示了我們工作的有效性和重要性。
論文鏈接:https://doi.org/10.1145/3597503.3608131
35、KnowLog: Knowledge Enhanced Pre-trained Language Model for Log Understanding
作為半結(jié)構(gòu)化文本,日志富含語義信息,對(duì)于自動(dòng)化日志分析而言,全面理解日志至關(guān)重要。隨著預(yù)訓(xùn)練語言模型在自然語言處理領(lǐng)域取得的成功,許多研究已利用這些模型來理解日志。盡管取得了成功,現(xiàn)有的預(yù)訓(xùn)練語言模型仍然存在三個(gè)弱點(diǎn)。首先,這些模型無法理解領(lǐng)域特定術(shù)語,尤其是縮寫詞。其次,這些模型難以充分捕捉完整的日志上下文信息。第三,這些模型難以獲取不同風(fēng)格日志的通用表示。為了解決這些挑戰(zhàn),我們引入 KnowLog,一個(gè)用于日志理解的知識(shí)增強(qiáng)預(yù)訓(xùn)練語言模型。具體而言,為解決前兩個(gè)挑戰(zhàn),我們利用來自公共文檔的日志縮寫和自然語言描述作為本地和全局知識(shí),并通過設(shè)計(jì)新穎的預(yù)訓(xùn)練任務(wù)來利用這些知識(shí)以增強(qiáng)模型。為解決最后一個(gè)挑戰(zhàn),我們?cè)O(shè)計(jì)了基于對(duì)比學(xué)習(xí)的預(yù)訓(xùn)練任務(wù)以獲得通用表示。我們通過在六項(xiàng)不同的日志理解任務(wù)上微調(diào) KnowLog 來評(píng)估其性能。大量實(shí)驗(yàn)證明,相較于沒有知識(shí)增強(qiáng)的現(xiàn)有預(yù)訓(xùn)練語言模型,KnowLog 顯著增強(qiáng)了日志理解,并取得了最新的成果。此外,在遷移學(xué)習(xí)和低資源場(chǎng)景下,我們還進(jìn)行了額外實(shí)驗(yàn),展示了 KnowLog 的重大優(yōu)勢(shì)。我們的源代碼和詳細(xì)實(shí)驗(yàn)數(shù)據(jù)可在 https://github.com/LeaperOvO/KnowLog 上獲取。
論文鏈接:https://doi.org/10.1145/3597503.3623304
36、Large Language Models are Edge-Case Generators: Crafting Unusual Programs for Fuzzing Deep Learning Libraries
深度學(xué)習(xí)(DL)庫中的漏洞可能影響幾乎所有下游DL應(yīng)用程序的運(yùn)行,因此確保這類系統(tǒng)的質(zhì)量至關(guān)重要。為模糊DL庫生成有效的輸入程序具有挑戰(zhàn)性,因?yàn)檫@些輸入程序需要同時(shí)滿足受支持語言(例如Python)的語法/語義要求以及構(gòu)建有效計(jì)算圖的張量/運(yùn)算器約束。最近,TitanFuzz的工作表明,現(xiàn)代大型語言模型(LLMs)可以被直接利用來隱式學(xué)習(xí)所有語言和DL計(jì)算約束,以生成有效的程序用于模糊DL庫(及其他用途)。然而,LLMs往往生成遵循與其龐大預(yù)訓(xùn)練語料庫(如GitHub)中典型程序相似模式/標(biāo)記的普通程序,而模糊更傾向于覆蓋邊緣情況或不太可能手動(dòng)生成的異常輸入。
為填補(bǔ)這一空白,本文提出了FuzzGPT,這是首個(gè)用于引導(dǎo)LLMs合成用于模糊的異常程序的方法。FuzzGPT主要建立在一個(gè)眾所周知的假設(shè)之上,即歷史上觸發(fā)錯(cuò)誤的程序可能包含對(duì)發(fā)現(xiàn)錯(cuò)誤至關(guān)重要的稀有/有價(jià)值的代碼元素。同時(shí),傳統(tǒng)技術(shù)利用此類歷史信息需要大量人力投入,既要設(shè)計(jì)專用生成器,又要確保生成程序的語法/語義有效性。FuzzGPT證明了通過LLMs的內(nèi)在能力(包括微調(diào)和上下文學(xué)習(xí)),這一過程可以完全自動(dòng)化,同時(shí)具有通用性,適用于具有挑戰(zhàn)性的領(lǐng)域。雖然FuzzGPT可以與不同的LLMs一起使用,但本文專注于功能強(qiáng)大的GPT風(fēng)格模型:Codex和CodeGen。此外,F(xiàn)uzzGPT還展示了直接利用最近ChatGPT的指令遵循能力進(jìn)行有效模糊的潛力。對(duì)PyTorch和TensorFlow這兩個(gè)流行的DL庫的實(shí)驗(yàn)研究表明,F(xiàn)uzzGPT可以顯著優(yōu)于TitanFuzz,檢測(cè)到76個(gè)漏洞,其中49個(gè)已經(jīng)被確認(rèn)為先前未知的漏洞,包括11個(gè)高優(yōu)先級(jí)的錯(cuò)誤或安全漏洞。
論文鏈接:https://doi.org/10.1145/3597503.3623343
37、Large Language Models are Few-Shot Summarizers: Multi-Intent Comment Generation via In-Context Learning
代碼注釋生成旨在為代碼片段生成自然語言描述,以促進(jìn)開發(fā)人員的程序理解活動(dòng)。盡管經(jīng)過長(zhǎng)時(shí)間的研究,現(xiàn)有方法的一個(gè)瓶頸是,給定一個(gè)代碼片段,它們只能生成一個(gè)注釋,而開發(fā)人員通常需要了解來自不同角度的信息,例如這個(gè)代碼段的功能是什么,如何使用它。為了解決這一局限性,本研究在實(shí)證上探討了利用大型語言模型(LLM)生成可以滿足開發(fā)人員多樣意圖的注釋的可行性。我們的直覺基于以下事實(shí):(1)代碼及其成對(duì)的注釋在LLM的預(yù)訓(xùn)練過程中被使用,以建立自然語言和編程語言之間的語義連接,以及(2)在真實(shí)項(xiàng)目中收集用于預(yù)訓(xùn)練的注釋通常包含不同開發(fā)人員的意圖。因此,我們假設(shè)LLM在預(yù)訓(xùn)練后已經(jīng)能夠從不同角度理解代碼。實(shí)際上,在兩個(gè)大型數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)證明了我們洞見的合理性:通過采用上下文學(xué)習(xí)范式并為L(zhǎng)LM提供充分的提示(例如提供十個(gè)或更多的示例),LLM可以顯著優(yōu)于最先進(jìn)的監(jiān)督學(xué)習(xí)方法,在生成具有多重意圖的注釋上。結(jié)果還顯示,為構(gòu)建提示設(shè)計(jì)定制化策略和對(duì)結(jié)果重新排名的后處理策略均可以提高LLM的性能,這為利用LLM實(shí)現(xiàn)注釋生成指明了未來研究方向。
論文鏈接:https://doi.org/10.1145/3597503.3608134
38、Large Language Models for Test-Free Fault Localization
故障定位(FL)旨在自動(dòng)定位有錯(cuò)誤的代碼行,這是許多手動(dòng)和自動(dòng)調(diào)試任務(wù)的關(guān)鍵第一步。先前的FL技術(shù)假定提供輸入測(cè)試,并且通常需要進(jìn)行廣泛的程序分析、程序儀器化或數(shù)據(jù)預(yù)處理。先前有關(guān)用于APR的深度學(xué)習(xí)的工作難以從小數(shù)據(jù)集中學(xué)習(xí),并且在實(shí)際程序上產(chǎn)生有限的結(jié)果。受到代碼的大型語言模型(LLMs)能夠根據(jù)極少的示例適應(yīng)新任務(wù)的能力的啟發(fā),我們研究了將LLMs應(yīng)用于行級(jí)別故障定位的可行性。具體來說,我們建議通過在LLMs學(xué)習(xí)的表示之上微調(diào)一小組雙向適配器層來克服LLMs的從左到右的性質(zhì),以生成LLMAO,這是第一個(gè)基于語言模型的故障定位方法,可以在沒有任何測(cè)試覆蓋信息的情況下定位有錯(cuò)誤的代碼行。我們使用3.5億、60億和160億參數(shù)微調(diào)LLMs,應(yīng)用于手動(dòng)篩選的小型buggy程序語料庫,如Defects4J語料庫。我們觀察到,當(dāng)基于較大模型構(gòu)建時(shí),我們的技術(shù)在故障定位方面獲得了更高的信心,隨著LLM大小的增加,bug定位性能持續(xù)提升。我們的實(shí)證評(píng)估顯示,LLMAO相對(duì)于現(xiàn)有的基于機(jī)器學(xué)習(xí)的故障定位(MLFL)基線將Top-1結(jié)果提高了2.3%至54.4%,Top-5結(jié)果提高了14.4%至35.6%。LLMAO還是第一個(gè)使用語言模型架構(gòu)訓(xùn)練的FL技術(shù),可以檢測(cè)到代碼行級(jí)別的安全漏洞。
論文鏈接:https://doi.org/10.1145/3597503.3623342
39、Learning and Repair of Deep Reinforcement Learning Policies from Fuzz-Testing Data
基于演示的強(qiáng)化學(xué)習(xí)(RLfD)是一種有前途的方法,通過從專家演示中學(xué)習(xí),以及與環(huán)境的交互,來改善強(qiáng)化學(xué)習(xí)(RL)的探索效率。在本文中,我們提出了一個(gè)框架,將基于搜索的測(cè)試技術(shù)與RLfD相結(jié)合,旨在提高RL策略的可靠性水平,并減少人工工程工作量。在我們的框架內(nèi),我們提供了有效訓(xùn)練、評(píng)估和修復(fù)RL策略的方法。我們不依賴于從(人類)專家收集昂貴的演示,而是通過基于搜索的模糊化方法自動(dòng)計(jì)算多樣化的演示集,并將這些模糊演示用于RLfD。為了評(píng)估訓(xùn)練后的RL代理的安全性和穩(wěn)健性,我們?cè)诤诤协h(huán)境中搜索安全關(guān)鍵場(chǎng)景。最后,當(dāng)檢測(cè)到不安全的行為時(shí),我們通過模糊化測(cè)試計(jì)算代表安全行為的演示,并用它們來修復(fù)策略。我們的實(shí)驗(yàn)表明,我們的框架能夠在不需要任何專家知識(shí)的情況下,有效地學(xué)習(xí)表現(xiàn)出色且安全的策略。
論文鏈接:https://doi.org/10.1145/3597503.3623311
40、Learning-based Widget Matching for Migrating GUI Test Cases
GUI測(cè)試用例遷移是將GUI測(cè)試用例從源應(yīng)用遷移到目標(biāo)應(yīng)用的過程。測(cè)試用例遷移的關(guān)鍵是小部件匹配。近年來,研究人員通過將小部件匹配建模為一個(gè)匹配任務(wù)提出了各種方法。然而,由于這些匹配方法依賴于靜態(tài)詞嵌入,沒有利用上下文信息來表示小部件,并且需要手動(dòng)制定匹配函數(shù),這在處理應(yīng)用程序中復(fù)雜匹配關(guān)系時(shí)存在主要限制。為了解決這些限制,我們提出了第一個(gè)基于學(xué)習(xí)的小部件匹配方法,稱為TEMdroid(測(cè)試遷移)。與現(xiàn)有方法不同,TEMdroid使用BERT來捕獲上下文信息并學(xué)習(xí)一個(gè)匹配模型來匹配小部件。此外,為了平衡應(yīng)用程序中正負(fù)樣本之間的明顯不平衡,我們?cè)O(shè)計(jì)了一個(gè)兩階段訓(xùn)練策略,首先訓(xùn)練一個(gè)硬負(fù)樣本挖掘器來挖掘硬負(fù)樣本,然后使用正樣本和挖掘的硬負(fù)樣本進(jìn)一步訓(xùn)練匹配模型。我們對(duì)34個(gè)應(yīng)用程序的評(píng)估顯示,TEMdroid在事件匹配(即小部件匹配和目標(biāo)事件綜合)和測(cè)試用例遷移中效果顯著。在事件匹配方面,TEMdroid的Top1準(zhǔn)確率為76%,相比基線提高了17%。對(duì)于測(cè)試用例遷移,TEMdroid的F1得分為89%,與基線方法相比也提高了7%。
論文鏈接:https://doi.org/10.1145/3597503.3623322
41、LibvDiff: Library Version Difference Guided OSS Version Identification in Binaries
開源軟件(OSS)已被廣泛應(yīng)用于加快軟件開發(fā)進(jìn)程,但不可避免地使下游軟件面臨潛在漏洞的危險(xiǎn)。準(zhǔn)確識(shí)別OSS的版本不僅有助于檢測(cè)與之相關(guān)的漏洞,還能夠在1天漏洞發(fā)布時(shí)及時(shí)發(fā)出警報(bào)。然而,當(dāng)前用于識(shí)別OSS版本的方法主要依賴于版本字符串或常量特征,這些特征在已編譯的OSS二進(jìn)制文件中可能不存在,或者當(dāng)只有函數(shù)代碼發(fā)生更改時(shí)可能不具代表性。因此,這些方法通常在識(shí)別正在使用的OSS二進(jìn)制文件的版本時(shí)不夠準(zhǔn)確。
為此,我們提出了LibvDiff,一種用于識(shí)別開源軟件版本的新方法。它通過精確的符號(hào)信息和函數(shù)級(jí)代碼變化,利用二進(jìn)制代碼相似性檢測(cè)來檢測(cè)細(xì)微差異。LibvDiff引入了基于新穎版本坐標(biāo)系統(tǒng)的候選版本過濾器,通過量化版本之間的差距并快速識(shí)別潛在版本來提高效率。為了加快代碼相似性檢測(cè)過程,LibvDiff提出了一個(gè)基于函數(shù)調(diào)用的錨定路徑過濾器,以最小化目標(biāo)二進(jìn)制文件中要比較的函數(shù)數(shù)量。我們通過在各種編譯設(shè)置和兩個(gè)數(shù)據(jù)集(一個(gè)包含版本字符串,另一個(gè)不包含版本字符串)下進(jìn)行全面實(shí)驗(yàn)來評(píng)估LibvDiff的性能,結(jié)果顯示,我們的方法在兩個(gè)數(shù)據(jù)集中分別達(dá)到94.5%和78.7%的精度,優(yōu)于現(xiàn)有的學(xué)術(shù)方法和行業(yè)工具(包括學(xué)術(shù)方法和行業(yè)工具)平均分別提高了54.2%和160.3%。通過識(shí)別和分析真實(shí)世界固件圖像中的OSS二進(jìn)制文件,我們發(fā)現(xiàn)了一些有趣的發(fā)現(xiàn),例如開發(fā)人員在更新不同的OSS時(shí)存在重大差異,不同的供應(yīng)商也可能使用相同的OSS二進(jìn)制文件。
論文鏈接:https://doi.org/10.1145/3597503.3623336
42、LogShrink: Effective Log Compression by Leveraging Commonality and Variability of Log Data
日志數(shù)據(jù)是記錄系統(tǒng)事件和狀態(tài)的關(guān)鍵資源,用于系統(tǒng)執(zhí)行期間。然而,隨著系統(tǒng)規(guī)模的增長(zhǎng),日志數(shù)據(jù)生成變得愈發(fā)爆炸,導(dǎo)致日志存儲(chǔ)成本昂貴,例如生產(chǎn)環(huán)境中每天幾百TB的存儲(chǔ)開銷。為了解決這一問題,日志壓縮已成為減少磁盤存儲(chǔ)并允許進(jìn)一步日志分析的關(guān)鍵任務(wù)。然而,現(xiàn)有的通用和特定于日志的壓縮方法在利用日志數(shù)據(jù)特性方面受到限制。為了克服這些限制,我們進(jìn)行了一項(xiàng)實(shí)證研究,并得出了關(guān)于促進(jìn)日志壓縮任務(wù)的日志數(shù)據(jù)特性的三個(gè)主要觀察結(jié)果。 基于這些觀察結(jié)果,我們提出了LogShrink,一種通過利用日志數(shù)據(jù)的共性和變化性而出色的日志壓縮方法。提出了一個(gè)基于最長(zhǎng)公共子序列和熵技術(shù)的分析器,用于確定日志消息中的潛在共性和變化性。這背后的關(guān)鍵思想是,共性和變化性可以被利用來用更短的表示方式來壓縮日志數(shù)據(jù)。此外,介紹了基于聚類的序列采樣器,以加快共性和變化性分析器的速度。廣泛的實(shí)驗(yàn)結(jié)果表明,LogShrink在壓縮比率上可以超過基線,平均提高16%至356%,同時(shí)保持合理的壓縮速度。
論文鏈接:https://doi.org/10.1145/3597503.3608129
43、Marco: A Stochastic Asynchronous Concolic Explorer
混合符號(hào)執(zhí)行是一種強(qiáng)大的程序分析技術(shù),用于代碼路徑探索。盡管最近取得了極大進(jìn)展,大大提高了混合符號(hào)執(zhí)行引擎的效率,但路徑約束求解仍然是混合符號(hào)測(cè)試的一個(gè)主要瓶頸。對(duì)于輸入/分支的智能調(diào)度變得更加關(guān)鍵。我們的研究表明,先前未經(jīng)研究的最新混合符號(hào)執(zhí)行引擎所采用的分支翻轉(zhuǎn)策略存在一些局限性。我們建議通過全局視角評(píng)估每個(gè)分支的潛力,考慮每個(gè)分支處的路徑分歧概率來驗(yàn)證這一想法。為了驗(yàn)證這一想法,我們實(shí)現(xiàn)了一個(gè)原型Marco,并對(duì)來自Google的Fuzzbench、Binutils和UniBench的30個(gè)現(xiàn)實(shí)世界程序進(jìn)行了評(píng)估。結(jié)果表明,Marco能夠超越基線方法,并在基線方法終止后持續(xù)取得進(jìn)展。
論文鏈接:https://doi.org/10.1145/3597503.3623301
44、Modularizing while Training: A New Paradigm for Modularizing DNN Models
深度神經(jīng)網(wǎng)絡(luò)(DNN)模型已經(jīng)成為智能軟件系統(tǒng)中越來越關(guān)鍵的組成部分。然而,訓(xùn)練一個(gè)DNN模型通常耗時(shí)且需要大量的計(jì)算資源。為了解決這個(gè)問題,最近的研究集中在重復(fù)使用現(xiàn)有的DNN模型上 - 借鑒軟件工程中的軟件重用概念。然而,重復(fù)使用整個(gè)模型可能會(huì)導(dǎo)致額外的開銷或繼承不需要功能的弱點(diǎn)。因此,現(xiàn)有的工作提出將已經(jīng)訓(xùn)練好的模型分解成模塊,并在此基礎(chǔ)上實(shí)現(xiàn)模塊的重復(fù)使用。由于訓(xùn)練模型并非為模塊化而構(gòu)建,因此在訓(xùn)練后進(jìn)行模塊化可能會(huì)導(dǎo)致巨大的開銷和模型準(zhǔn)確性下降。在本文中,我們提出了一種新穎的方法,將模塊化納入到模型訓(xùn)練過程中,即在訓(xùn)練過程中模塊化(MwT)。我們通過兩個(gè)損失函數(shù)訓(xùn)練一個(gè)具有結(jié)構(gòu)化模塊的模型,以優(yōu)化模塊內(nèi)的內(nèi)聚性和模塊間的耦合性。我們已經(jīng)實(shí)現(xiàn)了用于模塊化卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型的這種方法。對(duì)代表性模型的評(píng)估結(jié)果顯示,MwT優(yōu)于現(xiàn)有的最先進(jìn)的訓(xùn)練后模塊化方法。具體來說,MwT造成的準(zhǔn)確性損失只有1.13個(gè)百分點(diǎn),低于現(xiàn)有方法的準(zhǔn)確性損失。MwT生成的模塊的核保留率僅為14.58%,相比現(xiàn)有方法減少了74.31%。此外,訓(xùn)練和模塊化所需的總時(shí)間成本僅為108分鐘,僅為現(xiàn)有方法所需時(shí)間的一半。我們的工作表明,MwT是實(shí)現(xiàn)DNN模型模塊化的一種新穎且更有效的范式,為實(shí)現(xiàn)模型重用提供了一種新的視角。
論文鏈接:https://doi.org/10.1145/3597503.3608135
45、Novelty Begets Popularity, But Curbs Participation - A Macroscopic View of the Python Open-Source Ecosystem
誰創(chuàng)造了最具創(chuàng)新性的開源軟件項(xiàng)目?這些項(xiàng)目往往會(huì)有什么命運(yùn)?在建立在長(zhǎng)期研究商業(yè)和其他領(lǐng)域創(chuàng)新的基礎(chǔ)上,以及最近在科學(xué)研究領(lǐng)域科學(xué)的創(chuàng)新建模方面的進(jìn)展的基礎(chǔ)上,本文采用創(chuàng)新的類比,將其視為從現(xiàn)有知識(shí)的新組合中產(chǎn)生。因此,我們認(rèn)為那些以新穎方式重新組合現(xiàn)有軟件庫的軟件項(xiàng)目是創(chuàng)新的,即那些基于從導(dǎo)入語句中提取的不尋常組合的軟件包構(gòu)建的項(xiàng)目。然后,我們報(bào)告了對(duì)Python開源軟件生態(tài)系統(tǒng)中創(chuàng)新的大規(guī)模定量研究。我們的結(jié)果表明,更高水平的創(chuàng)新性在統(tǒng)計(jì)上與更高的GitHub星標(biāo)數(shù)量相關(guān),即新穎性帶來了受歡迎程度。與此同時(shí),我們發(fā)現(xiàn),在控制項(xiàng)目規(guī)模的情況下,更具創(chuàng)新性的項(xiàng)目往往涉及較小的貢獻(xiàn)者團(tuán)隊(duì),并且有更高的風(fēng)險(xiǎn)在長(zhǎng)期內(nèi)被放棄。我們得出結(jié)論,創(chuàng)新和開源可持續(xù)性密切相關(guān),并在某種程度上是對(duì)立的。
論文鏈接:https://doi.org/10.1145/3597503.3608142
46、NuzzleBug: Debugging Block-Based Programs in Scratch
雖然專業(yè)的集成式編程環(huán)境為開發(fā)人員提供先進(jìn)的調(diào)試功能,但面向年輕學(xué)習(xí)者的基于塊的編程環(huán)境通常根本不提供調(diào)試支持,從而抑制了調(diào)試并阻止了調(diào)試教育的進(jìn)行。本文介紹了NuzzleBug,這是流行的基于塊的編程環(huán)境Scratch的一個(gè)擴(kuò)展,它提供了缺失的調(diào)試支持。NuzzleBug可以通過經(jīng)典調(diào)試功能(如單步執(zhí)行和斷點(diǎn))來控制Scratch程序的執(zhí)行,它是一款全知調(diào)試器,還可以進(jìn)行反向執(zhí)行。為了幫助學(xué)習(xí)者得出引導(dǎo)調(diào)試的假設(shè),NuzzleBug是一款詢問式調(diào)試器,它可以詢問關(guān)于執(zhí)行的問題,并提供解釋所詢問行為的答案。為了評(píng)估NuzzleBug,我們調(diào)查了教師的意見,并研究了對(duì)學(xué)習(xí)者在調(diào)試效果和效率方面的影響。我們發(fā)現(xiàn)教師認(rèn)為NuzzleBug是有用的,并且孩子們可以有效地使用它來調(diào)試有問題的程序。然而,系統(tǒng)性調(diào)試需要專門的培訓(xùn),即使NuzzleBug能提供正確答案,學(xué)習(xí)者可能仍需要進(jìn)一步幫助理解故障和必要的修復(fù)措施,因此需要進(jìn)一步研究改進(jìn)調(diào)試技術(shù)及其提供的信息。
論文鏈接:https://doi.org/10.1145/3597503.3623331
47、Object Graph Programming
我們介紹了對(duì)象圖編程(OGO),它可以通過聲明性查詢讀取和修改對(duì)象圖(即對(duì)象堆的整個(gè)狀態(tài))。OGO將堆中的對(duì)象及其關(guān)系建模為對(duì)象圖,因此將堆視為圖數(shù)據(jù)庫:圖中的每個(gè)節(jié)點(diǎn)都是一個(gè)對(duì)象(例如,一個(gè)類的實(shí)例或元數(shù)據(jù)類的實(shí)例),每個(gè)邊都是對(duì)象之間的關(guān)系(例如,一個(gè)對(duì)象的字段引用另一個(gè)對(duì)象)。我們利用Cypher,即圖數(shù)據(jù)庫最流行的查詢語言,作為OGO的查詢語言。與使用集合(例如List)作為數(shù)據(jù)源的LINQ不同,OGO將整個(gè)對(duì)象圖視為單個(gè)“集合”。OGO非常適合用于查詢集合(就像LINQ一樣),內(nèi)省運(yùn)行時(shí)系統(tǒng)狀態(tài)(例如,查找給定類的所有實(shí)例或通過反射訪問字段),以及編寫訪問整個(gè)程序狀態(tài)的斷言。我們分別在Java中使用兩種方式為OGO制作了原型:(a)將對(duì)象圖轉(zhuǎn)換為Neo4j數(shù)據(jù)庫,然后運(yùn)行Cypher查詢,和(b)通過實(shí)現(xiàn)我們自己的內(nèi)存圖查詢引擎直接查詢對(duì)象堆。我們使用OGO將大型開源項(xiàng)目中的數(shù)百個(gè)語句重寫為OGO查詢。我們報(bào)告了我們的原型的使用經(jīng)驗(yàn)和性能。
論文鏈接:https://doi.org/10.1145/3597503.3623319
48、On Using GUI Interaction Data to Improve Text Retrieval-based Bug Localization
管理缺陷報(bào)告的最重要任務(wù)之一是定位故障,以便應(yīng)用修復(fù)。因此,先前的研究旨在將這個(gè)缺陷定位任務(wù)自動(dòng)化,將其構(gòu)建為一個(gè)信息檢索問題,根據(jù)與給定缺陷報(bào)告的文本相似性檢索和排名潛在有缺陷的文件。然而,在缺陷報(bào)告中包含的信息與源代碼文件中的標(biāo)識(shí)符或自然語言之間通常存在顯著的語義鴻溝。對(duì)于面向用戶的軟件,目前存在一個(gè)關(guān)鍵信息源,可以幫助定位缺陷,但尚未得到深入研究 - 來自圖形用戶界面(GUI)的信息。
本文研究了這樣一個(gè)假設(shè),即對(duì)于面向最終用戶的應(yīng)用程序,將缺陷報(bào)告中的信息與GUI中的信息相連接,并利用這一點(diǎn)來幫助檢索潛在有缺陷的文件,可以改進(jìn)基于文本檢索的缺陷定位現(xiàn)有技術(shù)。為了研究這種現(xiàn)象,我們進(jìn)行了一項(xiàng)全面的實(shí)證研究,通過從重現(xiàn)場(chǎng)景中提取GUI交互信息,以增強(qiáng)四種基線文本檢索技術(shù)用于缺陷定位,以(i)篩選出可能無關(guān)緊要的文件,(ii) 強(qiáng)化可能相關(guān)的文件,以及(iii)重構(gòu)文本檢索查詢。為了執(zhí)行我們的研究,我們從包括80個(gè)來自39個(gè)流行開源應(yīng)用程序的缺陷報(bào)告在內(nèi)的安卓應(yīng)用實(shí)際錯(cuò)誤的當(dāng)前最大數(shù)據(jù)集中獲取了完全本地化和可重現(xiàn)的真實(shí)錯(cuò)誤。我們的結(jié)果表明,利用GUI信息增強(qiáng)傳統(tǒng)技術(shù)可顯著提高多個(gè)指標(biāo)的有效性,包括在Hits@10上相對(duì)增加了13-18%。此外,通過進(jìn)一步分析,我們發(fā)現(xiàn)我們研究的增強(qiáng)技術(shù)主要是與現(xiàn)有技術(shù)互補(bǔ)的,將其他有缺陷的文件推入前10個(gè)結(jié)果,同時(shí)通常保留來自基線技術(shù)的排名靠前的文件。
論文鏈接:https://doi.org/10.1145/3597503.3608139
49、On the Helpfulness of Answering Developer Questions on Discord with Similar Conversations and Posts from the Past
軟件開發(fā)人員大部分時(shí)間都花在尋找與編碼任務(wù)相關(guān)的問題的答案上。為了回答他們的問題,開發(fā)人員通常進(jìn)行網(wǎng)絡(luò)搜索,在問答網(wǎng)站上提問,或者最近在聊天社區(qū)中提問。然而,許多這些問題在先前的聊天對(duì)話或其他在線社區(qū)中已經(jīng)有了答案。自動(dòng)識(shí)別并向提問者建議這些先前的答案,可以節(jié)省時(shí)間和精力。在經(jīng)驗(yàn)分析中,我們首先探討了Discord聊天平臺(tái)上重復(fù)問題的頻率,并評(píng)估了我們自動(dòng)識(shí)別這些問題的方法。然后,通過一個(gè)領(lǐng)域?qū)嶒?yàn),我們與真實(shí)世界的開發(fā)人員評(píng)估了這一方法,通過這一實(shí)驗(yàn)我們得到了142個(gè)關(guān)于我們提供的建議對(duì)于幫助回答四個(gè)Discord社區(qū)中開發(fā)人員發(fā)布的277個(gè)問題的實(shí)用性的評(píng)價(jià)。我們還通過53份調(diào)查和10次追加訪談收集了定性反饋。我們發(fā)現(xiàn),在40%的情況下,這些建議被認(rèn)為是有幫助的,建議Stack Overflow帖子更常被認(rèn)為是有幫助的,而過去的Discord對(duì)話,開發(fā)人員難以將問題描述為搜索查詢,因此更傾向于將問題描述為在線社區(qū)中的自然語言問題。
論文鏈接:https://doi.org/10.1145/3597503.3623341
50、PonziGuard: Detecting Ponzi Schemes on Ethereum with Contract Runtime Behavior Graph (CRBG)
在近年來發(fā)現(xiàn)以太坊智能合約中存在龐氏騙局,這種騙局形式導(dǎo)致了巨大的財(cái)務(wù)損失?;谝?guī)則的檢測(cè)方法依賴于預(yù)定義規(guī)則,具有有限的功能和領(lǐng)域知識(shí)依賴性。此外,使用類似操作碼和交易的靜態(tài)信息用于機(jī)器學(xué)習(xí)模型無法有效描述龐氏合約,導(dǎo)致可靠性和可解釋性較差。
在本文中,我們提出了PonziGuard,一種基于合約運(yùn)行時(shí)行為的高效龐氏騙局檢測(cè)方法。受到的啟發(fā)觀察表明,合約的運(yùn)行時(shí)行為更有效地掩蓋了龐氏合約和無辜合約之間的區(qū)別,PonziGuard建立了一種全面的圖形表示,稱為合約運(yùn)行時(shí)行為圖(CRBG),準(zhǔn)確描繪了龐氏合約的行為。此外,它將檢測(cè)過程形式化為圖分類任務(wù),增強(qiáng)了其整體效果。我們對(duì)一個(gè)地面真實(shí)數(shù)據(jù)集進(jìn)行了比較實(shí)驗(yàn),并將PonziGuard應(yīng)用于以太坊主網(wǎng)。結(jié)果顯示,PonziGuard勝過當(dāng)前的最先進(jìn)方法,并且在開放環(huán)境中也很有效。使用PonziGuard,我們已經(jīng)在以太坊主網(wǎng)上識(shí)別出了805個(gè)龐氏合約,導(dǎo)致了約281,700以太或大約5億美元的經(jīng)濟(jì)損失。
論文鏈接:https://doi.org/10.1145/3597503.3623318
51、Practical Program Repair via Preference-based Ensemble Strategy
到目前為止,已經(jīng)設(shè)計(jì)了超過40種自動(dòng)程序修復(fù)(APR)工具,具有不同的錯(cuò)誤修復(fù)策略,已經(jīng)證明在有效修復(fù)不同類型錯(cuò)誤方面具有互補(bǔ)性能。直覺上,通過組裝現(xiàn)有工具應(yīng)該可以提高APR的整體錯(cuò)誤修復(fù)性能。不幸的是,僅僅調(diào)用所有可用的APR工具修復(fù)一個(gè)特定的錯(cuò)誤可能會(huì)導(dǎo)致在APR執(zhí)行以及補(bǔ)丁驗(yàn)證(通過昂貴的測(cè)試)方面產(chǎn)生無法接受的成本。因此,雖然組裝現(xiàn)有工具具有吸引力,但需要一個(gè)有效的策略來協(xié)調(diào)修復(fù)更多錯(cuò)誤的需求和實(shí)用性的要求。鑒于這個(gè)問題,我們提出了一種基于偏好的集成程序修復(fù)框架(P-EPR),旨在有效排名修復(fù)不同錯(cuò)誤的APR工具。P-EPR是第一種非學(xué)習(xí)型的APR集成方法,其利用修復(fù)模式作為排名APR工具的主要知識(shí)來源,并依賴于動(dòng)態(tài)更新策略,使其能夠立即利用和從新獲得的修復(fù)結(jié)果中獲益。實(shí)驗(yàn)結(jié)果表明,P-EPR在靈活性和效果方面顯著優(yōu)于現(xiàn)有策略。
論文鏈接:https://doi.org/10.1145/3597503.3623310
52、Predicting Performance and Accuracy of Mixed-Precision Programs for Precision Tuning
混合精度程序是一個(gè)使用不同精度進(jìn)行不同操作的浮點(diǎn)程序,這為平衡精度和性能之間的權(quán)衡提供了機(jī)會(huì)。精度調(diào)優(yōu)旨在找到一個(gè)改善性能并保持給定精度的程序的混合精度版本。不幸的是,現(xiàn)有的精度調(diào)優(yōu)方法要么局限于小規(guī)模程序,要么存在效率問題。在本文中,我們提出了一種新方法FPLearner,該方法解決了這些限制。我們的見解是利用基于機(jī)器學(xué)習(xí)的技術(shù),圖神經(jīng)網(wǎng)絡(luò),來學(xué)習(xí)混合精度程序的表示以預(yù)測(cè)它們的性能和精度。這種預(yù)測(cè)模型可以用來加速動(dòng)態(tài)精度調(diào)優(yōu)的過程,減少程序運(yùn)行的次數(shù)。我們從五個(gè)不同的高性能計(jì)算應(yīng)用程序創(chuàng)建了一個(gè)混合精度程序的數(shù)據(jù)集,用于訓(xùn)練我們的模型,這些模型在性能預(yù)測(cè)方面達(dá)到了96.34%的F1分?jǐn)?shù),精度預(yù)測(cè)方面達(dá)到了97.03%的F1分?jǐn)?shù)。FPLearner將兩個(gè)動(dòng)態(tài)精度調(diào)整器Precimonious和HiFPTuner的時(shí)間效率平均提高了25.54%,最高提高了61.07%,同時(shí)實(shí)現(xiàn)了可比較或更好質(zhì)量的精度調(diào)優(yōu)結(jié)果。
論文鏈接:https://doi.org/10.1145/3597503.3623338
53、Predicting open source contributor turnover from value-related discussions: An analysis of GitHub issues
關(guān)于項(xiàng)目?jī)r(jià)值觀的討論對(duì)于開發(fā)滿足不同人類需求并積極影響社會(huì)的工程軟件至關(guān)重要。由于與價(jià)值相關(guān)的討論涉及根深蒂固的信念,它們可能導(dǎo)致沖突或其他可能影響繼續(xù)為開源項(xiàng)目做出貢獻(xiàn)的動(dòng)機(jī)的結(jié)果。然而,目前尚不清楚與人員流動(dòng)的顯著變化相關(guān)的價(jià)值相關(guān)討論的類型。我們通過識(shí)別與重要項(xiàng)目?jī)r(jià)值相關(guān)的討論,并調(diào)查這些討論在接下來幾個(gè)月內(nèi)預(yù)測(cè)項(xiàng)目流動(dòng)性的程度來填補(bǔ)這一空白。我們收集了來自52個(gè)項(xiàng)目的GitHub問題和提交日志,這些項(xiàng)目分享類似的倫理承諾,并被確定為分布式Web(Decentralized Web)社區(qū)的一部分。我們確定了與分布式Web的核心價(jià)值觀(尊重、自由、開明、反對(duì)中心化社會(huì)權(quán)力、公正和平等、保護(hù)環(huán)境)相關(guān)的問題。然后我們使用Granger因果分析來檢查與這些價(jià)值相關(guān)的討論比例的變化如何可能預(yù)測(cè)收入和退出流動(dòng)性的變化。我們發(fā)現(xiàn)了許多與價(jià)值相關(guān)的討論和人員流動(dòng)之間的顯著關(guān)系,包括關(guān)于尊重的討論預(yù)測(cè)貢獻(xiàn)者的流失增加和新貢獻(xiàn)者的減少,而關(guān)于社會(huì)權(quán)力的討論則預(yù)測(cè)貢獻(xiàn)者的保留更好。了解這些引起貢獻(xiàn)者流動(dòng)的原因?qū)τ诠芾砗w以人為中心問題的開源項(xiàng)目至關(guān)重要?;谶@些結(jié)果,我們討論了對(duì)開源維護(hù)者和未來研究的影響。
論文鏈接:https://doi.org/10.1145/3597503.3623340
54、Prompting Is All You Need: Automated Android Bug Replay with Large Language Models
Bug報(bào)告對(duì)于軟件維護(hù)至關(guān)重要,允許用戶在使用軟件時(shí)通知開發(fā)人員遇到的問題。因此,研究人員已經(jīng)投入了相當(dāng)多的資源來自動(dòng)化錯(cuò)誤重現(xiàn),以加快軟件維護(hù)的過程。然而,當(dāng)前自動(dòng)化方法的成功很大程度上取決于錯(cuò)誤報(bào)告的特征和質(zhì)量,因?yàn)樗鼈兪苤朴谑止ぶ谱鞯哪J胶皖A(yù)定義的詞匯列表的限制。受到大型語言模型(LLM)在自然語言理解方面的成功啟發(fā),我們提出了AdbGPT,一種新的輕量級(jí)方法,通過提示工程自動(dòng)從bug報(bào)告中重現(xiàn)錯(cuò)誤,無需任何訓(xùn)練和硬編碼的工作。AdbGPT利用少樣本學(xué)習(xí)和思維鏈推理來從LLM中引出人類知識(shí)和邏輯推理,以類似于開發(fā)人員的方式完成bug重現(xiàn)。我們的評(píng)估證明了我們的AdbGPT在253.6秒內(nèi)復(fù)現(xiàn)了81.3%的錯(cuò)誤報(bào)告的有效性和效率,優(yōu)于最先進(jìn)的基準(zhǔn)線和消融研究。我們還進(jìn)行了一項(xiàng)小規(guī)模用戶研究,以確認(rèn)AdbGPT在提升開發(fā)人員的錯(cuò)誤重現(xiàn)能力方面的實(shí)用性。
論文鏈接:https://doi.org/10.1145/3597503.3608137
55、RUNNER: Responsible UNfair NEuron Repair for Enhancing Deep Neural Network Fairness
深度神經(jīng)網(wǎng)絡(luò)(DNNs)作為一種新興的軟件技術(shù),在各個(gè)領(lǐng)域取得了令人矚目的成果。然而,DNN模型對(duì)某些群體的歧視行為(即不公平性)越來越成為社會(huì)關(guān)注的焦點(diǎn),特別是在貸款批準(zhǔn)和犯罪風(fēng)險(xiǎn)評(píng)估等高風(fēng)險(xiǎn)應(yīng)用中。盡管已經(jīng)有一些工作致力于改善模型的公平性,但大多數(shù)方法都采用了對(duì)抗者來擴(kuò)展模型架構(gòu)或增加訓(xùn)練數(shù)據(jù),這會(huì)引入過多的計(jì)算開銷。最近的研究首先診斷出導(dǎo)致不公平的神經(jīng)元,然后通過選擇性重新訓(xùn)練來修復(fù)它們。然而,由于多步訓(xùn)練樣本分析,現(xiàn)有的診斷過程耗時(shí),而選擇性重新訓(xùn)練可能會(huì)引起性能瓶頸,因?yàn)樵谄袠颖旧祥g接調(diào)整不公平神經(jīng)元。在本文中,我們提出了負(fù)責(zé)不公平神經(jīng)元修復(fù)(RUNNER),在三個(gè)關(guān)鍵方面改進(jìn)了現(xiàn)有工作:(1)效率:我們?cè)O(shè)計(jì)了基于重要性的神經(jīng)元診斷方法,通過使用新的神經(jīng)元重要性準(zhǔn)則,在一步內(nèi)確定導(dǎo)致不公平的神經(jīng)元;(2)有效性:我們?cè)O(shè)計(jì)了神經(jīng)元穩(wěn)定訓(xùn)練,通過添加一個(gè)損失項(xiàng)來衡量來自所有來源的不同子組的責(zé)任不公平神經(jīng)元的激活距離;(3)泛化性:我們研究了在結(jié)構(gòu)化表格數(shù)據(jù)和大規(guī)模非結(jié)構(gòu)化圖像數(shù)據(jù)上的有效性,這在以往的研究中經(jīng)常被忽視。我們?cè)?個(gè)數(shù)據(jù)集上進(jìn)行了廣泛的實(shí)驗(yàn),結(jié)果表明RUUNER可以有效且高效地診斷和修復(fù)DNNs的不公平性。平均而言,我們的方法將計(jì)算開銷從341.7秒降低到29.65秒,并將公平性提高了高達(dá)79.3%。此外,RUNNER還在非結(jié)構(gòu)化數(shù)據(jù)集上保持了最先進(jìn)的結(jié)果。
論文鏈接:https://doi.org/10.1145/3597503.3623334
56、Reorder Pointer Flow in Sound Concurrency Bug Prediction
由于線程交錯(cuò)的非確定性,預(yù)測(cè)并發(fā)bug長(zhǎng)期以來一直是一項(xiàng)極其困難的任務(wù)。最近,提出了幾種可靠的bug檢測(cè)方法。這些方法都基于本地搜索,即改變觀察到的跟蹤序列的順序,并預(yù)測(cè)改變后的順序是否會(huì)觸發(fā)bug。令人驚訝的是,在這個(gè)過程中,它們從未考慮重新排序指針的數(shù)據(jù)流,而這可能是檢測(cè)許多復(fù)雜bug的關(guān)鍵點(diǎn)。為了彌補(bǔ)這個(gè)弱點(diǎn),我們提出了一種新的流敏感的指向分析技術(shù)ConPTA,可以幫助在順序變異過程中積極重新排序指針流。基于ConPTA,我們進(jìn)一步提出了一種新的可靠的bug預(yù)測(cè)方法Eagle,用于預(yù)測(cè)四種類型的并發(fā)bug。它們是空指針解引用(NPD),未初始化的指針使用(UPU),釋放后使用(UAF)和重復(fù)釋放(DF)。通過積極重新排序指針流,Eagle可以在變異過程中探索更大的線程交錯(cuò)搜索空間,從而檢測(cè)到更多的并發(fā)bug。我們對(duì)Eagle在10個(gè)真實(shí)的多線程程序上的評(píng)估顯示,Eagle在效果和效率方面明顯優(yōu)于四種最先進(jìn)的bug檢測(cè)方法UFO、ConVul、ConVulPOE和Period。
論文鏈接:https://doi.org/10.1145/3597503.3623300
57、Resource Usage and Optimization Opportunities in Workflows of GitHub Actions
持續(xù)集成和持續(xù)交付(CI/CD)在軟件開發(fā)中已成為一種普遍實(shí)踐。GitHub Actions正逐漸成為一個(gè)流行的平臺(tái),用于實(shí)現(xiàn)CI/CD流水線,稱為工作流,特別是因?yàn)樵撈脚_(tái)每個(gè)月為公共存儲(chǔ)庫免費(fèi)提供2,000分鐘的計(jì)算。為了了解這些資源的用途以及CI/CD是否可以更加高效,本文介紹了GitHub Actions工作流的資源使用和優(yōu)化機(jī)會(huì)的首個(gè)全面實(shí)證研究。我們的研究結(jié)果顯示,CI/CD需要巨大的成本,例如對(duì)于一個(gè)平均付費(fèi)等級(jí)存儲(chǔ)庫每年需要$504。絕大部分資源被測(cè)試和構(gòu)建消耗(91.2%),這是由拉取請(qǐng)求(50.7%)、推送(30.9%)和定期計(jì)劃工作流(15.5%)觸發(fā)的。雖然現(xiàn)有的優(yōu)化措施,如緩存(在付費(fèi)等級(jí)的存儲(chǔ)庫中采用率為32.9%)產(chǎn)生了積極影響,但整體上仍未充分利用。這一結(jié)果強(qiáng)調(diào)了增強(qiáng)文檔和工具的必要性,引導(dǎo)開發(fā)人員使用更加資源高效的工作流。此外,我們展示了平臺(tái)中相對(duì)簡(jiǎn)單的更改,例如在存儲(chǔ)庫處于非活動(dòng)狀態(tài)時(shí)停用定期計(jì)劃工作流,可以使受影響的工作流執(zhí)行時(shí)間縮短1.1%至31.6%。總的來說,我們希望我們的研究結(jié)果有助于改善CI/CD流水線的資源效率。
論文鏈接:https://doi.org/10.1145/3597503.3623303
58、Revealing Hidden Threats: An Empirical Study of Library Misuse in Smart Contracts
智能合約是在區(qū)塊鏈上執(zhí)行的圖靈完備程序。開發(fā)人員可以使用Solidity編程語言在以太坊上實(shí)現(xiàn)復(fù)雜的合約,如拍賣和借貸。作為一種面向?qū)ο蟮恼Z言,Solidity在其語法中提供了庫,以促進(jìn)代碼的可重用性并減少開發(fā)復(fù)雜性。庫誤用指的是庫的不正確編寫或使用,導(dǎo)致意外結(jié)果,比如在庫開發(fā)過程中引入漏洞或在合同開發(fā)過程中引入不安全的庫。庫誤用可能導(dǎo)致合同缺陷,造成財(cái)務(wù)損失。目前,關(guān)于庫誤用的研究還很少。為了填補(bǔ)這一空白,我們從五家審計(jì)公司的官方網(wǎng)站收集了500多份審計(jì)報(bào)告,以及來自Etherscan的223,336個(gè)實(shí)際世界的智能合約,用來衡量庫的流行程度和庫的誤用情況。接著,我們定義了八種庫誤用的一般模式;其中三種發(fā)生在庫開發(fā)過程中,五種發(fā)生在庫的利用過程中,涵蓋了整個(gè)庫的生命周期。為了驗(yàn)證這些模式的實(shí)用性,我們手動(dòng)分析了1,018個(gè)實(shí)際世界的智能合約,并公開了我們的數(shù)據(jù)集。我們發(fā)現(xiàn)在456個(gè)合約中存在905個(gè)誤用案例,表明庫誤用是一個(gè)普遍存在的問題。其中三種誤用模式在50個(gè)以上的合約中被發(fā)現(xiàn),主要是因?yàn)殚_發(fā)人員缺乏安全意識(shí)或低估了負(fù)面影響。此外,我們的研究還揭示了在以太坊上的易受攻擊的庫在被棄用或修補(bǔ)后仍然被使用。我們的發(fā)現(xiàn)可以幫助合同開發(fā)人員預(yù)防庫的誤用,確保庫的安全使用。
論文鏈接:https://doi.org/10.1145/3597503.3623335
59、SCTrans: Constructing a Large Public Scenario Dataset for Simulation Testing of Autonomous Driving Systems
對(duì)自動(dòng)駕駛系統(tǒng)(ADS)的安全評(píng)估而言,仿真測(cè)試已成為物理道路測(cè)試的重要補(bǔ)充技術(shù)。本質(zhì)上,仿真測(cè)試是一種基于場(chǎng)景的方法,其有效性高度依賴于給定仿真場(chǎng)景的質(zhì)量。此外,仿真場(chǎng)景應(yīng)編碼為格式良好的文件,否則ADS仿真平臺(tái)無法將其用作輸入。缺乏大規(guī)模的仿真場(chǎng)景文件公共數(shù)據(jù)集,阻礙了ADS仿真測(cè)試在工業(yè)和學(xué)術(shù)領(lǐng)域的應(yīng)用。
為填補(bǔ)這一空白,我們提出了一種基于轉(zhuǎn)換的方法SCTrans來構(gòu)建仿真場(chǎng)景文件,利用現(xiàn)有交通場(chǎng)景數(shù)據(jù)集(即在公共道路上記錄的道路用戶自然的移動(dòng))作為數(shù)據(jù)源。具體而言,我們嘗試將現(xiàn)有的交通場(chǎng)景記錄文件轉(zhuǎn)換為與最先進(jìn)的ADS仿真平臺(tái)兼容的仿真場(chǎng)景文件,并將此任務(wù)形式化為模型轉(zhuǎn)換問題。遵循這一思路,我們構(gòu)建了一個(gè)包含超過1,900個(gè)多樣化仿真場(chǎng)景的數(shù)據(jù)集,每個(gè)場(chǎng)景都可以直接用于通過高保真度模擬器(如Carla和LGSVL)測(cè)試最先進(jìn)的ADS(即Apollo和Autoware)。為了進(jìn)一步展示我們數(shù)據(jù)集的實(shí)用性,我們展示了它可以增強(qiáng)現(xiàn)有基于仿真的ADS模糊器的碰撞查找能力,有助于在相同時(shí)間段內(nèi)識(shí)別約七倍更多與ADS相關(guān)的碰撞。通過在代碼級(jí)別分析這些碰撞,我們確定了Apollo和Autoware的九個(gè)安全關(guān)鍵性漏洞,每個(gè)漏洞都可以穩(wěn)定地被利用以引發(fā)車輛事故。到目前為止,已確認(rèn)其中四個(gè)漏洞。
論文鏈接:https://doi.org/10.1145/3597503.3623350
60、Semantic Analysis of Macro Usage for Portability
C語言是一種不安全的語言。研究人員一直在開發(fā)工具,將C語言轉(zhuǎn)換為更安全的語言,如Rust、Checked C或Go。然而,現(xiàn)有的工具通常通過預(yù)處理源文件,然后轉(zhuǎn)換生成的代碼,導(dǎo)致代碼幾乎無法識(shí)別,喪失了宏抽象。為了保留宏的使用方式,轉(zhuǎn)換工具需要具備理解宏行為并將其轉(zhuǎn)換為等效結(jié)構(gòu)的分析能力。然而,宏語義與典型函數(shù)不同,因此無法通過簡(jiǎn)單的語法轉(zhuǎn)換進(jìn)行轉(zhuǎn)換。我們介紹了第一個(gè)全面的框架,用于分析宏使用的可移植性。我們將宏行為分解為26個(gè)細(xì)粒度屬性,并實(shí)現(xiàn)了一個(gè)名為Maki的程序分析工具,能夠以94%的準(zhǔn)確率在實(shí)際代碼中識(shí)別這些屬性。我們將Maki應(yīng)用于包含86,199個(gè)宏定義的21個(gè)程序中。我們發(fā)現(xiàn)實(shí)際宏比之前所知的更加易于移植。超過三分之一(37%)的宏易于移植,Maki為移植更復(fù)雜的宏提供了提示。我們發(fā)現(xiàn),相較于先前的工作,平均有2倍更多易于移植的宏,在最好的情況下多達(dá)7倍。在Maki的輸出指導(dǎo)下,我們?cè)谌齻€(gè)實(shí)際程序中找到并手動(dòng)移植了宏。我們向Linux維護(hù)者提交了轉(zhuǎn)換了十一個(gè)宏的補(bǔ)丁,其中有九個(gè)已被接受。
論文鏈接:https://doi.org/10.1145/3597503.3623323
61、Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners?
建立在區(qū)塊鏈技術(shù)和智能合約之上的去中心化金融(DeFi)生態(tài)系統(tǒng)的增長(zhǎng)導(dǎo)致對(duì)安全和可靠的智能合約開發(fā)的需求增加。然而,針對(duì)智能合約的攻擊正在增加,造成估計(jì)達(dá)64.5億美元的財(cái)務(wù)損失。研究人員已經(jīng)提出了各種自動(dòng)化安全工具來檢測(cè)漏洞,但它們?cè)诂F(xiàn)實(shí)世界中的影響仍然不確定。
在本文中,我們旨在揭示自動(dòng)化安全工具在識(shí)別可能導(dǎo)致重大攻擊的漏洞方面的有效性,以及它們?cè)谛袠I(yè)內(nèi)的整體使用情況。我們的全面研究包括對(duì)五種SoTA自動(dòng)化安全工具的評(píng)估,對(duì)導(dǎo)致23億美元損失的127起高影響力實(shí)際攻擊的分析,以及對(duì)49名在領(lǐng)先的DeFi協(xié)議中工作的開發(fā)人員和審計(jì)人員的調(diào)查。我們的研究結(jié)果揭示了一個(gè)嚴(yán)峻的現(xiàn)實(shí):這些工具只能預(yù)防數(shù)據(jù)集中僅有的8%的攻擊,金額為2.3億美元損失中的1.49億美元。值得注意的是,所有可預(yù)防的攻擊都與遞歸漏洞有關(guān)。此外,從業(yè)者將邏輯相關(guān)錯(cuò)誤和協(xié)議層漏洞視為重要威脅,這些威脅目前并未得到現(xiàn)有安全工具的充分解決。我們的研究結(jié)果強(qiáng)調(diào)了開發(fā)針對(duì)開發(fā)人員和審計(jì)人員獨(dú)特需求和期望的專門工具的必要性。此外,我們的研究突顯了安全工具持續(xù)進(jìn)步的必要性,以有效應(yīng)對(duì)DeFi生態(tài)系統(tǒng)面臨的不斷演變的挑戰(zhàn)。
論文鏈接:https://doi.org/10.1145/3597503.3623302
62、TRACED: Execution-aware Pre-training for Source Code
目前大多數(shù)針對(duì)源代碼的預(yù)訓(xùn)練語言模型主要側(cè)重于學(xué)習(xí)靜態(tài)代碼文本,通常會(huì)與靜態(tài)代碼結(jié)構(gòu)(抽象語法樹、依賴圖等)相結(jié)合。然而,在真正執(zhí)行之前程序的語義將無法完全顯露。缺乏對(duì)程序執(zhí)行的理解,靜態(tài)預(yù)訓(xùn)練模型無法全面捕捉動(dòng)態(tài)代碼特性,如分支覆蓋和運(yùn)行時(shí)變量值,因此在代碼理解任務(wù)(如檢索語義克隆和檢測(cè)軟件漏洞)方面效果較差。
為了彌合語言模型的靜態(tài)特質(zhì)與程序動(dòng)態(tài)特性之間的差距,我們引入了TRACED,一種針對(duì)源代碼的執(zhí)行感知預(yù)訓(xùn)練策略。具體來說,我們通過源代碼、可執(zhí)行輸入以及相應(yīng)的執(zhí)行追蹤的組合對(duì)代碼語言模型進(jìn)行預(yù)訓(xùn)練。我們的目標(biāo)是在預(yù)訓(xùn)練期間教會(huì)代碼模型復(fù)雜的執(zhí)行邏輯,使模型能夠在專門任務(wù)的微調(diào)過程中靜態(tài)估計(jì)動(dòng)態(tài)代碼特性,而無需重復(fù)執(zhí)行代碼。
為了說明我們提出的方法的有效性,我們?cè)谌齻€(gè)下游任務(wù)上對(duì)TRACED進(jìn)行了微調(diào)和評(píng)估:靜態(tài)執(zhí)行估計(jì)、克隆檢索和漏洞檢測(cè)。實(shí)證結(jié)果顯示,TRACED相對(duì)于靜態(tài)預(yù)訓(xùn)練代碼模型提高了12.4%的完整執(zhí)行路徑預(yù)測(cè)精度,以及25.2%的運(yùn)行時(shí)變量值預(yù)測(cè)精度。TRACED在四個(gè)公共基準(zhǔn)測(cè)試中在克隆檢索和漏洞檢測(cè)方面也顯著優(yōu)于靜態(tài)預(yù)訓(xùn)練模型。
論文鏈接:https://doi.org/10.1145/3597503.3608140
63、Toward Automatically Completing GitHub Workflows
持續(xù)集成和交付(CI/CD)如今已經(jīng)成為軟件開發(fā)的核心。它們的好處是建立和維護(hù)CI/CD管道的成本,這需要知識(shí)和技能,通常與其他與軟件相關(guān)的任務(wù)不同。雖然已經(jīng)提出了幾種推薦系統(tǒng)來支持開發(fā)人員完成各種任務(wù),但在建立和維護(hù)CI/CD管道方面幾乎沒有自動(dòng)化支持。我們提出了GH-WCOM(GitHub工作流完整性),這是一種基于Transformer的方法,支持開發(fā)人員編寫特定類型的CI/CD管道,即GitHub工作流。為了處理這樣的任務(wù),我們?cè)O(shè)計(jì)了一個(gè)抽象過程,以幫助變壓器的學(xué)習(xí),同時(shí)讓GH-WCOM能夠推薦非常特殊的工作流元素,如工具選項(xiàng)和腳本元素。我們的實(shí)證研究表明,GH-WCOM提供了高達(dá)34.23%的正確預(yù)測(cè),而模型的置信度是推薦的正確性可能性的可靠代理。
論文鏈接:https://doi.org/10.1145/3597503.3623351
64、Toward Improved Deep Learning-based Vulnerability Detection
深度學(xué)習(xí)(DL)已經(jīng)成為近期幾種漏洞檢測(cè)技術(shù)的共同線索。大量公開可獲得的漏洞數(shù)據(jù)集的涌現(xiàn)推動(dòng)了支撐這些技術(shù)的學(xué)習(xí)過程。盡管這些數(shù)據(jù)集有助于基于DL的漏洞檢測(cè)器,但也限制了這些檢測(cè)器的預(yù)測(cè)能力。這些數(shù)據(jù)集中的漏洞必須以某種方式表示,例如代碼行、函數(shù)或存在漏洞的程序片段。我們將這種表示稱為基本單元。檢測(cè)器學(xué)習(xí)基本單元如何容易受到攻擊,然后預(yù)測(cè)其他基本單元是否容易受到攻擊。我們假設(shè)這種對(duì)個(gè)別基本單元的關(guān)注會(huì)影響檢測(cè)器正確檢測(cè)跨越多個(gè)基本單元的漏洞(或MBU漏洞)的能力。對(duì)于這類漏洞,只有在檢測(cè)到所有包含的基本單元都被判定為易受攻擊時(shí)才是正確的。驗(yàn)證現(xiàn)有技術(shù)在檢測(cè)漏洞所有部分方面的表現(xiàn)對(duì)于確定它們對(duì)其他下游任務(wù)的有效性至關(guān)重要。為了評(píng)估我們的假設(shè),我們進(jìn)行了一項(xiàng)研究,重點(diǎn)關(guān)注三種知名的基于DL的檢測(cè)器:ReVeal、DeepWukong和LineVul。我們的研究顯示,這三款檢測(cè)器在各自的數(shù)據(jù)集中都包含MBU漏洞。此外,我們觀察到在檢測(cè)到這些類型的漏洞時(shí),準(zhǔn)確率顯著下降。我們提出了我們的研究以及一個(gè)框架,可用于幫助基于DL的檢測(cè)器正確包含MBU漏洞。
論文鏈接:https://doi.org/10.1145/3597503.3608141
65、Towards Reliable AI: Adequacy Metrics for Ensuring the Quality of System-level Testing of Autonomous Vehicles
基于人工智能的系統(tǒng)在各個(gè)領(lǐng)域,包括自動(dòng)駕駛汽車(AVs)中已經(jīng)廣泛流行。然而,由于其復(fù)雜性,確保其可靠性和安全性是具有挑戰(zhàn)性的。傳統(tǒng)的用于評(píng)估傳統(tǒng)軟件測(cè)試效果的測(cè)試充分性指標(biāo)通常不足或在這些系統(tǒng)中不實(shí)用。專為這些系統(tǒng)設(shè)計(jì)的白盒度量指標(biāo)利用神經(jīng)元覆蓋信息。這些覆蓋度量需要訪問底層人工智能模型和訓(xùn)練數(shù)據(jù),這些數(shù)據(jù)可能并不總是可用。此外,現(xiàn)有的充分性度量指標(biāo)與檢測(cè)生成的測(cè)試套件中的故障的能力之間存在較弱的相關(guān)性,我們旨在在本研究中彌合這一差距。
在本文中,我們引入一組名為“測(cè)試套件實(shí)例空間充分性”(TISA)度量的黑盒測(cè)試充分性指標(biāo),可用于評(píng)估測(cè)試套件的有效性。TISA度量提供了一種評(píng)估測(cè)試套件的多樣性和覆蓋范圍以及測(cè)試期間檢測(cè)到的錯(cuò)誤范圍的方法。此外,我們引入了一個(gè)框架,允許測(cè)試人員在二維空間中可視化測(cè)試套件的多樣性和覆蓋范圍,有助于識(shí)別需要改進(jìn)的領(lǐng)域。
我們通過檢查TISA指標(biāo)與AVs系統(tǒng)級(jí)模擬測(cè)試中檢測(cè)到故障數(shù)量之間的相關(guān)性來評(píng)估TISA指標(biāo)的有效性。強(qiáng)相關(guān)性以及短計(jì)算時(shí)間表明其在估計(jì)測(cè)試AVs的充分性方面的有效性和效率。
論文鏈接:https://doi.org/10.1145/3597503.3623314
66、UniLog: Automatic Logging via LLM and In-Context Learning
日志記錄旨在確定日志記錄語句的位置、詳細(xì)程度級(jí)別和日志消息,是軟件可靠性增強(qiáng)的關(guān)鍵過程。近年來,已設(shè)計(jì)了許多自動(dòng)日志記錄工具,旨在幫助開發(fā)人員完成日志記錄任務(wù)之一(例如,在try-catch塊中提供建議是否記錄日志)。這些工具在特定情況下很有用,但通常不能提供全面的日志記錄解決方案。此外,盡管最近的研究已開始探索端到端的日志記錄,但仍然受到微調(diào)成本高昂的限制,阻礙了在軟件開發(fā)中的實(shí)際實(shí)用性。為解決這些問題,本文提出了UniLog,這是一個(gè)基于大型語言模型(LLM)中上下文學(xué)習(xí)(ICL)范式的自動(dòng)日志記錄框架。具體而言,UniLog可以僅通過包含五個(gè)示例演示的提示生成一個(gè)適當(dāng)?shù)娜罩居涗浾Z句,而無需進(jìn)行任何模型調(diào)整。此外,UniLog在僅用幾百個(gè)隨機(jī)樣本熱身后可以進(jìn)一步增強(qiáng)其日志記錄能力。我們?cè)谝粋€(gè)包含來自1,465個(gè)GitHub倉庫中提取的12,012個(gè)代碼片段的大型數(shù)據(jù)集上評(píng)估了UniLog。結(jié)果顯示,UniLog在自動(dòng)日志記錄方面實(shí)現(xiàn)了最先進(jìn)的性能:(1)在選擇日志記錄位置方面的準(zhǔn)確率為76.9%,(2)在預(yù)測(cè)詳細(xì)程度級(jí)別方面的準(zhǔn)確率為72.3%,(3)在生成日志消息方面的BLEU-4分?jǐn)?shù)為27.1。與此同時(shí),UniLog所需的參數(shù)調(diào)整時(shí)間不到對(duì)同一LLM進(jìn)行微調(diào)所需時(shí)間的4%。
論文鏈接:https://doi.org/10.1145/3597503.3623326
67、Unveiling the Life Cycle of User Feedback: Best Practices from Software Practitioners
用戶反饋對(duì)于組織改進(jìn)軟件產(chǎn)品變得越來越重要。先前的研究主要關(guān)注于反饋收集,并報(bào)告了對(duì)這一過程的高層概述,往往忽視了從業(yè)者如何通過一系列結(jié)構(gòu)化活動(dòng)對(duì)這些反饋進(jìn)行推理和行動(dòng)。在這項(xiàng)工作中,我們與來自各種規(guī)模和領(lǐng)域(如電子商務(wù)、分析和游戲)的32個(gè)組織中的40名從業(yè)者進(jìn)行了一項(xiàng)探索性訪談研究。我們的調(diào)查結(jié)果表明,組織利用許多不同的用戶反饋來源。社交媒體已成為一個(gè)關(guān)鍵類別的反饋來源,對(duì)許多組織變得越來越關(guān)鍵。我們發(fā)現(xiàn),組織積極參與許多非平凡的活動(dòng)來策劃和采取行動(dòng),具體取決于反饋來源。我們將這些活動(dòng)綜合成一個(gè)管理用戶反饋的生命周期。我們還報(bào)告了從認(rèn)為他們的組織有效理解和解決用戶反饋的從業(yè)者的回應(yīng)中提煉出的管理用戶反饋的最佳實(shí)踐。我們呈現(xiàn)了可操作的實(shí)證結(jié)果,組織可以利用這些結(jié)果來增進(jìn)對(duì)用戶感知和行為的理解,以開發(fā)出更好的產(chǎn)品,從而減少用戶的流失。
論文鏈接:https://doi.org/10.1145/3597503.3623309
68、VeRe: Verification Guided Synthesis for Repairing Deep Neural Networks
神經(jīng)網(wǎng)絡(luò)修復(fù)旨在通過修改模型的架構(gòu)或參數(shù)來修復(fù)神經(jīng)網(wǎng)絡(luò)的“錯(cuò)誤”。然而,由于神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)驅(qū)動(dòng)特性,很難解釋內(nèi)部神經(jīng)元和錯(cuò)誤行為之間的關(guān)系,使進(jìn)一步修復(fù)變得具有挑戰(zhàn)性。雖然已經(jīng)有一些工作存在,利用梯度或因果分析來識(shí)別負(fù)責(zé)神經(jīng)元,但它們的有效性嚴(yán)重依賴于可用的“錯(cuò)誤”數(shù)據(jù)的質(zhì)量以及層或神經(jīng)元選擇中的多種啟發(fā)式方法。在這項(xiàng)工作中,我們利用形式驗(yàn)證的力量(特別是對(duì)神經(jīng)網(wǎng)絡(luò))來解決這個(gè)問題。具體地,我們提出了VeRe,一個(gè)基于驗(yàn)證的神經(jīng)網(wǎng)絡(luò)修復(fù)框架,它利用線性松弛來符號(hào)計(jì)算神經(jīng)元修復(fù)的重要性,并進(jìn)一步優(yōu)化有問題神經(jīng)元的參數(shù)以修復(fù)錯(cuò)誤行為。我們?cè)诟鞣N修復(fù)任務(wù)上評(píng)估了VeRe,實(shí)驗(yàn)結(jié)果顯示VeRe可以有效地修復(fù)所有神經(jīng)網(wǎng)絡(luò)而不降低模型的性能。對(duì)于消除后門的任務(wù),VeRe成功將攻擊成功率平均降至0.38%,同時(shí)平均導(dǎo)致性能下降0.9%。對(duì)于修復(fù)安全屬性的任務(wù),VeRe成功修復(fù)了所有36個(gè)任務(wù),平均達(dá)到99.87%的泛化能力。
論文鏈接:https://doi.org/10.1145/3597503.3623332文章來源:http://www.zghlxwxcb.cn/news/detail-837329.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-837329.html
到了這里,關(guān)于軟件工程頂會(huì)——ICSE '24 論文清單、摘要的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!