标题:[ICSE 2019] Harnessing Evolution for Multi-Hunk Program Repair
前 言
本文旨在阅读 ICSE 2019 文章 —— Harnessing Evolution for Multi-Hunk Program Repair。
基本信息
Saha, S., Saha, R. K., & Prasad, M. R. (2019, May). Harnessing evolution for multi-hunk program repair. In Proceedings of the 41st International Conference on Software Engineering (pp. 13-24). IEEE Press.
很牛,ICSE
Mukul R. Prasad 作者,还是以下文章的作者:
- Shin Hwei Tan, Hiroaki Yoshida, Mukul R. Prasad, and Abhik Roychoudhury. 2016. Anti-patterns in Search-based Program Repair. In Proceedings ofthe 2016 24th ACM SIGSOFT International Symposium on Foundations ofSoftware Engineering (FSE 2016). ACM, New York, NY, USA, 727–738.
- Ripon K. Saha, Yingjun Lyu, Hiroaki Yoshida, and Mukul R. Prasad. 2017. ELIXIR: Effective Object Oriented Program Repair. In Proceedings ofthe 32Nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2017). IEEE Press, Piscataway, NJ, USA, 648–659.
- RiponK Saha, Yingjun Lyu, Wing Lam, Hiroaki Yoshida, and Mukul R Prasad. 2018. Bugs. jar: a large-scale, diverse dataset of real-world Java bugs. In Proceedings of the 15th International Conference on Mining Software Repositories. ACM, 10–13.
基本内容
Despite significant advances in automatic program repair (APR) techniques over the past decade, practical deployment remains an elusive goal. One of the important challenges in this regard is the general inability of current APR techniques to produce patches that require edits in multiple locations, i.e., multi-hunk patches.
当前的APR现状。
In this work, we present a novel APR technique that generalizes single- hunk repair techniques to include an important class of multi-hunk bugs, namely bugs that may require applying a substantially similar patch at a number oflocations.We term such sets ofrepair locations as evolutionary siblings – similar looking code, instantiated in sim- ilar contexts, that are expected to undergo similar changes. At the heart of our proposed method is an analysis to accurately identify a set of evolutionary siblings, for a given bug. This analysis lever- ages three distinct sources of information, namely the test-suite spectrum, a novel code similarity analysis, and the revision history of the project.
具体的技术。
The discovered siblings are then simultaneously re- paired in a similar fashion. We instantiate this technique in a tool called Hercules and demonstrate that it is able to correctly fix 49 bugs in the Defects4J dataset, the highest of any individual APR technique to date. This includes 15 multi-hunk bugs and overall 13 bugs which have not been fixed by any other technique so far.
实验效果还不错。
以上为摘要。
idea来源
亮点
1)作者有水平,既然现阶段解决不了general的problem,那就解决specific problem。
思路很灵活:
In this work, we propose an APR technique that targets a specific but important class of multi-hunk repair problems.
2)作者的调研很充分,感觉是code clone的大牛一样,很多年前的文章都知道。
3)写作水平很高
很强,测试用例增强。
5)贡献这里,注意表述的格式就好。
不足
1)我认为是三个热点的结合?
软工需要ML技术。最近很多会议似乎都开设了相关的 ML-related 论坛。
可以预见,未来会有更多的机器学习技术涌入软件工程领域。
更多请见:我的印象笔记。
相关文章列表
- Cordy, J. R., & Roy, C. K. (2011, June). The NiCad clone detector. In 2011 IEEE 19th International Conference on Program Comprehension (pp. 219-220). IEEE.
- Jiang, L., Misherghi, G., Su, Z., & Glondu, S. (2007, May). Deckard: Scalable and accurate tree-based detection of code clones. In Proceedings of the 29th international conference on Software Engineering (pp. 96-105). IEEE Computer Society.
- Juergens E, Deissenboeck F, Hummel B, et al. Do code clones matter?[C]//2009 IEEE 31st International Conference on Software Engineering. IEEE, 2009: 485-495.
- Meng, N., Kim, M., & McKinley, K. S. (2011). Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46(6), 329-342. (这位老师老厉害,PLDI)
- Meng, N., Kim, M., & McKinley, K. S. (2013, May). LASE: locating and applying systematic edits by learning from examples. In Proceedings of the 2013 International Conference on Software Engineering (pp. 502-511). IEEE Press.
- Islam, J. F., Mondal, M., & Roy, C. K. (2016, March). Bug replication in code clones: An empirical study. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER) (Vol. 1, pp. 68-78). IEEE.
这样一看,软工里面的实证还是很多的。
code clone领域的文章可以多看看,如:(从 引用Bug replication in code clones: An empirical study [SANER 2016] 的文章中找了一些)
- Mondal, M., Roy, C. K., & Schneider, K. A. (2017, September). Bug propagation through code cloning: An empirical study. In 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME) (pp. 227-237). IEEE.
- Mondal, M., Roy, C. K., & Schneider, K. A. (2017, May). Identifying code clones having high possibilities of containing bugs. In Proceedings of the 25th International Conference on Program Comprehension (pp. 99-109). IEEE Press.
- Islam, J. F., Mondal, M., Roy, C. K., & Schneider, K. A. (2017). A Comparative Study of Software Bugs in Clone and Non-Clone Code. In SEKE (pp. 436-443).
- Svajlenko, J. T. (2018). Large-scale clone detection and benchmarking (Doctoral dissertation, University of Saskatchewan).
- Islam, M. R., & Zibran, M. F. (2018, March). On the characteristics of buggy code clones: A code quality perspective. In 2018 IEEE 12th International Workshop on Software Clones (IWSC) (pp. 23-29). IEEE.
- Mondal, M. (2017). Analyzing Clone Evolution for Identifying the Important Clones for Management (Doctoral dissertation, University of Saskatchewan).
- Islam, J. F., Mondal, M., Roy, C. K., & Schneider, K. A. (2019, May). Comparing bug replication in regular and micro code clones. In Proceedings of the 27th International Conference on Program Comprehension (pp. 81-92). IEEE Press.
准确来说,是软工领域会议里面,和bug相关的都应该关注下。所以我读论文还是太少了,远不如人呢。
- 叶青青. (2008). 软件源代码中的代码克隆现象及其检测方法. 计算机应用与软件, 25(9), 147-149.
好词好句(At least 10)
- Our solution is broadly inspired by insights from two bodies of research.
- Specifically, while the technique is essentially unchanged from [39], some bug-fixes in the implemen- tation led to Hercules generating some new patches, both correct and incorrect, which is reflected in the results reported in Section 6.
- These two bodies of work point to the phenomenon that it is plausible to find “similar looking" pieces of code across a project, bearing similar kinds of bugs and warranting similar patches. Our work exploits this general insight as well
- At the heart of our proposed method is an analysis that uses three distinct sources of information to accurately identify evo- lutionary siblings suitable for repair, for the bug at hand. First,
- implicate
- a starting reference for
- modulo namespace variations
- It is noteworthy that, although not specifically discussed in [46] or [11], the (这样的文献引用还是有人用的嘛)
- By contrast, our approach is much more general, exploiting the sibling relationship to keep the search space effectively the same as a single-location patch.
总结
阅读论文这种事是不能停的,这对自己对论文的感知和熟悉很重要,同时我感觉也在培养自己写论文的感觉。
所以虽然比较耗时间,但是还是得耐下性子好好读读,
所以要坚持。
小结:
现在时间:2019年6月29日13:34:14
已经学了一个半小时了,不能再看了。
明天有机会再补充。