首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 125 毫秒
1.
王敏  潘兴禄  邹艳珍  谢冰 《软件学报》2023,34(10):4705-4723
代码审查是现代软件分布式并行开发过程中的重要机制. 在代码评审时, 帮助代码评审者快速查看某一段源代码的演化过程, 可以让评审者快速理解此段代码变更的原因和必要性, 从而有效提升代码评审的效率与质量. 现有工作虽然提供了一些类似的代码提交历史回溯方法及对应工具, 但缺乏从历史数据中进一步提取辅助代码评审相关辅助信息的能力. 为此, 提出一个面向代码评审的细粒度代码变更溯源方法C2Tracker. 给定一段方法(函数)级别的细粒度代码变更, C2Tracker能够自动追溯到历史开发过程中修改该段代码相关的代码提交, 并在此基础上进一步挖掘其中与该段代码频繁共现修改的代码元素以及相关的变更片段, 辅助代码评审者对当前代码变更的理解与决策. 在10个著名开源项目的数据集下进行实验验证. 实验结果表明, C2Tracker在追溯历史提交的准确率上达到97%, 在挖掘频繁共现代码元素任务上的准确率达到95%, 在追溯相关代码变更片段任务上的准确率达到97%; 相比现有评审方式, C2Tracker在具体案例的代码评审效率和质量上均有较大提升, 在绝大多数的代码评审案例中被评审者认为能提供“明显帮助”或“很大帮助”.  相似文献   

2.
王青叶  万志远  李善平  夏鑫 《软件学报》2022,33(7):2581-2598
代码审查是一种由其他开发者而非代码作者本人评审代码的形式.在代码审查系统中,开发者通过提交代码变更来修复软件缺陷或添加软件特性.并非所有的代码变更都会被集成到代码库中,部分代码变更会被拒收.被拒收的代码变更有可能被恢复,并继续接受审查,提供代码贡献者改进代码变更的机会.然而,审查恢复过的代码变更需要花费更多的时间.收集了4个开源项目中的920 700条代码变更,采用主题分析方法识别出11类代码变更恢复的原因,并定量分析被恢复的代码变更的特征.主要发现包括:1)导致代码变更恢复的原因中,“提升改进”类型占比最大; 2)不同项目之间,代码变更被恢复的原因类别分布存在差异,但并不显著; 3)与从未恢复过的代码变更相比,恢复的代码变更接收率低10%,评论数量平均多1.9倍,审查所用时间平均多5.8倍; 4) 81%的恢复代码变更被接收, 19%的恢复代码变更被拒收.  相似文献   

3.
为提高重构效率,提出一种通过代码行变更指数来对异味类进行排序的方法.此前对于代码异味的研究主要关注静态代码行度量指标,但是在整个项目开发过程中代码行数是动态变化的,且变化规模越大的类出现异味的概率越大.通过对整个项目开发过程中代码行动态变化过程进行分析,提出代码行变更指数对异味类变化规模进行排序,使其重构主要关注那些变化较大的异味类,减少重构成本.对比实验结果表明,按照该方法对异味类进行重构,可以减少异味剩余率,提高重构效率.  相似文献   

4.
在软件开发过程中,代码重用是软件工程师经常会使用的方法。将项目中频繁出现的一些功能相同的代码进行重用,可以使程序更加简练、清晰并易于维护。同时还能把这些实用的代码运用到其他相关项目中,这种重用的代码可以节约开发成本,并能减少重复编码的工作,提高软件编程的生产效率。本文简单总结了几个程序设计开发过程中代码重用的几个常用方法,同时也对代码重用存在的不足进行了分析。  相似文献   

5.
刘忠鑫  唐郅杰  夏鑫  李善平 《软件学报》2023,(12):5501-5526
代码变更是软件演化过程中的关键行为,其质量与软件质量密切相关.对代码变更进行建模和表示是众多软件工程任务的基础,例如即时缺陷预测、软件制品可追溯性恢复等.近年来,代码变更表示学习技术得到了广泛的关注与应用.该类技术旨在学习将代码变更的语义信息表示为稠密低维实值向量,即学习代码变更的分布式表示,相比于传统的人工设计代码变更特征的方法具有自动学习、端到端训练和表示准确等优点.但同时该领域目前也存在如结构信息利用困难、基准数据集缺失等挑战.对近期代码变更表示学习技术的研究及应用进展进行了梳理和总结,主要内容包括:(1)介绍了代码变更表示学习及其应用的一般框架.(2)梳理了现有的代码变更表示学习技术,总结了不同技术的优缺点.(3)总结并归类了代码变更表示学习技术的下游应用.(4)归纳了代码变更表示学习技术现存的挑战和潜在的机遇,展望了该类技术的未来发展方向.  相似文献   

6.
抽取方法是一种常用的代码重构手段,被广泛应用到软件开发和维护中。提出一个基于克隆检测的抽取方法重构模式的识别算法。以代码变更块hunk为单位,用代码克隆检测工具simian对候选的hunk进行筛选,用语法分析对该模式进行判定。在4个开源项目上进行实验,结果表明该算法具有较高的准确率。  相似文献   

7.
林德城 《福建电脑》2022,38(1):60-64
为了更加精准地评估复杂应用需求的研发工作量,建设一套自动化的软件需求工作量辅助测评系统势在必行。本文提出了软件需求工作量辅助测评系统的建设方案,就该系统总体架构设计进行说明,同时对被评测应用的代码结构分析方法和工作量测算逻辑展开详细论述。实践结果表明,相较传统“德尔菲式”人工估算方法,该评测系统支持与CVS、SVN、GIT版本管理工具对接,能对开发商提供的每次变更版本进行信息的自动提取,借助LOC代码行数、注释行数、圈复杂度等关键指标,客观、高效地生成项目代码变更数据,克服了主观依赖和随机性,合理评测出各项需求工作量。  相似文献   

8.
徐锋 《程序员》2003,(7):108-111
什么是配置管理每一个软件项目,无论是工程类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成测试、部署、交付、维护和支持的过程。在这个过程中,将生成各种各样不同的工件,包括文档、源程序、可执行代码、支持库。更可怕的是,频繁出现的变更是不可避免的,因此面向如此庞大且不断变动的信息集,如何使其有序、高效地存放、查找和利用就成为了一个突出的问题。  相似文献   

9.
张薇 《计算机时代》2012,(10):67-69
软件配置管理包括对代码、文档、数据等的管理,其优劣受限于项目成员的实际操作。开发人员对于工作区如何使用;成员之间的代码是不是可以及时更新与同步;怎样使用分支,如何进行变更合并,才能减少物理空间浪费和事件延迟。这些问题在实际的项目开发中往往被忽视,亦或团队并没有对成员行为作细节的规范,因而许多软件项目出现了工期推迟或代码质量不高等问题。为此提出了一系列管理措施,通过优化软件配置管理规范项目各成员的行为,以保证高效的软件配置管理的实施。  相似文献   

10.
随着软件项目规模的扩大以及软件复杂性的增加,缺陷修复的难度越来越大.其中,绝大多数缺陷问题都是由代码的错误编写导致的,在软件缺陷修复过程中开发维护人员需要花费大量的时间定位并修改缺陷代码.针对这个问题,对缺陷报告以及对应的项目变更信息进行整合,根据代码抽象语法树结构信息计算代码块与缺陷报告之间的关系,从而构建缺陷-代码知识库.在此知识库的基础上构建面向缺陷定位的代码搜索引擎,以向用户推荐更全面的缺陷定位信息,包括相似缺陷报告、相关缺陷代码文件以及缺陷代码块,从而帮助开发和维护人员及时有效地定位缺陷.实验结果说明,相比现有的缺陷定位方法,所提方法能够更准确地定位缺陷代码文件,并且可有效定位到代码粒度.  相似文献   

11.
12.
针对ARM程序高层代码混淆存在盲目性较强而降低混淆准确度,且很容易被逆向还原的问题。从ARM汇编指令底层研究ARM程序混淆,通过结合ARM架构指令系统的特点,基于模式切换提出一种ARM汇编代码混淆算法,包括指令模式切换混淆、寄存器随机分配混淆和虚假指令混淆,使混淆后汇编代码的控制流变得更加复杂,且对切换地址的寄存器混淆也提高了动态调试跟踪的难度。模式切换及虚假指令混淆也会造成反汇编错误,从复杂强度、逆向弹性和性能开销三方面进行测试评估。测试结果表明,该混淆算法不仅有效地提高了程序的控制流循环复杂度,而且能够抵抗反汇编工具的逆向分析。该混淆算法引发的额外体积开销和时间开销较低,具有实用性。  相似文献   

13.
Kasi Anantha  Fred Long 《Software》1990,20(6):537-554
There are two principal methods used to exploit the parallelism available on a parallel machine: the program to be executed can be optimized by hand, or the program can be automatically converted to parallel machine code by a compiler. The first method usually derives parallelism at the procedure level; a parallel program is written in a high-level language and typically has various modules executing in parallel. By contrast, the compiler methodically transforms the program into parallel code using various transformations, such as code movement. The automatic conversion of a program to parallel code is called compaction or parallelization. This paper describes the evolution of a new compaction program and presents a new algorithm for determining legal code movements. A simulator of the target architecture was used to estimate the execution times of a sample suite of programs before and after compaction. The results verify that substantial advantages arise from applying this compaction technique.  相似文献   

14.
为正确获得嵌入式可执行程序和汇编代码的高级语言控制结构,弥补现有高级程序控制结构恢复算法在处理非结构化区域的不足,将编译领域经典的控制流分析方法——结构分析算法引入到嵌入式汇编代码高级程序控制结构恢复研究中;针对嵌入式可执行程序的特点,对结构分析算法加以改进;利用结构分析算法的结果构造程序的控制树,生成高级语言代码。与开源反编译器DCC的对比实验结果表明,改进的结构分析算法在高级程序结构恢复问题上是可行有效的。  相似文献   

15.
郭丹丹  姜瑛 《计算机科学》2015,42(12):167-170
在软件生命周期的任意阶段,均可能因为各种原因而导致软件发生变化。当软件发生变化时,必须对其进行回归测试,检查这些变化是否影响了软件原有的正常功能。为了提高回归测试的效率并降低成本,需要尽可能准确地确定软件变化影响的内容。在单元测试中,基于源代码语句分析了程序的变化影响范围,得到了程序的变化集和影响集,提出了生成影响路径集的算法。实验结果表明,该方法能有效产生程序变化影响的路径集,提高了回归测试的效率。  相似文献   

16.
许多软件依赖数据库来存储信息。数据库模式的变更可能导致程序代码中与数据库相关的SQL语句代码不能正常执行,因而找出一种能够直接定位到需要修改的SQL语句代码并推荐出这些代码可能的修改方案的方法是十分必要的。提出的面向数据库模式变更的代码演化推荐方法首先自动检测出软件系统数据库模式发生的变更,随后采用程序切片技术得出与数据库操作相关的程序切片;确定受到数据库模式变更影响的程序切片后,利用源程序转换流程图算法将程序切片转化为程序流程图;根据程序流程图的分支条件得出SQL语句所有可能的特定执行路径;最后采用图映射的方法对每条路径的SQL语句进行变更语句推荐,推荐出新数据库模式下可执行的SQL语句。为了验证该方法的可行性,实现了一个用于自动检测数据库模式变更并能推荐出SQL语句演化后代码的插件工具。  相似文献   

17.
设计了一种生成数据库访问层程序代码的方法。该方法先从现有数据库或PowerDesigner模型文件中解析出数据库架构信息,并将这些信息用XML格式描述,然后利用XSLT将该XML格式文件转换为用高级程序语言表示的程序代码.  相似文献   

18.
This paper identifies high-level program properties that can be discovered by static analysis in a compiler front end, and that are useful for classical low-level optimizations. We suggest how intermediate language code could be annotated to convey these properties to the code generator.I wish to thank David Watt and Andrew Kennedy for their detailed comments and suggestions. Simon Peyton Jones and Norman Ramsey commented on an early draft of this paper. The anonymous reviewers made suggestions that improved the contents and the presentation of the paper.  相似文献   

19.
现有反编译器产生的代码与对应的源代码之间存在差异,找到并理解差异有助于改进并完善反编译器的设计。该文给出一种适用于C语言反编译代码与源代码的比较算法。该算法以语法树匹配方法为基础,定义新的C语言中间代码表示形式并对表达式进行动态匹配,提高了语法树匹配的准确性。实验结果表明,该算法能有效计算出反编译代码与源代码之间的多数差异。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号