請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89841
完整後設資料紀錄
DC 欄位 | 值 | 語言 |
---|---|---|
dc.contributor.advisor | 李允中 | zh_TW |
dc.contributor.advisor | Jonathan Lee | en |
dc.contributor.author | 黎光晏 | zh_TW |
dc.contributor.author | Guang-Yan Li | en |
dc.date.accessioned | 2023-09-22T16:21:05Z | - |
dc.date.available | 2023-11-09 | - |
dc.date.copyright | 2023-09-22 | - |
dc.date.issued | 2023 | - |
dc.date.submitted | 2023-08-11 | - |
dc.identifier.citation | Android gradle plugin. https://developer.android.com/studio/releases/gradle-plugin
Ant. https://ant.apache.org/ Bazel. https://bazel.build/ Gradle. https://gradle.org/ Hugging face. https://huggingface.co/ Java. https://www.java.com/en/ Maven. https://maven.apache.org/. Minecraft. https://www.minecraft.net/en-us. Docker. https://www.docker.com/. Github rest api. https://docs.github.com/en/rest?apiVersion=2022-11-28. The top programming languages. https://octoverse.github.com/2022/top-programming-languages. H.-W. Chen. Auto-classifying-fixing build errors in java-based open source projects. Master’s thesis, National Taiwan University, 2020. J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. Bert: Pre-training of deep bidi-rectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018. F. Hassan and X. Wang. Hirebuild: An automatic approach to history-driven repair of build scripts. In Proceedings of the 40th international conference on software engineering, pages 1078–1089, 2018. Y. Lou, J. Chen, L. Zhang, D. Hao, and L. Zhang. History-driven build failure fixing: how far are we? In Proceedings of the 28th acm sigsoft international symposium on software testing and analysis, pages 43–54, 2019. C. Macho, S. McIntosh, and M. Pinzger. Automatically repairing dependency-related build breakage. In 2018 ieee 25th international conference on software analysis, evolution and reengineering (saner), pages 106–117. IEEE, 2018. H. Seo, C. Sadowski, S. Elbaum, E. Aftandilian, and R. Bowdidge. Programmers’ build errors: a case study (at google). In Proceedings of the 36th International Conference on Software Engineering, pages 724–734, 2014. M. Zaheer, G. Guruganesh, K. A. Dubey, J. Ainslie, C. Alberti, S. Ontanon, P. Pham, A. Ravula, Q. Wang, L. Yang, et al. Big bird: Transformers for longer sequences. Advances in neural information processing systems, 33:17283–17297, 2020. | - |
dc.identifier.uri | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89841 | - |
dc.description.abstract | 在使用開源的 Java 專案時,常常會遇到建構失敗的情況,這給開發者帶來許多困擾。因此,自動分析造成這些錯誤的原因並尋找自動修復的方法是很有幫助的。而想達成此目標,通常會使用一些人為定義好的規則來分析專案的錯誤。而在我們的研究中,使用了以 BERT 和 Big Bird 兩個大型預訓練語言模型為基底的兩個模型,來產生修復策略。為了收集研究數據,我們從 GitHub 收集了兩組開源 Gradle Java 專案組,分別包含了 4739 個和 11483 個專案。並利用了一個自動化建構系統: Gradle ACFix,來產生建構錯誤訊息以及對應的修復策略。該兩組模型在進行訓練、驗證後,其準確率均可以達到 95% 以上。 | zh_TW |
dc.description.abstract | When working on open-source Java projects, it's common to run into build failures, which can be challenging to handle. That's why it's helpful to analyze the reasons behind these errors and find ways to automatically fix them. Usually, this involves using rule-based methods to examine projects. In our work, we took advantage of two large pretrained language models - BERT and Big Bird. These models helped us give failed projects a strategy to fix issues in Gradle Java projects. We built upon the foundation of Gradle ACFix, an automated building system, to explore the potential of using machine learning to identify fixing strategies for projects. To gather data for our research, we collected two project sets of open source Gradle Java projects from GitHub, amounting to 4739 and 11493 projects. When testing our models with the error logs from these projects, both of our models can achieve accuracy of over 95\% for both datasets. | en |
dc.description.provenance | Submitted by admin ntu (admin@lib.ntu.edu.tw) on 2023-09-22T16:21:05Z No. of bitstreams: 0 | en |
dc.description.provenance | Made available in DSpace on 2023-09-22T16:21:05Z (GMT). No. of bitstreams: 0 | en |
dc.description.tableofcontents | 口試委員審定書 i
誌謝 ii 摘要 iii Abstracts iv List of Figures viii List of Tables x Chapter 1 Introduction 1 Chapter 2 Related Work 3 2.1 Gradle ACFix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Build process . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2 Development of error types and fixing strategies . . . . . . . . 4 2.1.3 List of error types and fixing strategies . . . . . . . . . . . . . 5 Chapter 3 Transformer-based models 8 3.1 Datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Preprocess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Data splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 Proposed models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.1 BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.2 Proposed architecture . . . . . . . . . . . . . . . . . . . . . . 22 3.4.3 Token Length Distribution . . . . . . . . . . . . . . . . . . . . 23 3.4.4 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5 Big Bird model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5.1 Introduction of Big Bird . . . . . . . . . . . . . . . . . . . . . 29 3.5.2 Proposed architecture . . . . . . . . . . . . . . . . . . . . . . 29 3.5.3 Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Chapter 4 Conclusion 37 4.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Bibliography 39 Chapter 5 Appendix 41 5.1 Issue: submodules cannot be updated (absolute path) . . . . . . . . . 41 5.1.1 Problem description . . . . . . . . . . . . . . . . . . . . . . . 41 5.1.2 Root cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.1.3 Solution and result . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2 Issue: Gradle ACFix Cannot change JDK version . . . . . . . . . . . 42 5.2.1 Problem description . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.2 Root cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2.3 Solution and result . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Issue: Fixing strategy “Search Artifact” cannot fix projects . . . . 43 5.3.1 Problem description . . . . . . . . . . . . . . . . . . . . . . . 43 5.3.2 Root cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3.3 Solution and result . . . . . . . . . . . . . . . . . . . . . . . . 44 | - |
dc.language.iso | en | - |
dc.title | ACFix: 應用Transformer模型於Java開源專案的自動化分類建構錯誤與修復 | zh_TW |
dc.title | ACFix: Applying Transformer Models for Automatic Build Errors Classification and Repair of Java-Based Open Source Projects | en |
dc.type | Thesis | - |
dc.date.schoolyear | 111-2 | - |
dc.description.degree | 碩士 | - |
dc.contributor.oralexamcommittee | 劉建宏;薛念林;李文廷;郭忠義 | zh_TW |
dc.contributor.oralexamcommittee | Chien-Huang Liu;Nien-Lin Hsueh;Wen-Tin Lee;Jong-Yih Kuo | en |
dc.subject.keyword | 建構錯誤,建構修復,開放原始碼,機器學習, | zh_TW |
dc.subject.keyword | build error,build fixing,Gradle,open source,deep learning model, | en |
dc.relation.page | 44 | - |
dc.identifier.doi | 10.6342/NTU202302998 | - |
dc.rights.note | 未授權 | - |
dc.date.accepted | 2023-08-12 | - |
dc.contributor.author-college | 電機資訊學院 | - |
dc.contributor.author-dept | 資訊工程學系 | - |
顯示於系所單位: | 資訊工程學系 |
文件中的檔案:
檔案 | 大小 | 格式 | |
---|---|---|---|
ntu-111-2.pdf 目前未授權公開取用 | 2.86 MB | Adobe PDF |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。