哈尔滨做网站seo的,中企动力是正规公司吗,绵阳网站网站建设,苏州注册公司需要多少钱1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments 近年来#xff0c;学习型Android恶意软件检测器不断增多。这些检测器可以分为三种类型#xff1a;基于字符串、基于图像和基于图形。它们大多在理想情况下取得了良好的… 1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments 近年来学习型Android恶意软件检测器不断增多。这些检测器可以分为三种类型基于字符串、基于图像和基于图形。它们大多在理想情况下取得了良好的检测性能。然而在现实中检测器常常面临不在分布范围之内的样本原因可能是代码混淆、概念漂移例如软件开发技术的演变和新的恶意软件类别的出现以及对抗样本。这一问题引起了越来越多的关注但缺乏对现有各种类型的检测器在这些具有挑战性环境下进行比较研究。为了填补这一空白我们从三种类型的检测器中选择了12个代表性的检测器并分别在涉及代码混淆、概念漂移和对抗样本的具有挑战性的场景中对它们进行评估。实验结果显示没有任何一个评估的检测器能够保持其理想情况下的检测性能而不同类型的检测器在各种具有挑战性的环境下的性能差异显著。我们确定了几个导致检测器性能下降的因素包括特征提取方法和学习模型的局限性。我们还分析了不同类型的检测器在面对代码混淆、概念漂移和对抗样本时为何表现出明显性能差异的原因。最后我们分别从用户和研究者的角度提供了实用建议。我们希望我们的工作能够帮助理解不同类型的检测器并为增强它们的性能和鲁棒性提供指导。 论文链接https://doi.org/10.1145/3597503.3623320 2、A Large-Scale Survey on the Usability of AI Programming Assistants: Successes and Challenges 最近软件工程领域广泛部署了AI编程助手如GitHub Copilot。然而在实践中开发人员并不高频地接受AI编程助手的初始建议。这引发了许多关于这些工具可用性的问题。为了了解开发人员在使用这些工具时的实践以及他们面临的重要可用性挑战我们向大量开发人员进行了调查并收到了来自410位不同背景的开发人员的回应。通过定性和定量分析的混合方法我们发现开发人员最主要的动机是使用AI编程助手来帮助减少按键次数、快速完成编程任务和记忆语法但对于帮助构思潜在解决方案的使用意愿较低。我们还发现开发人员不使用这些工具的最重要原因是因为这些工具没有输出符合特定功能或非功能要求的代码以及开发人员在控制工具以生成所需输出时遇到困难。我们的研究结果对于AI编程助手的开发者和用户都有重要影响比如设计与这些工具的最小认知努力交互以减少用户在编程时的干扰。 论文链接https://doi.org/10.1145/3597503.3608128 3、Attention! Your Copied Data is Under Monitoring: A Systematic Study of Clipboard Usage in Android Apps 最近剪贴板在移动应用程序中的使用变得普遍使用户能够在同一应用程序内或跨不同应用程序之间复制和粘贴文本。然而在移动操作系统中的剪贴板上缺乏足够的访问控制将其包含的数据暴露给高风险其中一个应用程序可以读取其他应用中复制的数据并将其存储在本地甚至发送到远程服务器。不幸的是文献中只有零星的研究在这方面缺乏对整个移动应用程序生态系统的全面和系统性研究。为了建立缺失的联系本文提出了一种自动化工具 ClipboardScope它利用基于原则的静态程序分析方法通过定义使用方式的两个方面的组合揭示了移动应用程序中的剪贴板数据使用。即剪贴板数据如何被验证以及它去向何处。根据应用程序中的剪贴板使用它定义了四种主要的剪贴板数据操作类别分别是“点对点”、“全壁球”、“选择性”和“挑选” ClipboardScope在截至2022年6月Google Play上共有220万款移动应用中评估了26201款应用程序这些应用程序访问和处理了剪贴板文本。它识别出23948、848、1075和330款应用程序分别被认定为四种指定类别。此外我们还发现了一种流行的编程习惯即使用SharedPreferences对象存储历史数据这可能成为一种不易察觉的隐私泄漏渠道。 论文链接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已成为促进软件依赖关系、漏洞、许可证和供应链管理的工具。虽然已经投入了大量精力提高SBOM意识并开发SBOM格式和工具但最近的研究表明SBOM仍然是一种尚未被充分采用的早期技术。本文在之前的研究基础上报告了一项全面的研究调查了利益相关者在创建和使用SBOMs时遇到的当前挑战。该研究对属于五个利益相关者群体熟悉SBOMs的从业者、关键开源项目成员、AI/ML、网络物理系统和法律从业者的138位从业者进行了调查使用不同问卷还对8位调查受访者进行了访谈以进一步了解他们的经验。我们确定了面临创建和使用SBOMs的12个主要挑战包括与SBOM内容相关的挑战、SBOM工具的不足、SBOM的维护和验证以及特定领域的挑战。我们提出并讨论了针对所确定挑战的4个可行解决方案并提出了未来研究和发展的主要途径。 论文链接https://doi.org/10.1145/3597503.3623347 5、BinAug: Enhancing Binary Similarity Analysis with Low-Cost Input Repairing 二进制代码相似性分析BCSA是各种软件安全、逆向工程和再工程应用的基本构建模块。现有研究已应用深度神经网络DNNs来衡量二进制代码之间的相似性这是在DNNs在处理媒体数据如图像方面取得重大突破之后的产物。尽管基于DNN的BCSA取得了有益的结果但由于DNN的不稳定性和黑匣子特性它并没有被广泛应用于工业领域。 在本研究中我们首先对最先进的BCSA工具进行了广泛研究并从定量和定性的角度调查了它们的错误预测。然后我们相应地设计了一个低成本且通用的框架名为Binaug通过修复它们的输入二进制代码来提高BCSA工具的准确性。与基于DNN的BCSA的典型工作流程相一致Binaug获取了代码相似性的排序前K结果然后使用一组精心设计的转换重新排列结果。Binaug支持黑盒和白盒设置取决于DNN模型内部的可访问性。我们的实验结果表明在黑盒和白盒设置下Binaug可通过平均提高2.38pt和6.46pt来不断改善SoTA BCSA工具的性能。此外通过Binaug在黑盒和白盒设置下我们将二进制软件组件分析的F1分数平均提高了5.43pt和7.45pt。 论文链接https://doi.org/10.1145/3597503.3623328 6、Block-based Programming for Two-Armed Robots: A Comparative Study 编程工业机器人是困难且昂贵的。虽然最近的工作在使更广泛的用户能够使用方面取得了重大进展但通常仅限于简单的程序并且其可用性在实践中尚未经过测试。在本文中我们介绍了Duplo一种基于块的编程环境允许最终用户为双臂机器人编程并解决需要协调的任务。Duplo将每个手臂的程序并排放置利用来自每个程序的块之间的空间关系来表示并行性以便最终用户能够轻松理解。这个设计是由先前的工作提出的但在实际编程环境中尚未实施或评估。我们进行了一项随机实验共有52名参与者对Duplo进行了评估他们需要完成包含多个子任务的复杂编程任务。我们将Duplo与商业解决方案RobotStudio Online YuMi进行了比较发现Duplo允许参与者更快地完成相同的任务并取得更大的成功。通过分析我们在用户研究中收集的信息我们进一步确定了解释这种性能差异的因素以及仍然存在的障碍比如调试问题和与机器人交互的困难。这项工作是朝着让更广泛的非专业用户进行编程迈出的又一步这可能促使机器人技术的更广泛部署。 论文链接https://doi.org/10.1145/3597503.3623329 7、Characterizing Software Maintenance Meetings: Information Shared, Discussion Outcomes, and Information Captured 迄今为止在软件工程文献中很少研究的一种会议类型是我们所称的软件维护会议定期召开的团队会议在这些会议中通常讨论超出日常站立会议范围的新问题但又不一定具有必要召开完全独立会议的挑战性。这些会议往往涉及各种各样的话题在保持软件开发项目进行中起着关键作用但关于这些会议以及它们的进程知之甚少。在本文中我们报告了一项单一的探索性案例研究我们分析了一家重要医疗软件提供商的连续十次维护会议。我们分析了这些会议中讨论的信息种类以及如何讨论讨论产生的结果以及为下游使用捕获的信息。我们的研究结果多种多样提出了对于进行这类会议的人员实际考虑的问题以及对于进一步理解和支持这种会议的新的研究方向。 论文链接https://doi.org/10.1145/3597503.3623330 8、Co-Creation in Fully Remote Software Teams 本文利用协同创造的视角这一概念最初在管理和设计领域中被创造和应用表明一群人通过人、活动和工具的协同创造出有意义的东西研究如何完全远程的软件团队共同创造可以被看作一种文档形式的数字化工件。我们报告了一项定性的、基于面试的研究结果对象为25名在远程团队中工作的软件专业人员。我们的主要发现包括定义了四种协同创造模型示例表明如何将这些模型顺序化为工作链以产生工件影响开发人员如何将任务匹配到模型和链的因素以及协同创造工具支持的一些见解。综合起来我们的研究结果说明了协同创造是一项有意义的活动在远程软件团队选择如何结构他们的协同活动中发挥着重要作用。 论文链接https://doi.org/10.1145/3597503.3623297 9、CoderEval: A Benchmark of Pragmatic Code Generation with Generative Pre-trained Models 基于预训练和微调范式的代码生成模型越来越受到学术界和工业界的尝试导致了众所周知的工业模型如Codex、CodeGen和PanGu-Coder。为了评估这些模型的有效性提出了多个现有基准例如HumanEval和AiXBench其中仅包括生成独立函数的情况即可能调用或访问仅内置函数和标准库的函数。然而非独立函数通常不包括在现有基准中组成了流行开源项目中超过70%的函数并且仅在独立函数上评估模型的有效性无法反映这些模型在实际代码生成场景即生成用于开源或专有代码的实际代码上的有效性。 为了帮助填补前面的差距本文提出了一个名为CoderEval的基准包括从流行实际开源项目中精心策划的230个Python和230个Java代码生成任务以及一个独立执行平台以自动评估生成代码的功能正确性。 CoderEval支持来自六个不同级别的上下文依赖的代码生成任务其中上下文指的是函数生成过程中定义在外部的依赖第三方库、当前类、文件或项目中的类型、API、变量和常量等代码元素。 CoderEval可用于评估模型在生成代码时的有效性而不仅仅是独立函数。通过在CoderEval和HumanEval上评估三种最先进的代码生成模型CodeGen、PanGu-Coder和ChatGPT我们发现这些模型在生成独立函数方面的有效性明显高于生成非独立函数的有效性。我们的分析突出了当前的进展并指出了进一步利用上下文信息来提高模型有效性的未来方向。 论文链接https://doi.org/10.1145/3597503.3623316 10、CrashTranslator: Automatically Reproducing Mobile Application Crashes Directly from Stack Trace 崩溃报告对于软件维护至关重要因为它们可以让开发人员了解移动应用程序遇到的问题。在修复之前开发人员需要复现崩溃这是一项非常耗时且繁琐的任务。现有研究通过自然语言描述的复现步骤进行了自动崩溃复现。然而我们发现有相当一部分崩溃报告只包含发生崩溃时的堆栈跟踪。这种仅包含堆栈跟踪的崩溃仅显示发生崩溃时的最后一个GUI页面并且缺乏逐步指导。开发人员往往需要花费更多的精力来理解问题和复现崩溃现有技术无法处理这种情况因此迫切需要自动化支持。本文提出了一种名为CrashTranslator的方法可以直接从堆栈跟踪自动复现移动应用程序崩溃。它通过利用预先训练的大型语言模型来预测触发崩溃的探索步骤并设计基于强化学习的技术来减轻不准确的预测并全面引导搜索。我们在涉及58个热门Android应用的75份崩溃报告上评估了CrashTranslator它成功复现了61.3%的崩溃超过了现有技术基线109%至206%。此外平均复现时间为68.7秒超过了基线302%至1611%。我们还评估了CrashTranslator的实用性结果令人鼓舞。 论文链接https://doi.org/10.1145/3597503.3623298 11、DEMISTIFY: Identifying On-device Machine Learning Models Stealing and Reuse Vulnerabilities in Mobile Apps 移动应用程序通过设备上的机器学习技术提供人工智能AI服务变得越来越受欢迎。与传统上在远程服务器上完成这些AI服务不同这些设备上的技术会在本地处理AI服务所需的敏感信息可以减轻远程数据收集的严重担忧。然而这些设备上的技术必须将机器学习专业知识的核心例如模型本地推送到智能手机上这些仍然容易受到远程云和服务器上类似漏洞的影响尤其是在面对模型窃取攻击时。为了防御这些攻击开发人员采取了各种保护措施。不幸的是我们发现这些保护措施仍然不够移动应用中的设备上机器学习模型可以被无限制地提取和重复使用。为了更好地展示其不足的保护措施和这种攻击的可行性本文提出了DeMistify它会在应用程序中静态定位机器学习模型切片相关的执行组件并最终自动生成脚本来使移动应用程序成功地窃取和重复使用目标机器学习模型。为了评估DeMistify并展示其适用性我们将其应用于从谷歌Play商店的安装数量基础上使用设备上机器学习专业知识为几种机器学习服务的1,511个热门移动应用程序DeMistify可以成功执行1250个占82.73%。此外还进行了深入研究以了解移动应用程序中的设备上机器学习生态系统。 论文链接https://doi.org/10.1145/3597503.3623325 12、Dataflow Analysis-Inspired Deep Learning for Efficient Vulnerability Detection 基于深度学习的漏洞检测显示出了很好的性能在一些研究中甚至优于静态分析工具。然而表现最好的方法使用基于标记的变压器模型这些模型并不是捕获漏洞检测所需的代码语义最有效的方式。经典的程序分析技术例如数据流分析可以根据其根本原因检测许多类型的错误。在本文中我们提出将这种基于因果关系的漏洞检测算法与深度学习相结合旨在实现更高效和有效的漏洞检测。具体地我们设计了DeepDFA一个受数据流分析启发的图学习框架和一种嵌入技术使图学习能够模拟数据流计算。我们展示了DeepDFA既性能卓越又高效。DeepDFA优于所有非变压器基准。它在9分钟内训练完成比性能最好的基线模型快了75倍。当只使用50多个易受攻击和数百个总例子作为训练数据时该模型保持了与100%数据集相同的性能。DeepDFA还推广到了DbgBench中的真实世界漏洞它在所有fold中平均检测到了17个漏洞中的8.7个并且能够区分修补和有缺陷的版本而性能最好的基准模型未能检测到任何漏洞。通过将DeepDFA与大型语言模型结合我们在Big-Vul数据集上实现了最新的漏洞检测性能F1分数为96.46精确度为97.82召回率为95.14。我们的复制包位于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 虽然深度学习DL已经成为一种强大的技术但其优势必须在与计算成本相关的情况下进行仔细考虑。具体而言尽管DL方法在日志异常检测方面表现出色但它们通常需要较长时间进行日志预处理、模型训练和模型推断从而阻碍了它们在需要快速部署日志异常检测服务的在线分布式云系统中的采用。 本文研究了在日志异常检测中DL方法相对于更简单技术的优越性。我们在五个公共日志异常检测数据集如HDFS上评估基本算法例如KNN、SLFN和DL方法例如CNN。我们的研究结果表明简单算法在时间效率和准确性方面优于DL方法。例如在Thunderbird数据集上K最近邻算法的训练速度比NeuralLog快1000倍同时F1-Score高出0.0625。我们还确定了导致这种现象的三个因素即1冗余的日志预处理策略2数据集的简单性以及3日志异常检测中的二元分类的性质。为了评估DL的必要性我们提出了LightAD这是一种优化训练时间、推理时间和性能得分的体系结构。通过自动化超参数调整LightAD允许在日志异常检测模型之间进行公平比较从而使工程师能够评估复杂DL方法的适用性。 我们的研究结果为日志异常检测社区提供了一则警示强调在采用DL方法之前需要对数据集和研究任务进行批判性分析。提出计算成本昂贵模型的研究人员应该将他们的工作与轻量级算法进行基准测试以确保全面评估。 论文链接https://doi.org/10.1145/3597503.3623308 14、Deeply Reinforcing Android GUI Testing with Deep Reinforcement Learning 随着 Android 应用程序的规模和复杂性继续增长以满足市场和用户需求的增加质量保证挑战变得更加重要。尽管先前的研究已经证明了强化学习RL在 Android GUI 测试中的优越性但其有效性仍然受到限制特别是在大型、复杂的应用程序中。这种限制源自于表格 RL 在学习被测试应用程序AUT的大状态-动作空间内的知识时的无效性以及在使用更先进的 RL 技术时获得的知识的次优利用。为了解决这些限制本文提出了 DQT一种基于深度强化学习的新型自动化 Android GUI 测试方法。DQT 使用图嵌入技术保留了小部件的结构和语义信息为识别相似状态或动作以及区分不同状态或动作构建了坚实的基础。此外一个专门设计的深度 Q 网络DQN通过学习与 AUT 的运行时交互中的测试知识有效地引导由好奇心驱动的探索并在状态或动作之间共享这些知识。在 30 个不同的开源应用程序上进行的实验表明DQT 在代码覆盖和故障检测方面均优于现有的最先进的测试方法特别是对于大型、复杂的应用程序。DQT 检测到的故障已被重现并报告给开发人员到目前为止已明确确认了报告的问题中的 21 个并已修复了 14 个。 论文链接https://doi.org/10.1145/3597503.3623344 15、Demystifying Compiler Unstable Feature Usage and Impacts in the Rust Ecosystem Rust编程语言由于其安全性保证和出色性能在构建可靠和安全系统方面迅速地获得了人们的青睐。为了提供额外功能Rust编译器引入了Rust不稳定特性RUF来扩展编译器功能、语法和标准库支持。然而这些特征是不稳定的有可能被移除导致依赖包编译失败。更糟糕的是它们的影响会通过传递依赖关系传播引起整个生态系统的大规模失败。尽管RUF在Rust中被广泛使用但以往的研究主要集中在Rust代码安全方面对于Rust编译器中RUF的使用和影响却鲜有探讨。因此我们的目标是通过系统地分析Rust生态系统中RUF的使用和影响来弥合这一鸿沟。我们提出了一种提取RUF的新技术并通过准确解析包依赖关系来定量评估其在整个生态系统中的影响。我们已经分析了包含590,000个包版本和1.4亿个传递依赖关系的整个Rust生态系统。我们的研究显示Rust生态系统使用了1000种不同的RUF且最多44%的包版本受到RUF的影响导致最多12%的包版本编译失败。为了减轻RUF的广泛影响我们进一步设计和实现了一款RUF编译失败恢复工具可以恢复高达90%的失败情况。我们相信我们的技术、发现和工具可以帮助稳定Rust编译器最终提升Rust生态系统的安全性和可靠性。 论文链接https://doi.org/10.1145/3597503.3623352 16、Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Query Transformation 图数据库管理系统GDBMSs将图形作为数据存储。它们自然地应用于社交网络、推荐系统和程序分析等应用中。然而它们可能受到逻辑错误的影响导致GDBMSs计算出错误的结果进而影响依赖于它们的应用程序。在这项工作中我们提出了注射和满射图查询转换GQT来检测GDBMSs中的逻辑错误。给定查询Q我们推导出一个突变查询Q使得它们的结果集要么是i在语义上等效或者ii根据突变而形成其中一个是另一个的子集或超集。当结果之间期望的关系不成立时就会检测到GDBMSs中的逻辑错误。突变Q的关键见解在于图查询中的图模式允许从Q和Q之间的有向边集的注射和满射映射导出系统化的查询转换。我们在一个名为GraphGenie的工具中实现了注射和满射图查询转换GQT并在6个流行且成熟的GDBMSs上对其进行了评估。GraphGenie发现了25个未知的错误包括16个逻辑错误、3个内部错误和6个性能问题。我们的结果表明GraphGenie在检测GDBMSs中的逻辑错误方面具有实用性和有效性有助于提高依赖于这些GDBMSs的应用程序的可靠性。 论文链接https://doi.org/10.1145/3597503.3623307 17、Do Automatic Test Generation Tools Generate Flaky Tests? 非确定性测试行为或称为不稳定性在开发人员中是普遍且令人担忧的现象。研究人员已经研究了这个问题并提出了减轻其影响的方法。然而先前的绝大多数工作只考虑了开发人员编写的测试。测试生成工具产生的不稳定测试的普遍性和特性仍然大多数未知。我们探讨这些工具是否也会产生不稳定测试以及这些测试与开发人员编写的测试有何不同。此外我们评估了抑制不稳定测试生成的机制。我们对使用Java或Python编写的6,356个项目进行抽样。对于每个项目我们使用EvoSuiteJava和PynguinPython生成测试并执行每个测试200次以寻找不一致的结果。我们的结果显示生成的测试中不稳定性至少与开发人员编写的测试一样普遍。然而EvoSuite中已实施的现有不稳定性抑制机制在缓解这一问题方面是有效的减少71.7不稳定测试。与开发人员编写的不稳定测试相比生成的不稳定测试的原因分布不同。它们的非确定性行为更常由随机性引起而不是由网络和并发引起。使用不稳定性抑制剩余的不稳定测试与先前报告过的任何不稳定性均有显著差异其中大多数可归因于运行时优化和EvoSuite内部资源阈值。这些见解连同伴随的数据集可以帮助维护人员改进测试生成工具为使用这些工具的开发人员提供建议并为未来测试不稳定性或测试生成领域的研究奠定基础。 论文链接https://doi.org/10.1145/3597503.3608138 18、DocFlow: Extracting Taint Specifications from Software Documentation 安全从业者通常使用静态分析来检测安卓应用中的安全问题和隐私违规行为。这些分析的准确性取决于平台的建模方式和敏感方法列表。由于可用方法的数量众多安卓平台更新速度快谷歌在每个新版本上发布专有库因此收集这些方法通常变得不切实际。尽管安卓平台不断演化但应用开发者通过每个新版本附带的文档应对这些新功能。在这项工作中我们利用像安卓这样的平台提供的丰富文档提出了DocFlow一个从文档中直接生成平台污点规范的框架。DocFlow使用API方法的文档建模语义来检测敏感方法源和汇并为其分配语义标签。我们的方法不需要访问源代码可以分析无法获取代码的专有库。我们使用安卓平台包和封闭源谷歌Play服务库对DocFlow进行评估。我们的结果显示我们的框架以高精度检测敏感方法适应新的API版本并可以轻松扩展以检测其他方法类型。我们的方法证明了安卓文档编码了丰富的语义信息可以对敏感方法进行分类无需分析源代码或执行特征提取。 论文链接https://doi.org/10.1145/3597503.3623312 19、Domain Knowledge Matters: Improving Prompts with Fix Templates for Repairing Python Type Errors 作为一种动态编程语言Python在近年来变得越来越流行。虽然Python的动态类型系统有助于开发人员编写Python程序但也会在运行时引发类型错误这些错误虽然普遍存在但却不容易修复。目前存在基于规则的方法自动修复Python类型错误。这些方法可以为手动定义的模板覆盖的类型错误生成准确的修补程序但需要领域专家设计修补方案规则并且在真实世界类型错误的模板覆盖率较低。学习为基础的方法减轻了设计修补程序规则的手动工作由于深度学习的最新进展这些方法变得流行起来。在学习为基础的方法中基于提示的方法利用通过预定义提示的代码预训练模型的知识库在一般程序修复任务中获得了最先进的性能。然而这些提示是手动定义的没有涉及修复Python类型错误的任何特定线索因此效果有限。如何自动利用领域知识来改进提示以进行类型错误修复是具有挑战性且未被充分探讨的问题。 本文提出了TypeFix一种将修复模板结合到基于提示的方法中用于修复Python类型错误。TypeFix首先通过一种新颖的层次聚类算法挖掘广义的修复模板。确定的修复模板指示了现有类型错误修复的常见编辑模式和上下文。然后TypeFix通过采用广义修复模板作为领域知识为代码预先训练的模型生成代码提示在其中对于每个类型错误掩码是自适应位置而不是预先确定的。在包括BugsInPy和TypeBugs在内的两个基准上进行的实验表明TypeFix成功修复了26和55个类型错误分别优于最佳基线方法9和14个。此外提出的修复模板挖掘方法可以覆盖75%的开发人员在两个基准中的修补程序将最佳基于规则的方法PyTER提高超过30%。 论文链接https://doi.org/10.1145/3597503.3608132 20、ECFuzz: Effective Configuration Fuzzing for Large-Scale Systems 一个大规模系统包含了大量的配置空间这是因为它具有大量的配置参数。当探索配置空间时这导致了配置参数之间的组合爆炸。现有的配置测试技术首先使用模糊测试来生成不同的配置参数然后直接将它们注入到测试程序中以发现由配置引起的错误。然而它们没有充分考虑大规模系统的复杂性导致测试效果较低。在本文中我们提出了ECFuzz一个针对大规模系统的有效配置模糊器。我们的核心方法包括(i)多维配置生成策略。ECFuzz根据不同的依赖关系设计不同的变异策略并从候选配置参数中选择多个配置参数有效生成配置参数(ii)面向单元测试的配置验证策略。ECFuzz将单元测试引入配置测试技术中以在执行系统测试之前筛选出不太可能产生错误的配置参数并有效验证生成的配置参数。我们在包括HCommon、HDFS、HBase、ZooKeeper和Alluxio在内的现实世界大规模系统中进行了大量实验。我们的评估结果显示ECFuzz在发现由配置引起的崩溃错误方面是有效的。与包括ConfTest、ConfErr和ConfDiagDetector等最先进的配置测试工具相比当相同的1000个测试用例被注入系统时ECFuzz发现了60.3-67个更多的意外失败增加了1.87x-2.63x。此外ECFuzz还暴露了14个之前未知的错误其中5个已经被确认。 论文链接https://doi.org/10.1145/3597503.3623315 21、EDEFuzz: A Web API Fuzzer for Excessive Data Exposures API通常会向客户端应用程序传输比它们实际需要的数据多得多并且在Web应用程序环境下这些数据通常会通过公共渠道传输。这个问题被称为过度数据泄露EDE是OWASP在2019年排名第三的最重要的API漏洞。然而在研究或工业界中很少有自动化工具能够有效地发现和修复此类问题。这并不奇怪因为该问题缺乏明确的测试预言这种漏洞不会通过显式的异常行为例如程序崩溃或内存访问违规来表现出来。 在这项工作中我们开发了一种形态学关系来解决这一挑战并构建了第一个模糊测试工具——我们称之为EDEFuzz——来系统地检测EDE。EDEFuzz可以显著减少手动检查和临时文本匹配技术中发生的误报这是目前最常用的方法。 我们对来自Alexa Top-200的69个适用目标进行了EDEFuzz测试并发现了33,365个潜在的泄露情况说明了我们工具的广泛适用性和可扩展性。在澳大利亚八个热门网站的更为严格控制的实验中EDEFuzz以最小配置实现了高达98.65%的真实阳性率展示了我们工具的准确性和效率。 论文链接https://doi.org/10.1145/3597503.3608133 22、EGFE: End-to-end Grouping of Fragmented Elements in UI Designs with Multimodal Learning 在工业界将UI设计原型转化为代码时从设计原型自动生成代码可以加快应用开发和GUI迭代的速度。然而在没有严格设计规范的设计原型中UI组件可能由碎片化元素组成。将这些碎片化元素进行分组可以极大提高生成代码的可读性和可维护性。当前的方法采用两阶段策略引入手工制作的规则来对碎片化元素进行分组。然而由于视觉重叠和微小的UI元素这些方法的性能并不令人满意。在本研究中我们提出了一种名为EGFE的新方法通过UI序列预测自动进行端到端分组碎片化元素。为了便于UI理解我们创新地构建了一个Transformer编码器来建模UI元素之间的关系并采用多模态表示学习。对来自专业UI设计师的4606个UI原型数据集的评估表明我们的方法在编辑距离阈值为4时在精确度提高了29.75%、召回率提高了31.07%和F1分数提高了30.39%方面优于最先进的基线方法。此外我们进行了一项实证研究来评估生成的前端代码的改进情况。结果表明我们的方法在实际软件工程应用中具有有效性。我们的端到端碎片化元素分组方法为改进与UI相关的软件工程任务创造了机会。 论文链接https://doi.org/10.1145/3597503.3623313 23、Enabling Runtime Verification of Causal Discovery Algorithms with Automated Conditional Independence Reasoning 因果发现是一种用于在数据中识别变量之间因果关系的强大技术。它已在软件工程的各种应用中得到广泛应用。因果发现广泛涉及条件独立性CI测试。因此其输出质量高度依赖于CI测试的性能而实际中这些测试往往不可靠。此外当进行过多的CI测试时会引发隐私问题。 尽管不可靠和过多的CI测试之间的性质不同本文确定了一种统一而基本的方法来解决这两个问题。一般来说CI语句即CI测试的输出遵循Pearl的公理这是有关条件独立性的一组既定完整性约束条件。因此我们可以通过检测违反Pearl公理的CI语句来识别错误的CI语句或者通过检测逻辑地包含在Pearl公理中的过多CI语句来修剪它们。综合地看这两个问题都归结为在Pearl公理下推理CI语句的一致性问题称为CIR问题。 我们提出了一种名为CICheck的运行时验证工具旨在从可靠性和隐私的角度加强因果发现算法。CICheck采用一种经过验证和可判定的编码方案将CIR转化为SMT问题。为了高效解决CIR问题CICheck引入了一个四阶段决策过程并通过三种轻量级优化主动证明或反驳一致性并只在必要时采用昂贵的基于SMT的推理。基于对CIR的决策过程CICheck包括两个变体ED-Check和P-Check分别用于检测错误的CI测试以增强可靠性和修剪过多的CI测试以增强隐私性。我们在四个真实数据集和100个CIR实例上对CICheck进行了评估结果表明它在检测错误的CI测试和减少过多的CI测试的有效性的同时保持了实用性能。 论文链接https://doi.org/10.1145/3597503.3623348 24、Exploring the Potential of ChatGPT in Automated Code Refinement: An Empirical Study 代码审查是确保软件项目质量和可维护性的关键活动。然而这是一项耗时且常常存在错误的任务可能会对开发过程产生重大影响。最近最先进的语言模型ChatGPT在各种自然语言处理任务中展现出令人印象深刻的性能表明它有潜力自动化代码审查流程。然而目前尚不清楚ChatGPT在代码审查任务中的表现如何。为了填补这一空白本文开展了第一项实证研究以了解ChatGPT在代码审查任务中的能力重点关注基于给定代码审查的自动化代码修正。为了进行该研究我们选择现有的基准数据集CodeReview并构建了一个质量高的新代码审查数据集。我们将CodeReviewer作为比较基线与ChatGPT进行对比。我们的研究结果显示ChatGPT在代码修正任务中表现优于CodeReviewer。具体来说我们的结果显示ChatGPT分别实现了更高的EM和BLEU分数分别为22.78和76.44而最先进的方法在高质量代码审查数据集上仅实现了15.50和62.88。我们进一步确定了ChatGPT表现不佳的根本原因并提出了几种缓解这些挑战的策略。我们的研究为ChatGPT在自动化代码审查过程中的潜力提供了见解并强调了潜在的研究方向。 论文链接https://doi.org/10.1145/3597503.3623306 25、FAIR: Flow Type-Aware Pre-Training of Compiler Intermediate Representations 尽管大多数现有的从代码学习源代码特征的预训练模型如代码标记和抽象语法树但也有一些工作集中在从编译器中间表示IR中学习。现有的基于IR的模型通常利用诸如指令、控制和数据流图CDFGs、调用图等IR特征。然而这些方法混淆了CDFG中的变量节点和指令节点并未区分不同类型的流而它们使用的神经网络无法捕捉远距离依赖关系并存在过度平滑和过度压缩的问题。为了解决这些弱点我们提出了FAIR一种针对IR的流类型感知预训练模型涉及采用(1) IR程序的新型输入表示(2) 图形变换器来解决过度平滑、过度压缩和长依赖问题和(3) 我们专门提出的五项预训练任务使FAIR能够学习IR标记的语义、流类型信息和整体IR表示。实验结果表明FAIR在四个与代码相关的下游任务上均能达到最先进的结果。 论文链接https://doi.org/10.1145/3597503.3608136 26、Fine-SE: Integrating Semantic Features and Expert Features for Software Effort Estimation 可靠的工作量估算对软件规划和管理至关重要特别是在需要有效和准时交付的行业中。尽管已经提出了各种估算方法例如规划扑克和类比但它们可能是手动的和/或主观的难以应用于其他项目。近年来依赖于学习专家特征或语义特征的工作量估算深度学习方法得到了广泛研究并被发现具有潜力。语义特征和专家特征分别从不同角度描述软件任务然而在文献中这两种特征的最佳组合尚未被探索以增强工作量估算。此外有一些研究讨论了在工业中估算工作量时哪些专家特征是有用的。为了实现这一目标我们通过对26名企业员工进行访谈调查了可用于估算工作量的潜在13个专家特征。基于此我们提出了一种新颖的模型称为Fine-SE利用语义特征和专家特征进行工作量估算。为了验证我们的模型在全球信息和通信技术企业的17个工业项目和四个开源软件项目中对超过30,000个软件任务进行了一系列评估。评估结果表明Fine-SE在评估指标即平均绝对误差、相对误差的平均幅度和性能指标上提供比基线更高的性能特别是在具有大量软件任务的工业项目中这意味着工作量估算有了显著改善。与专家估算相比Fine-SE在项目内估算中提高了32.0%-45.2%的评估指标。与最先进的模型Deep-SE和GPT2SP相比它在工业项目中也实现了8.9%-91.4%的提高。实验结果揭示了在工作量估算中集成专家特征和语义特征的价值。 论文链接https://doi.org/10.1145/3597503.3623349 27、FuzzSlice: Pruning False Positives in Static Analysis Warnings through Function-Level Fuzzing 手动确认静态分析报告是一项艰巨的任务。这是由于警告数量庞大其中虚警的密度也很高。已经提出了模糊测试技术来验证静态分析警告。然而一个主要的限制是对整个项目进行模糊测试以达到所有静态分析警告是不可行的。这可能需要几天时间和指数级的机器时间才能线性增加代码覆盖率。 因此我们提出了FuzzSlice这是一个新颖的框架可以自动剪枝静态分析警告中的可能虚警。与以前主要专注于确认静态分析警告中的真阳性的工作不同这不可避免地需要端到端的模糊测试FuzzSlice专注于排除潜在的虚警这在静态分析报告中占大多数。我们工作的关键见解是在给定的时间预算内在函数级别进行模糊测试时不会导致崩溃的警告可能是虚警。为了实现这一点FuzzSlice首先旨在在函数级别生成可编译的代码片段。然后FuzzSlice对这些代码片段进行模糊测试而不是对整个二进制文件以剪除可能的虚警。FuzzSlice也不太可能将真实漏洞错误地分类为虚警因为在函数级别模糊测试工具也可以重现导致崩溃的输入。我们在Juliet综合数据集和真实世界复杂的C项目上评估了FuzzSliceopenssl、tmux和openssh-portable。我们的评估显示Juliet数据集中有864个虚警这些虚警都被FuzzSlice检测到。对于开源软件库我们能够让两个开源软件库的开发人员独立标记这些警告。FuzzSlice自动识别了这两个库中开发人员确认的53个虚警中的33个。这意味着FuzzSlice可以在开源软件库中将虚警数量减少62.26%在Juliet数据集中减少100%。 论文链接https://doi.org/10.1145/3597503.3623321 28、How do Developers Talk about GitHub Actions? Evidence from Online Software Development Community 持续集成、部署和交付CI/CD已经成为DevOps实践的基石。最近几年GitHub ActionGHA迅速取代了GitHub上的传统CI/CD工具为开发人员提供了高效自动化的工作流程。随着GHA的广泛应用和影响力了解GHA开发人员在实践中面临的现有问题以及这些问题的潜在解决方案至关重要。不幸的是目前我们在这个领域的知识相对较少。为了填补这一空白我们进行了一项规模庞大的实证研究涵盖了6590个Stack OverflowSO问题和315个GitHub问题。我们的研究得出了与GHA相关问题的首个全面分类法涵盖了4个类别和16个子类别。然后我们分析了问题类别的受欢迎程度和困难程度以及它们之间的相关性。此外我们总结了针对不同GHA问题的56种解决策略。我们还从不同受众的角度提炼了我们发现的实际启示。我们相信我们的研究对新兴的GHA实践的研究做出了贡献并指导了未来工具和技术的支持。 论文链接https://doi.org/10.1145/3597503.3623327 29、How to Support ML End-User Programmers through a Conversational Agent 机器学习ML在最终用户程序员EUP应用中正日益受到重视。然而没有正确背景知识的机器学习最终用户程序员ML-EUP面临陡峭的学习曲线以及在建模过程中出现错误和缺陷的风险增加。在这项工作中我们设计了一个名为“牛顿”的对话代理作为专家来支持ML-EUP。牛顿的设计是通过对现有文献的全面审查进行的从中我们确定了ML-EUP面临的六个主要挑战以及五种辅助策略。为了评估牛顿设计的有效性我们进行了一项带主观特征的“奥兹巫术”研究参与者为12位ML-EUP。我们的研究结果表明牛顿有效地帮助了ML-EUP解决了文献中所强调的挑战。我们还提出了六项未来对话代理的设计指南这可以帮助其他EUP应用程序和软件工程活动。 论文链接https://doi.org/10.1145/3597503.3608130 30、ITER: Iterative Neural Repair for Multi-Location Patches 自动程序修复APR在使用神经网络的情况下取得了令人期待的结果。然而大多数由APR工具生成的补丁仅限于一个单一位置。观察使用神经修复生成的补丁时大部分补丁无法编译而少数无法编译的补丁则朝着正确的方向发展。在这两种情况下基本问题是忽视了局部补丁的潜力。在本文中我们提出了一种基于改进局部补丁直至它们变得合理和正确的迭代程序修复范例称为ITER。首先ITER通过修复编译错误和进一步细化先前生成的代码通过迭代改善局部单一位置的补丁。其次ITER通过故障定位重新执行通过迭代改善局部补丁以构建多位置补丁。ITER基于经过验证的深度神经网络和代码表示为Java实现。ITER在Defects4J 2.0中的10个开源项目中的476个缺陷上进行评估。ITER成功修复了其中的15.5包括9个独特修复的多位置错误。 论文链接https://doi.org/10.1145/3597503.3623337 31、Improving Testing Behavior by Gamifying IntelliJ 测试是软件开发中重要的方面但不幸的是它经常被忽视。尽管测试质量分析如代码覆盖率或变异分析可以告知开发人员他们测试的质量但这些报告只在持续集成或代码审查期间偶尔被查看如果有的话对开发人员的测试行为的影响往往微乎其微。为了实际影响开发人员的行为可能需要直接在他们编程环境中激励开发人员。我们介绍了IntelliGame这是一个为流行的IntelliJ Java集成开发环境提供的游戏化插件通过多级成就系统奖励开发人员积极的测试行为共有27个不同的成就每个成就都有不同的级别当开发人员展示出值得称赞的测试行为时提供肯定的反馈并激励他们进一步继续和改进这种行为。一项对49名参与者进行的Java编程任务的控制实验显示了IntelliGame引发的测试行为的显著差异受激励的开发人员编写更多的测试获得更高的覆盖率和变异分数更经常地运行他们的测试并更早实现功能。 论文链接https://doi.org/10.1145/3597503.3623339 32、Inferring Data Preconditions from Deep Learning Models for Trustworthy Prediction in Deployment 深度学习模型在开发阶段通过对数据的某些假设进行训练然后在部署阶段用于预测。在部署期间理解模型对未知数据的预测结果的可信度非常重要。现有的用于规定和验证传统软件的方法对于这项任务是不足够的因为它们无法处理深度神经网络模型架构和预期结果的复杂性。在这项工作中我们提出了一种新颖的技术该技术利用从神经网络计算中得出的规则来推断深度神经网络模型的数据前提条件以确定其预测结果的可信度。我们的方法DeepInfer引入了一种新颖的训练后DNN模型抽象利用Dijkstra的谓词变换语义进行最弱前置条件推理。通过对神经网络抽象表示的归纳类型推导规则我们可以克服由从输出层向输入层的反向非线性计算而引起的矩阵维度问题。我们利用每种激活函数的规则进行最弱前提条件计算以从深度神经网络的最终输出的给定后置条件计算每层的前提条件。我们在来自五个不同来源的四个不同数据集上广泛评估了DeepInfer在29个现实世界DNN模型上的效果并展示了其与密切相关工作相比的效用性、有效性和性能改进。DeepInfer有效地检测到高准确度模型的正确和错误预测具有很高的召回率0.98和高的F-1得分0.84并且相对于先前的技术SelfChecker有了显著的改进。DeepInfer的平均运行时开销很低对于所有未知数据集只有0.22秒。我们还使用相同的硬件设置比较了运行时开销并发现DeepInfer比SelfChecker快3.27倍是该领域的最新技术。 论文链接https://doi.org/10.1145/3597503.3623333 33、Its Not a Feature, Its a Bug: Fault-Tolerant Model Mining from Noisy Data 数据挖掘模型在工业中得到广泛应用。存在各种模型推断方法适用于完全确定的行为然而在实际应用中由于诸如消息丢失或环境因素等故障导致的数据中往往包含噪声许多推理算法在处理这些问题时存在困难。我们提出了一种新颖的模型挖掘方法使用部分最大可满足性Partial Max-SAT求解来推断一组带有噪声的执行轨迹中最佳可能的自动机。这种方法使我们能够忽略最小数量的可能有误的观察结果以便构建确定性自动机。不需要对数据进行预处理。评估了该方法的性能以及一些实际应用方面的考虑包括三个工业用例我们从中推断出正确的模型。 论文链接https://doi.org/10.1145/3597503.3623346 34、Kind Controllers and Fast Heuristics for Non-Well-Separated GR(1) Specifications 非良好分离NWS是反应合成规范中已知的质量问题。NWS的问题发生在合成系统可以通过阻止环境无法满足其假设来避免满足其保证的情况下。 在这项工作中我们提出了两个方面的贡献以更好地处理NWS。首先我们展示了如何合成系统以避免利用NWS即不阻止任何环境假设的满足即使可能。其次我们提出了一组用于快速检测NWS的启发式方法。从文献中的基准测试结果显示了我们工作的有效性和重要性。 论文链接https://doi.org/10.1145/3597503.3608131 35、KnowLog: Knowledge Enhanced Pre-trained Language Model for Log Understanding 作为半结构化文本日志富含语义信息对于自动化日志分析而言全面理解日志至关重要。随着预训练语言模型在自然语言处理领域取得的成功许多研究已利用这些模型来理解日志。尽管取得了成功现有的预训练语言模型仍然存在三个弱点。首先这些模型无法理解领域特定术语尤其是缩写词。其次这些模型难以充分捕捉完整的日志上下文信息。第三这些模型难以获取不同风格日志的通用表示。为了解决这些挑战我们引入 KnowLog一个用于日志理解的知识增强预训练语言模型。具体而言为解决前两个挑战我们利用来自公共文档的日志缩写和自然语言描述作为本地和全局知识并通过设计新颖的预训练任务来利用这些知识以增强模型。为解决最后一个挑战我们设计了基于对比学习的预训练任务以获得通用表示。我们通过在六项不同的日志理解任务上微调 KnowLog 来评估其性能。大量实验证明相较于没有知识增强的现有预训练语言模型KnowLog 显著增强了日志理解并取得了最新的成果。此外在迁移学习和低资源场景下我们还进行了额外实验展示了 KnowLog 的重大优势。我们的源代码和详细实验数据可在 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 深度学习DL库中的漏洞可能影响几乎所有下游DL应用程序的运行因此确保这类系统的质量至关重要。为模糊DL库生成有效的输入程序具有挑战性因为这些输入程序需要同时满足受支持语言例如Python的语法/语义要求以及构建有效计算图的张量/运算器约束。最近TitanFuzz的工作表明现代大型语言模型LLMs可以被直接利用来隐式学习所有语言和DL计算约束以生成有效的程序用于模糊DL库及其他用途。然而LLMs往往生成遵循与其庞大预训练语料库如GitHub中典型程序相似模式/标记的普通程序而模糊更倾向于覆盖边缘情况或不太可能手动生成的异常输入。 为填补这一空白本文提出了FuzzGPT这是首个用于引导LLMs合成用于模糊的异常程序的方法。FuzzGPT主要建立在一个众所周知的假设之上即历史上触发错误的程序可能包含对发现错误至关重要的稀有/有价值的代码元素。同时传统技术利用此类历史信息需要大量人力投入既要设计专用生成器又要确保生成程序的语法/语义有效性。FuzzGPT证明了通过LLMs的内在能力包括微调和上下文学习这一过程可以完全自动化同时具有通用性适用于具有挑战性的领域。虽然FuzzGPT可以与不同的LLMs一起使用但本文专注于功能强大的GPT风格模型Codex和CodeGen。此外FuzzGPT还展示了直接利用最近ChatGPT的指令遵循能力进行有效模糊的潜力。对PyTorch和TensorFlow这两个流行的DL库的实验研究表明FuzzGPT可以显著优于TitanFuzz检测到76个漏洞其中49个已经被确认为先前未知的漏洞包括11个高优先级的错误或安全漏洞。 论文链接https://doi.org/10.1145/3597503.3623343 37、Large Language Models are Few-Shot Summarizers: Multi-Intent Comment Generation via In-Context Learning 代码注释生成旨在为代码片段生成自然语言描述以促进开发人员的程序理解活动。尽管经过长时间的研究现有方法的一个瓶颈是给定一个代码片段它们只能生成一个注释而开发人员通常需要了解来自不同角度的信息例如这个代码段的功能是什么如何使用它。为了解决这一局限性本研究在实证上探讨了利用大型语言模型LLM生成可以满足开发人员多样意图的注释的可行性。我们的直觉基于以下事实1代码及其成对的注释在LLM的预训练过程中被使用以建立自然语言和编程语言之间的语义连接以及2在真实项目中收集用于预训练的注释通常包含不同开发人员的意图。因此我们假设LLM在预训练后已经能够从不同角度理解代码。实际上在两个大型数据集上进行的实验证明了我们洞见的合理性通过采用上下文学习范式并为LLM提供充分的提示例如提供十个或更多的示例LLM可以显著优于最先进的监督学习方法在生成具有多重意图的注释上。结果还显示为构建提示设计定制化策略和对结果重新排名的后处理策略均可以提高LLM的性能这为利用LLM实现注释生成指明了未来研究方向。 论文链接https://doi.org/10.1145/3597503.3608134 38、Large Language Models for Test-Free Fault Localization 故障定位FL旨在自动定位有错误的代码行这是许多手动和自动调试任务的关键第一步。先前的FL技术假定提供输入测试并且通常需要进行广泛的程序分析、程序仪器化或数据预处理。先前有关用于APR的深度学习的工作难以从小数据集中学习并且在实际程序上产生有限的结果。受到代码的大型语言模型LLMs能够根据极少的示例适应新任务的能力的启发我们研究了将LLMs应用于行级别故障定位的可行性。具体来说我们建议通过在LLMs学习的表示之上微调一小组双向适配器层来克服LLMs的从左到右的性质以生成LLMAO这是第一个基于语言模型的故障定位方法可以在没有任何测试覆盖信息的情况下定位有错误的代码行。我们使用3.5亿、60亿和160亿参数微调LLMs应用于手动筛选的小型buggy程序语料库如Defects4J语料库。我们观察到当基于较大模型构建时我们的技术在故障定位方面获得了更高的信心随着LLM大小的增加bug定位性能持续提升。我们的实证评估显示LLMAO相对于现有的基于机器学习的故障定位MLFL基线将Top-1结果提高了2.3%至54.4%Top-5结果提高了14.4%至35.6%。LLMAO还是第一个使用语言模型架构训练的FL技术可以检测到代码行级别的安全漏洞。 论文链接https://doi.org/10.1145/3597503.3623342 39、Learning and Repair of Deep Reinforcement Learning Policies from Fuzz-Testing Data 基于演示的强化学习RLfD是一种有前途的方法通过从专家演示中学习以及与环境的交互来改善强化学习RL的探索效率。在本文中我们提出了一个框架将基于搜索的测试技术与RLfD相结合旨在提高RL策略的可靠性水平并减少人工工程工作量。在我们的框架内我们提供了有效训练、评估和修复RL策略的方法。我们不依赖于从人类专家收集昂贵的演示而是通过基于搜索的模糊化方法自动计算多样化的演示集并将这些模糊演示用于RLfD。为了评估训练后的RL代理的安全性和稳健性我们在黑盒环境中搜索安全关键场景。最后当检测到不安全的行为时我们通过模糊化测试计算代表安全行为的演示并用它们来修复策略。我们的实验表明我们的框架能够在不需要任何专家知识的情况下有效地学习表现出色且安全的策略。 论文链接https://doi.org/10.1145/3597503.3623311 40、Learning-based Widget Matching for Migrating GUI Test Cases GUI测试用例迁移是将GUI测试用例从源应用迁移到目标应用的过程。测试用例迁移的关键是小部件匹配。近年来研究人员通过将小部件匹配建模为一个匹配任务提出了各种方法。然而由于这些匹配方法依赖于静态词嵌入没有利用上下文信息来表示小部件并且需要手动制定匹配函数这在处理应用程序中复杂匹配关系时存在主要限制。为了解决这些限制我们提出了第一个基于学习的小部件匹配方法称为TEMdroid测试迁移。与现有方法不同TEMdroid使用BERT来捕获上下文信息并学习一个匹配模型来匹配小部件。此外为了平衡应用程序中正负样本之间的明显不平衡我们设计了一个两阶段训练策略首先训练一个硬负样本挖掘器来挖掘硬负样本然后使用正样本和挖掘的硬负样本进一步训练匹配模型。我们对34个应用程序的评估显示TEMdroid在事件匹配即小部件匹配和目标事件综合和测试用例迁移中效果显著。在事件匹配方面TEMdroid的Top1准确率为76%相比基线提高了17%。对于测试用例迁移TEMdroid的F1得分为89%与基线方法相比也提高了7%。 论文链接https://doi.org/10.1145/3597503.3623322 41、LibvDiff: Library Version Difference Guided OSS Version Identification in Binaries 开源软件OSS已被广泛应用于加快软件开发进程但不可避免地使下游软件面临潜在漏洞的危险。准确识别OSS的版本不仅有助于检测与之相关的漏洞还能够在1天漏洞发布时及时发出警报。然而当前用于识别OSS版本的方法主要依赖于版本字符串或常量特征这些特征在已编译的OSS二进制文件中可能不存在或者当只有函数代码发生更改时可能不具代表性。因此这些方法通常在识别正在使用的OSS二进制文件的版本时不够准确。 为此我们提出了LibvDiff一种用于识别开源软件版本的新方法。它通过精确的符号信息和函数级代码变化利用二进制代码相似性检测来检测细微差异。LibvDiff引入了基于新颖版本坐标系统的候选版本过滤器通过量化版本之间的差距并快速识别潜在版本来提高效率。为了加快代码相似性检测过程LibvDiff提出了一个基于函数调用的锚定路径过滤器以最小化目标二进制文件中要比较的函数数量。我们通过在各种编译设置和两个数据集一个包含版本字符串另一个不包含版本字符串下进行全面实验来评估LibvDiff的性能结果显示我们的方法在两个数据集中分别达到94.5%和78.7%的精度优于现有的学术方法和行业工具包括学术方法和行业工具平均分别提高了54.2%和160.3%。通过识别和分析真实世界固件图像中的OSS二进制文件我们发现了一些有趣的发现例如开发人员在更新不同的OSS时存在重大差异不同的供应商也可能使用相同的OSS二进制文件。 论文链接https://doi.org/10.1145/3597503.3623336 42、LogShrink: Effective Log Compression by Leveraging Commonality and Variability of Log Data 日志数据是记录系统事件和状态的关键资源用于系统执行期间。然而随着系统规模的增长日志数据生成变得愈发爆炸导致日志存储成本昂贵例如生产环境中每天几百TB的存储开销。为了解决这一问题日志压缩已成为减少磁盘存储并允许进一步日志分析的关键任务。然而现有的通用和特定于日志的压缩方法在利用日志数据特性方面受到限制。为了克服这些限制我们进行了一项实证研究并得出了关于促进日志压缩任务的日志数据特性的三个主要观察结果。 基于这些观察结果我们提出了LogShrink一种通过利用日志数据的共性和变化性而出色的日志压缩方法。提出了一个基于最长公共子序列和熵技术的分析器用于确定日志消息中的潜在共性和变化性。这背后的关键思想是共性和变化性可以被利用来用更短的表示方式来压缩日志数据。此外介绍了基于聚类的序列采样器以加快共性和变化性分析器的速度。广泛的实验结果表明LogShrink在压缩比率上可以超过基线平均提高16%至356%同时保持合理的压缩速度。 论文链接https://doi.org/10.1145/3597503.3608129 43、Marco: A Stochastic Asynchronous Concolic Explorer 混合符号执行是一种强大的程序分析技术用于代码路径探索。尽管最近取得了极大进展大大提高了混合符号执行引擎的效率但路径约束求解仍然是混合符号测试的一个主要瓶颈。对于输入/分支的智能调度变得更加关键。我们的研究表明先前未经研究的最新混合符号执行引擎所采用的分支翻转策略存在一些局限性。我们建议通过全局视角评估每个分支的潜力考虑每个分支处的路径分歧概率来验证这一想法。为了验证这一想法我们实现了一个原型Marco并对来自Google的Fuzzbench、Binutils和UniBench的30个现实世界程序进行了评估。结果表明Marco能够超越基线方法并在基线方法终止后持续取得进展。 论文链接https://doi.org/10.1145/3597503.3623301 44、Modularizing while Training: A New Paradigm for Modularizing DNN Models 深度神经网络DNN模型已经成为智能软件系统中越来越关键的组成部分。然而训练一个DNN模型通常耗时且需要大量的计算资源。为了解决这个问题最近的研究集中在重复使用现有的DNN模型上 - 借鉴软件工程中的软件重用概念。然而重复使用整个模型可能会导致额外的开销或继承不需要功能的弱点。因此现有的工作提出将已经训练好的模型分解成模块并在此基础上实现模块的重复使用。由于训练模型并非为模块化而构建因此在训练后进行模块化可能会导致巨大的开销和模型准确性下降。在本文中我们提出了一种新颖的方法将模块化纳入到模型训练过程中即在训练过程中模块化MwT。我们通过两个损失函数训练一个具有结构化模块的模型以优化模块内的内聚性和模块间的耦合性。我们已经实现了用于模块化卷积神经网络CNN模型的这种方法。对代表性模型的评估结果显示MwT优于现有的最先进的训练后模块化方法。具体来说MwT造成的准确性损失只有1.13个百分点低于现有方法的准确性损失。MwT生成的模块的核保留率仅为14.58%相比现有方法减少了74.31%。此外训练和模块化所需的总时间成本仅为108分钟仅为现有方法所需时间的一半。我们的工作表明MwT是实现DNN模型模块化的一种新颖且更有效的范式为实现模型重用提供了一种新的视角。 论文链接https://doi.org/10.1145/3597503.3608135 45、Novelty Begets Popularity, But Curbs Participation - A Macroscopic View of the Python Open-Source Ecosystem 谁创造了最具创新性的开源软件项目这些项目往往会有什么命运在建立在长期研究商业和其他领域创新的基础上以及最近在科学研究领域科学的创新建模方面的进展的基础上本文采用创新的类比将其视为从现有知识的新组合中产生。因此我们认为那些以新颖方式重新组合现有软件库的软件项目是创新的即那些基于从导入语句中提取的不寻常组合的软件包构建的项目。然后我们报告了对Python开源软件生态系统中创新的大规模定量研究。我们的结果表明更高水平的创新性在统计上与更高的GitHub星标数量相关即新颖性带来了受欢迎程度。与此同时我们发现在控制项目规模的情况下更具创新性的项目往往涉及较小的贡献者团队并且有更高的风险在长期内被放弃。我们得出结论创新和开源可持续性密切相关并在某种程度上是对立的。 论文链接https://doi.org/10.1145/3597503.3608142 46、NuzzleBug: Debugging Block-Based Programs in Scratch 虽然专业的集成式编程环境为开发人员提供先进的调试功能但面向年轻学习者的基于块的编程环境通常根本不提供调试支持从而抑制了调试并阻止了调试教育的进行。本文介绍了NuzzleBug这是流行的基于块的编程环境Scratch的一个扩展它提供了缺失的调试支持。NuzzleBug可以通过经典调试功能如单步执行和断点来控制Scratch程序的执行它是一款全知调试器还可以进行反向执行。为了帮助学习者得出引导调试的假设NuzzleBug是一款询问式调试器它可以询问关于执行的问题并提供解释所询问行为的答案。为了评估NuzzleBug我们调查了教师的意见并研究了对学习者在调试效果和效率方面的影响。我们发现教师认为NuzzleBug是有用的并且孩子们可以有效地使用它来调试有问题的程序。然而系统性调试需要专门的培训即使NuzzleBug能提供正确答案学习者可能仍需要进一步帮助理解故障和必要的修复措施因此需要进一步研究改进调试技术及其提供的信息。 论文链接https://doi.org/10.1145/3597503.3623331 47、Object Graph Programming 我们介绍了对象图编程OGO它可以通过声明性查询读取和修改对象图即对象堆的整个状态。OGO将堆中的对象及其关系建模为对象图因此将堆视为图数据库图中的每个节点都是一个对象例如一个类的实例或元数据类的实例每个边都是对象之间的关系例如一个对象的字段引用另一个对象。我们利用Cypher即图数据库最流行的查询语言作为OGO的查询语言。与使用集合例如List作为数据源的LINQ不同OGO将整个对象图视为单个“集合”。OGO非常适合用于查询集合就像LINQ一样内省运行时系统状态例如查找给定类的所有实例或通过反射访问字段以及编写访问整个程序状态的断言。我们分别在Java中使用两种方式为OGO制作了原型a将对象图转换为Neo4j数据库然后运行Cypher查询和b通过实现我们自己的内存图查询引擎直接查询对象堆。我们使用OGO将大型开源项目中的数百个语句重写为OGO查询。我们报告了我们的原型的使用经验和性能。 论文链接https://doi.org/10.1145/3597503.3623319 48、On Using GUI Interaction Data to Improve Text Retrieval-based Bug Localization 管理缺陷报告的最重要任务之一是定位故障以便应用修复。因此先前的研究旨在将这个缺陷定位任务自动化将其构建为一个信息检索问题根据与给定缺陷报告的文本相似性检索和排名潜在有缺陷的文件。然而在缺陷报告中包含的信息与源代码文件中的标识符或自然语言之间通常存在显着的语义鸿沟。对于面向用户的软件目前存在一个关键信息源可以帮助定位缺陷但尚未得到深入研究 - 来自图形用户界面GUI的信息。 本文研究了这样一个假设即对于面向最终用户的应用程序将缺陷报告中的信息与GUI中的信息相连接并利用这一点来帮助检索潜在有缺陷的文件可以改进基于文本检索的缺陷定位现有技术。为了研究这种现象我们进行了一项全面的实证研究通过从重现场景中提取GUI交互信息以增强四种基线文本检索技术用于缺陷定位以i筛选出可能无关紧要的文件ii 强化可能相关的文件以及iii重构文本检索查询。为了执行我们的研究我们从包括80个来自39个流行开源应用程序的缺陷报告在内的安卓应用实际错误的当前最大数据集中获取了完全本地化和可重现的真实错误。我们的结果表明利用GUI信息增强传统技术可显着提高多个指标的有效性包括在Hits10上相对增加了13-18。此外通过进一步分析我们发现我们研究的增强技术主要是与现有技术互补的将其他有缺陷的文件推入前10个结果同时通常保留来自基线技术的排名靠前的文件。 论文链接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 软件开发人员大部分时间都花在寻找与编码任务相关的问题的答案上。为了回答他们的问题开发人员通常进行网络搜索在问答网站上提问或者最近在聊天社区中提问。然而许多这些问题在先前的聊天对话或其他在线社区中已经有了答案。自动识别并向提问者建议这些先前的答案可以节省时间和精力。在经验分析中我们首先探讨了Discord聊天平台上重复问题的频率并评估了我们自动识别这些问题的方法。然后通过一个领域实验我们与真实世界的开发人员评估了这一方法通过这一实验我们得到了142个关于我们提供的建议对于帮助回答四个Discord社区中开发人员发布的277个问题的实用性的评价。我们还通过53份调查和10次追加访谈收集了定性反馈。我们发现在40%的情况下这些建议被认为是有帮助的建议Stack Overflow帖子更常被认为是有帮助的而过去的Discord对话开发人员难以将问题描述为搜索查询因此更倾向于将问题描述为在线社区中的自然语言问题。 论文链接https://doi.org/10.1145/3597503.3623341 50、PonziGuard: Detecting Ponzi Schemes on Ethereum with Contract Runtime Behavior Graph (CRBG) 在近年来发现以太坊智能合约中存在庞氏骗局这种骗局形式导致了巨大的财务损失。基于规则的检测方法依赖于预定义规则具有有限的功能和领域知识依赖性。此外使用类似操作码和交易的静态信息用于机器学习模型无法有效描述庞氏合约导致可靠性和可解释性较差。 在本文中我们提出了PonziGuard一种基于合约运行时行为的高效庞氏骗局检测方法。受到的启发观察表明合约的运行时行为更有效地掩盖了庞氏合约和无辜合约之间的区别PonziGuard建立了一种全面的图形表示称为合约运行时行为图CRBG准确描绘了庞氏合约的行为。此外它将检测过程形式化为图分类任务增强了其整体效果。我们对一个地面真实数据集进行了比较实验并将PonziGuard应用于以太坊主网。结果显示PonziGuard胜过当前的最先进方法并且在开放环境中也很有效。使用PonziGuard我们已经在以太坊主网上识别出了805个庞氏合约导致了约281,700以太或大约5亿美元的经济损失。 论文链接https://doi.org/10.1145/3597503.3623318 51、Practical Program Repair via Preference-based Ensemble Strategy 到目前为止已经设计了超过40种自动程序修复APR工具具有不同的错误修复策略已经证明在有效修复不同类型错误方面具有互补性能。直觉上通过组装现有工具应该可以提高APR的整体错误修复性能。不幸的是仅仅调用所有可用的APR工具修复一个特定的错误可能会导致在APR执行以及补丁验证通过昂贵的测试方面产生无法接受的成本。因此虽然组装现有工具具有吸引力但需要一个有效的策略来协调修复更多错误的需求和实用性的要求。鉴于这个问题我们提出了一种基于偏好的集成程序修复框架P-EPR旨在有效排名修复不同错误的APR工具。P-EPR是第一种非学习型的APR集成方法其利用修复模式作为排名APR工具的主要知识来源并依赖于动态更新策略使其能够立即利用和从新获得的修复结果中获益。实验结果表明P-EPR在灵活性和效果方面显著优于现有策略。 论文链接https://doi.org/10.1145/3597503.3623310 52、Predicting Performance and Accuracy of Mixed-Precision Programs for Precision Tuning 混合精度程序是一个使用不同精度进行不同操作的浮点程序这为平衡精度和性能之间的权衡提供了机会。精度调优旨在找到一个改善性能并保持给定精度的程序的混合精度版本。不幸的是现有的精度调优方法要么局限于小规模程序要么存在效率问题。在本文中我们提出了一种新方法FPLearner该方法解决了这些限制。我们的见解是利用基于机器学习的技术图神经网络来学习混合精度程序的表示以预测它们的性能和精度。这种预测模型可以用来加速动态精度调优的过程减少程序运行的次数。我们从五个不同的高性能计算应用程序创建了一个混合精度程序的数据集用于训练我们的模型这些模型在性能预测方面达到了96.34%的F1分数精度预测方面达到了97.03%的F1分数。FPLearner将两个动态精度调整器Precimonious和HiFPTuner的时间效率平均提高了25.54%最高提高了61.07%同时实现了可比较或更好质量的精度调优结果。 论文链接https://doi.org/10.1145/3597503.3623338 53、Predicting open source contributor turnover from value-related discussions: An analysis of GitHub issues 关于项目价值观的讨论对于开发满足不同人类需求并积极影响社会的工程软件至关重要。由于与价值相关的讨论涉及根深蒂固的信念它们可能导致冲突或其他可能影响继续为开源项目做出贡献的动机的结果。然而目前尚不清楚与人员流动的显著变化相关的价值相关讨论的类型。我们通过识别与重要项目价值相关的讨论并调查这些讨论在接下来几个月内预测项目流动性的程度来填补这一空白。我们收集了来自52个项目的GitHub问题和提交日志这些项目分享类似的伦理承诺并被确定为分布式WebDecentralized Web社区的一部分。我们确定了与分布式Web的核心价值观尊重、自由、开明、反对中心化社会权力、公正和平等、保护环境相关的问题。然后我们使用Granger因果分析来检查与这些价值相关的讨论比例的变化如何可能预测收入和退出流动性的变化。我们发现了许多与价值相关的讨论和人员流动之间的显著关系包括关于尊重的讨论预测贡献者的流失增加和新贡献者的减少而关于社会权力的讨论则预测贡献者的保留更好。了解这些引起贡献者流动的原因对于管理涵盖以人为中心问题的开源项目至关重要。基于这些结果我们讨论了对开源维护者和未来研究的影响。 论文链接https://doi.org/10.1145/3597503.3623340 54、Prompting Is All You Need: Automated Android Bug Replay with Large Language Models Bug报告对于软件维护至关重要允许用户在使用软件时通知开发人员遇到的问题。因此研究人员已经投入了相当多的资源来自动化错误重现以加快软件维护的过程。然而当前自动化方法的成功很大程度上取决于错误报告的特征和质量因为它们受制于手工制作的模式和预定义的词汇列表的限制。受到大型语言模型LLM在自然语言理解方面的成功启发我们提出了AdbGPT一种新的轻量级方法通过提示工程自动从bug报告中重现错误无需任何训练和硬编码的工作。AdbGPT利用少样本学习和思维链推理来从LLM中引出人类知识和逻辑推理以类似于开发人员的方式完成bug重现。我们的评估证明了我们的AdbGPT在253.6秒内复现了81.3%的错误报告的有效性和效率优于最先进的基准线和消融研究。我们还进行了一项小规模用户研究以确认AdbGPT在提升开发人员的错误重现能力方面的实用性。 论文链接https://doi.org/10.1145/3597503.3608137 55、RUNNER: Responsible UNfair NEuron Repair for Enhancing Deep Neural Network Fairness 深度神经网络(DNNs)作为一种新兴的软件技术在各个领域取得了令人瞩目的成果。然而DNN模型对某些群体的歧视行为(即不公平性)越来越成为社会关注的焦点特别是在贷款批准和犯罪风险评估等高风险应用中。尽管已经有一些工作致力于改善模型的公平性但大多数方法都采用了对抗者来扩展模型架构或增加训练数据这会引入过多的计算开销。最近的研究首先诊断出导致不公平的神经元然后通过选择性重新训练来修复它们。然而由于多步训练样本分析现有的诊断过程耗时而选择性重新训练可能会引起性能瓶颈因为在偏倚样本上间接调整不公平神经元。在本文中我们提出了负责不公平神经元修复(RUNNER)在三个关键方面改进了现有工作(1)效率我们设计了基于重要性的神经元诊断方法通过使用新的神经元重要性准则在一步内确定导致不公平的神经元(2)有效性我们设计了神经元稳定训练通过添加一个损失项来衡量来自所有来源的不同子组的责任不公平神经元的激活距离(3)泛化性我们研究了在结构化表格数据和大规模非结构化图像数据上的有效性这在以往的研究中经常被忽视。我们在5个数据集上进行了广泛的实验结果表明RUUNER可以有效且高效地诊断和修复DNNs的不公平性。平均而言我们的方法将计算开销从341.7秒降低到29.65秒并将公平性提高了高达79.3%。此外RUNNER还在非结构化数据集上保持了最先进的结果。 论文链接https://doi.org/10.1145/3597503.3623334 56、Reorder Pointer Flow in Sound Concurrency Bug Prediction 由于线程交错的非确定性预测并发bug长期以来一直是一项极其困难的任务。最近提出了几种可靠的bug检测方法。这些方法都基于本地搜索即改变观察到的跟踪序列的顺序并预测改变后的顺序是否会触发bug。令人惊讶的是在这个过程中它们从未考虑重新排序指针的数据流而这可能是检测许多复杂bug的关键点。为了弥补这个弱点我们提出了一种新的流敏感的指向分析技术ConPTA可以帮助在顺序变异过程中积极重新排序指针流。基于ConPTA我们进一步提出了一种新的可靠的bug预测方法Eagle用于预测四种类型的并发bug。它们是空指针解引用NPD未初始化的指针使用UPU释放后使用UAF和重复释放DF。通过积极重新排序指针流Eagle可以在变异过程中探索更大的线程交错搜索空间从而检测到更多的并发bug。我们对Eagle在10个真实的多线程程序上的评估显示Eagle在效果和效率方面明显优于四种最先进的bug检测方法UFO、ConVul、ConVulPOE和Period。 论文链接https://doi.org/10.1145/3597503.3623300 57、Resource Usage and Optimization Opportunities in Workflows of GitHub Actions 持续集成和持续交付CI/CD在软件开发中已成为一种普遍实践。GitHub Actions正逐渐成为一个流行的平台用于实现CI/CD流水线称为工作流特别是因为该平台每个月为公共存储库免费提供2,000分钟的计算。为了了解这些资源的用途以及CI/CD是否可以更加高效本文介绍了GitHub Actions工作流的资源使用和优化机会的首个全面实证研究。我们的研究结果显示CI/CD需要巨大的成本例如对于一个平均付费等级存储库每年需要$504。绝大部分资源被测试和构建消耗91.2%这是由拉取请求50.7%、推送30.9%和定期计划工作流15.5%触发的。虽然现有的优化措施如缓存在付费等级的存储库中采用率为32.9%产生了积极影响但整体上仍未充分利用。这一结果强调了增强文档和工具的必要性引导开发人员使用更加资源高效的工作流。此外我们展示了平台中相对简单的更改例如在存储库处于非活动状态时停用定期计划工作流可以使受影响的工作流执行时间缩短1.1%至31.6%。总的来说我们希望我们的研究结果有助于改善CI/CD流水线的资源效率。 论文链接https://doi.org/10.1145/3597503.3623303 58、Revealing Hidden Threats: An Empirical Study of Library Misuse in Smart Contracts 智能合约是在区块链上执行的图灵完备程序。开发人员可以使用Solidity编程语言在以太坊上实现复杂的合约如拍卖和借贷。作为一种面向对象的语言Solidity在其语法中提供了库以促进代码的可重用性并减少开发复杂性。库误用指的是库的不正确编写或使用导致意外结果比如在库开发过程中引入漏洞或在合同开发过程中引入不安全的库。库误用可能导致合同缺陷造成财务损失。目前关于库误用的研究还很少。为了填补这一空白我们从五家审计公司的官方网站收集了500多份审计报告以及来自Etherscan的223,336个实际世界的智能合约用来衡量库的流行程度和库的误用情况。接着我们定义了八种库误用的一般模式其中三种发生在库开发过程中五种发生在库的利用过程中涵盖了整个库的生命周期。为了验证这些模式的实用性我们手动分析了1,018个实际世界的智能合约并公开了我们的数据集。我们发现在456个合约中存在905个误用案例表明库误用是一个普遍存在的问题。其中三种误用模式在50个以上的合约中被发现主要是因为开发人员缺乏安全意识或低估了负面影响。此外我们的研究还揭示了在以太坊上的易受攻击的库在被弃用或修补后仍然被使用。我们的发现可以帮助合同开发人员预防库的误用确保库的安全使用。 论文链接https://doi.org/10.1145/3597503.3623335 59、SCTrans: Constructing a Large Public Scenario Dataset for Simulation Testing of Autonomous Driving Systems 对自动驾驶系统ADS的安全评估而言仿真测试已成为物理道路测试的重要补充技术。本质上仿真测试是一种基于场景的方法其有效性高度依赖于给定仿真场景的质量。此外仿真场景应编码为格式良好的文件否则ADS仿真平台无法将其用作输入。缺乏大规模的仿真场景文件公共数据集阻碍了ADS仿真测试在工业和学术领域的应用。 为填补这一空白我们提出了一种基于转换的方法SCTrans来构建仿真场景文件利用现有交通场景数据集即在公共道路上记录的道路用户自然的移动作为数据源。具体而言我们尝试将现有的交通场景记录文件转换为与最先进的ADS仿真平台兼容的仿真场景文件并将此任务形式化为模型转换问题。遵循这一思路我们构建了一个包含超过1,900个多样化仿真场景的数据集每个场景都可以直接用于通过高保真度模拟器如Carla和LGSVL测试最先进的ADS即Apollo和Autoware。为了进一步展示我们数据集的实用性我们展示了它可以增强现有基于仿真的ADS模糊器的碰撞查找能力有助于在相同时间段内识别约七倍更多与ADS相关的碰撞。通过在代码级别分析这些碰撞我们确定了Apollo和Autoware的九个安全关键性漏洞每个漏洞都可以稳定地被利用以引发车辆事故。到目前为止已确认其中四个漏洞。 论文链接https://doi.org/10.1145/3597503.3623350 60、Semantic Analysis of Macro Usage for Portability C语言是一种不安全的语言。研究人员一直在开发工具将C语言转换为更安全的语言如Rust、Checked C或Go。然而现有的工具通常通过预处理源文件然后转换生成的代码导致代码几乎无法识别丧失了宏抽象。为了保留宏的使用方式转换工具需要具备理解宏行为并将其转换为等效结构的分析能力。然而宏语义与典型函数不同因此无法通过简单的语法转换进行转换。我们介绍了第一个全面的框架用于分析宏使用的可移植性。我们将宏行为分解为26个细粒度属性并实现了一个名为Maki的程序分析工具能够以94%的准确率在实际代码中识别这些属性。我们将Maki应用于包含86,199个宏定义的21个程序中。我们发现实际宏比之前所知的更加易于移植。超过三分之一37%的宏易于移植Maki为移植更复杂的宏提供了提示。我们发现相较于先前的工作平均有2倍更多易于移植的宏在最好的情况下多达7倍。在Maki的输出指导下我们在三个实际程序中找到并手动移植了宏。我们向Linux维护者提交了转换了十一个宏的补丁其中有九个已被接受。 论文链接https://doi.org/10.1145/3597503.3623323 61、Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners? 建立在区块链技术和智能合约之上的去中心化金融DeFi生态系统的增长导致对安全和可靠的智能合约开发的需求增加。然而针对智能合约的攻击正在增加造成估计达64.5亿美元的财务损失。研究人员已经提出了各种自动化安全工具来检测漏洞但它们在现实世界中的影响仍然不确定。 在本文中我们旨在揭示自动化安全工具在识别可能导致重大攻击的漏洞方面的有效性以及它们在行业内的整体使用情况。我们的全面研究包括对五种SoTA自动化安全工具的评估对导致23亿美元损失的127起高影响力实际攻击的分析以及对49名在领先的DeFi协议中工作的开发人员和审计人员的调查。我们的研究结果揭示了一个严峻的现实这些工具只能预防数据集中仅有的8%的攻击金额为2.3亿美元损失中的1.49亿美元。值得注意的是所有可预防的攻击都与递归漏洞有关。此外从业者将逻辑相关错误和协议层漏洞视为重要威胁这些威胁目前并未得到现有安全工具的充分解决。我们的研究结果强调了开发针对开发人员和审计人员独特需求和期望的专门工具的必要性。此外我们的研究突显了安全工具持续进步的必要性以有效应对DeFi生态系统面临的不断演变的挑战。 论文链接https://doi.org/10.1145/3597503.3623302 62、TRACED: Execution-aware Pre-training for Source Code 目前大多数针对源代码的预训练语言模型主要侧重于学习静态代码文本通常会与静态代码结构抽象语法树、依赖图等相结合。然而在真正执行之前程序的语义将无法完全显露。缺乏对程序执行的理解静态预训练模型无法全面捕捉动态代码特性如分支覆盖和运行时变量值因此在代码理解任务如检索语义克隆和检测软件漏洞方面效果较差。 为了弥合语言模型的静态特质与程序动态特性之间的差距我们引入了TRACED一种针对源代码的执行感知预训练策略。具体来说我们通过源代码、可执行输入以及相应的执行追踪的组合对代码语言模型进行预训练。我们的目标是在预训练期间教会代码模型复杂的执行逻辑使模型能够在专门任务的微调过程中静态估计动态代码特性而无需重复执行代码。 为了说明我们提出的方法的有效性我们在三个下游任务上对TRACED进行了微调和评估静态执行估计、克隆检索和漏洞检测。实证结果显示TRACED相对于静态预训练代码模型提高了12.4%的完整执行路径预测精度以及25.2%的运行时变量值预测精度。TRACED在四个公共基准测试中在克隆检索和漏洞检测方面也显著优于静态预训练模型。 论文链接https://doi.org/10.1145/3597503.3608140 63、Toward Automatically Completing GitHub Workflows 持续集成和交付CI/CD如今已经成为软件开发的核心。它们的好处是建立和维护CI/CD管道的成本这需要知识和技能通常与其他与软件相关的任务不同。虽然已经提出了几种推荐系统来支持开发人员完成各种任务但在建立和维护CI/CD管道方面几乎没有自动化支持。我们提出了GH-WCOMGitHub工作流完整性这是一种基于Transformer的方法支持开发人员编写特定类型的CI/CD管道即GitHub工作流。为了处理这样的任务我们设计了一个抽象过程以帮助变压器的学习同时让GH-WCOM能够推荐非常特殊的工作流元素如工具选项和脚本元素。我们的实证研究表明GH-WCOM提供了高达34.23%的正确预测而模型的置信度是推荐的正确性可能性的可靠代理。 论文链接https://doi.org/10.1145/3597503.3623351 64、Toward Improved Deep Learning-based Vulnerability Detection 深度学习DL已经成为近期几种漏洞检测技术的共同线索。大量公开可获得的漏洞数据集的涌现推动了支撑这些技术的学习过程。尽管这些数据集有助于基于DL的漏洞检测器但也限制了这些检测器的预测能力。这些数据集中的漏洞必须以某种方式表示例如代码行、函数或存在漏洞的程序片段。我们将这种表示称为基本单元。检测器学习基本单元如何容易受到攻击然后预测其他基本单元是否容易受到攻击。我们假设这种对个别基本单元的关注会影响检测器正确检测跨越多个基本单元的漏洞或MBU漏洞的能力。对于这类漏洞只有在检测到所有包含的基本单元都被判定为易受攻击时才是正确的。验证现有技术在检测漏洞所有部分方面的表现对于确定它们对其他下游任务的有效性至关重要。为了评估我们的假设我们进行了一项研究重点关注三种知名的基于DL的检测器ReVeal、DeepWukong和LineVul。我们的研究显示这三款检测器在各自的数据集中都包含MBU漏洞。此外我们观察到在检测到这些类型的漏洞时准确率显著下降。我们提出了我们的研究以及一个框架可用于帮助基于DL的检测器正确包含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 基于人工智能的系统在各个领域包括自动驾驶汽车(AVs)中已经广泛流行。然而由于其复杂性确保其可靠性和安全性是具有挑战性的。传统的用于评估传统软件测试效果的测试充分性指标通常不足或在这些系统中不实用。专为这些系统设计的白盒度量指标利用神经元覆盖信息。这些覆盖度量需要访问底层人工智能模型和训练数据这些数据可能并不总是可用。此外现有的充分性度量指标与检测生成的测试套件中的故障的能力之间存在较弱的相关性我们旨在在本研究中弥合这一差距。 在本文中我们引入一组名为“测试套件实例空间充分性”(TISA)度量的黑盒测试充分性指标可用于评估测试套件的有效性。TISA度量提供了一种评估测试套件的多样性和覆盖范围以及测试期间检测到的错误范围的方法。此外我们引入了一个框架允许测试人员在二维空间中可视化测试套件的多样性和覆盖范围有助于识别需要改进的领域。 我们通过检查TISA指标与AVs系统级模拟测试中检测到故障数量之间的相关性来评估TISA指标的有效性。强相关性以及短计算时间表明其在估计测试AVs的充分性方面的有效性和效率。 论文链接https://doi.org/10.1145/3597503.3623314 66、UniLog: Automatic Logging via LLM and In-Context Learning 日志记录旨在确定日志记录语句的位置、详细程度级别和日志消息是软件可靠性增强的关键过程。近年来已设计了许多自动日志记录工具旨在帮助开发人员完成日志记录任务之一例如在try-catch块中提供建议是否记录日志。这些工具在特定情况下很有用但通常不能提供全面的日志记录解决方案。此外尽管最近的研究已开始探索端到端的日志记录但仍然受到微调成本高昂的限制阻碍了在软件开发中的实际实用性。为解决这些问题本文提出了UniLog这是一个基于大型语言模型LLM中上下文学习ICL范式的自动日志记录框架。具体而言UniLog可以仅通过包含五个示例演示的提示生成一个适当的日志记录语句而无需进行任何模型调整。此外UniLog在仅用几百个随机样本热身后可以进一步增强其日志记录能力。我们在一个包含来自1,465个GitHub仓库中提取的12,012个代码片段的大型数据集上评估了UniLog。结果显示UniLog在自动日志记录方面实现了最先进的性能1在选择日志记录位置方面的准确率为76.9%2在预测详细程度级别方面的准确率为72.3%3在生成日志消息方面的BLEU-4分数为27.1。与此同时UniLog所需的参数调整时间不到对同一LLM进行微调所需时间的4%。 论文链接https://doi.org/10.1145/3597503.3623326 67、Unveiling the Life Cycle of User Feedback: Best Practices from Software Practitioners 用户反馈对于组织改进软件产品变得越来越重要。先前的研究主要关注于反馈收集并报告了对这一过程的高层概述往往忽视了从业者如何通过一系列结构化活动对这些反馈进行推理和行动。在这项工作中我们与来自各种规模和领域如电子商务、分析和游戏的32个组织中的40名从业者进行了一项探索性访谈研究。我们的调查结果表明组织利用许多不同的用户反馈来源。社交媒体已成为一个关键类别的反馈来源对许多组织变得越来越关键。我们发现组织积极参与许多非平凡的活动来策划和采取行动具体取决于反馈来源。我们将这些活动综合成一个管理用户反馈的生命周期。我们还报告了从认为他们的组织有效理解和解决用户反馈的从业者的回应中提炼出的管理用户反馈的最佳实践。我们呈现了可操作的实证结果组织可以利用这些结果来增进对用户感知和行为的理解以开发出更好的产品从而减少用户的流失。 论文链接https://doi.org/10.1145/3597503.3623309 68、VeRe: Verification Guided Synthesis for Repairing Deep Neural Networks 神经网络修复旨在通过修改模型的架构或参数来修复神经网络的“错误”。然而由于神经网络的数据驱动特性很难解释内部神经元和错误行为之间的关系使进一步修复变得具有挑战性。虽然已经有一些工作存在利用梯度或因果分析来识别负责神经元但它们的有效性严重依赖于可用的“错误”数据的质量以及层或神经元选择中的多种启发式方法。在这项工作中我们利用形式验证的力量特别是对神经网络来解决这个问题。具体地我们提出了VeRe一个基于验证的神经网络修复框架它利用线性松弛来符号计算神经元修复的重要性并进一步优化有问题神经元的参数以修复错误行为。我们在各种修复任务上评估了VeRe实验结果显示VeRe可以有效地修复所有神经网络而不降低模型的性能。对于消除后门的任务VeRe成功将攻击成功率平均降至0.38%同时平均导致性能下降0.9%。对于修复安全属性的任务VeRe成功修复了所有36个任务平均达到99.87%的泛化能力。 论文链接https://doi.org/10.1145/3597503.3623332