Skip navigation

DSpace

機構典藏 DSpace 系統致力於保存各式數位資料(如:文字、圖片、PDF)並使其易於取用。

點此認識 DSpace
DSpace logo
English
中文
  • 瀏覽論文
    • 校院系所
    • 出版年
    • 作者
    • 標題
    • 關鍵字
    • 指導教授
  • 搜尋 TDR
  • 授權 Q&A
    • 我的頁面
    • 接受 E-mail 通知
    • 編輯個人資料
  1. NTU Theses and Dissertations Repository
  2. 電機資訊學院
  3. 資訊工程學系
請用此 Handle URI 來引用此文件: http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/70193
完整後設資料紀錄
DC 欄位值語言
dc.contributor.advisor李允中(Jonathan Lee)
dc.contributor.authorHong-Wun Chenen
dc.contributor.author陳泓文zh_TW
dc.date.accessioned2021-06-17T03:48:37Z-
dc.date.available2020-08-24
dc.date.copyright2020-08-24
dc.date.issued2020
dc.date.submitted2020-08-17
dc.identifier.citation[1] Angular, [online] https://angular.io/.
[2] Apache ant - welcome, [online] https://ant.apache.org/.
[3] Code quality and security - sonarqube, [online] https://www.sonarqube.org/.
[4] Empowering app development for developers - docker, [online] https://docker.com.
[5] Free angular admin template · coreui for angular, [online] https://coreui.io/angular/.
[6] Github language stats, [online] https://madnight.github.io/githut.
[7] Gradle build tool, [online] https://gradle.org/.
[8] Maven - welcome to apache maven, [online] https://maven.apache.org/.
[9] Spring - home, [online] https://spring.io/.
[10] Xlnet: Generalized autoregressive pretraining for language understanding, [online] https://github.com/zihangdai/xlnet.
[11] F. Hassan, S. Mostafa, E. S. L. Lam, and X. Wang. Automatic building of java projects in software repositories: A study on feasibility and challenges. In 2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), pages 38–47, 2017.
[12] F. Hassan and X. Wang. Hirebuild: An automatic approach to history-driven repair of build scripts. In 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE), pages 1078–1089, 2018.
[13] N. Kerzazi, F. Khomh, and B. Adams. Why do automated builds break? an empirical study. In 2014 IEEE International Conference on Software Maintenance and Evolution, pages 41–50, 2014.
[14] 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, ISSTA 2019, pages 43–54, New York, NY, USA, 2019. Association for Computing Machinery.
[15] Y. Luo, Y. Zhao, W. Ma, and L. Chen. What are the factors impacting build breakage? In 2017 14th Web Information Systems and Applications Conference (WISA), pages 139–142, 2017.
[16] 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, 2018.
[17] T. Rausch, W. Hummer, P. Leitner, and S. Schulte. An empirical analysis of build failures in the continuous integration workflows of java-based open-source software. In 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR), pages 345–355, 2017.
[18] H. Seo, C. Sadowski, S. Elbaum, E. Aftandilian, and R. Bowdidge. Programmers’ build errors: A case study (at google). In International Conference on Software Engineering (ICSE), 2014.
[19] M. Sul ́ır and J. Porub ̈an. A quantitative study of java software buildability. In Proceedings of the 7th International Workshop on Evaluation and Usability of Programming Languages and Tools, PLATEAU 2016, pages 17–25, New York, NY, USA, 2016. Association for Computing Machinery.
dc.identifier.urihttp://tdr.lib.ntu.edu.tw/jspui/handle/123456789/70193-
dc.description.abstract在建構Java開源專案的過程中,沒有被常時維護的建構腳本經常導致建構失敗。在Github上,超過35%的Java開源專案並沒有被適當地維護。因此,過去聚焦於修復建構錯誤的研究採取了各種方式如觀察建構腳本的修改紀錄以尋找可用的修復策略、從過去的修復紀錄中自動發掘並生成新的修復模式、以及利用搜尋結果來修補建構腳本。
本研究提出了一個在Gradle專案上的自動歸類與修復(AC-Fix)方式以減輕上述議題的效應。本研究包括了:一、藉由深入研究錯誤日誌的根本原因以提出一個歸類Gradle建構錯誤的架構;二、針對前述根本原因設計修復策略;三、經由重複地執行錯誤識別與修復策略以修復Gradle專案;四、將AC-Fix與SonarQube原始碼分析工具整合為單一資訊網應用程式。使用Ac-Fix後,Github與GitLab上的專案的建構失敗比例可分別降低至18.02%和19.86%。
zh_TW
dc.description.abstractIn the build process of open source Java projects, build scripts without constant maintenance usually result in build failure. Over 35% open source Java projects on Github are not up to date to their maintenance. As a result, research work focusing on fixing the build failure problem runs the gamut from going through build scripts revision for findings useful for deriving fixing strategies, to mining from history fixing commit to automatically generate new fix patterns, and to patching build scripts with search-based approaches.
In this work, an auto-classifying-fixing approach is proposed (called AC-Fix) to alleviate the above mentioned issue for Gradle projects, including the following: (1) proposing a classification scheme of Gradle build errors by conducting an in-depth analysis of the root causes in the error logs, (2) designing fixing strategies dealing with the root causes, (3) repairing Gradle projects by means of repeatedly conducting error classification and strategy fixing, and (4) integrating AC-Fix with SonarQube into a Web application. With AC-Fix, build failure rates are reduced to 18.02% for projects on Github and 19.86% for projects on GitLab, respectively.
en
dc.description.provenanceMade available in DSpace on 2021-06-17T03:48:37Z (GMT). No. of bitstreams: 1
U0001-1708202017531700.pdf: 5291615 bytes, checksum: 4bbfc637116c9e03cb51f2be11a63d12 (MD5)
Previous issue date: 2020
en
dc.description.tableofcontents誌謝 ii
摘要 iii
Abstracts iv
List of Figures ix
List of Tables xi
Chapter 1 Introduction 1
Chapter 2 Related Work 3
2.1 Build Failures in Automated Build System 3
2.2 Build Error Classification 4
2.3 Build Error Auto-Fixing 5
Chapter 3 Build Error Auto-Classifying 8
3.1 Project Collection 8
3.2 Research Approach 9
3.3 Build Error Classification 10
3.3.1 Error Category: Wrapper 11
3.3.2 Error Category: Plugin 11
3.3.3 Error Category: Method 12
3.3.4 Error Category: Property 12
3.3.5 Error Category: Dependency 13
3.3.6 Error Category: Java Version 13
3.3.7 Error Category: Non-Gradle 14
3.3.8 Error Category: Others 14
Chapter 4 Build Error Auto-Fixing 17
4.1 Project Collection 17
4.2 Fixing Environment 19
4.3 Fixing Process 19
4.4 Error Types 22
4.4.1 Error Category: Wrapper 22
4.4.2 Error Category: Plugin 22
4.4.3 Error Category: Property 23
4.4.4 Error Category: Dependency 23
4.4.5 Error Category: Java Version 23
4.4.6 Error Category: Non-Gradle 24
4.4.7 Error Category: Other 24
4.5 Fixing Strategies 24
4.5.1 Strategy Category: Add Plugin 24
4.5.2 Strategy Category: Add Repository 25
4.5.3 Strategy Category: Assign Property 25
4.5.4 Strategy Category: Change Plugin Version 26
4.5.5 Strategy Category: Compile Error Breakdown 26
4.5.6 Strategy Category: Dump File 27
4.5.7 Strategy Category: Exclude Task 27
4.5.8 Strategy Category: Force Conflict Dependency 28
4.5.9 Strategy Category: Full Clone 28
4.5.10 Strategy Category: Include Subproject 28
4.5.11 Strategy Category: Replace Repository 29
4.5.12 Strategy Category: Rewrap Gradle 29
4.5.13 Strategy Category: Search Artifact 30
4.5.14 Strategy Category: Switch Java Version 30
Chapter 5 AC-Fix 35
5.1 System Architecture 35
5.2 Class Diagram 36
5.3 Integration with SonarQube 37
5.4 Example Use Case 38
Chapter 6 Findings 43
6.1 Building Success Rate 43
6.2 Fixing Success Rate 44
6.3 Fixing Iterations 46
6.4 Comparison with Manual Fixing 48
6.5 Include Machine Learning 49
Chapter 7 Conclusion 50
Bibliography 52
dc.language.isoen
dc.subject開放原始碼zh_TW
dc.subject建構錯誤zh_TW
dc.subject建構修復zh_TW
dc.subjectGradle建構工具zh_TW
dc.subject自動化zh_TW
dc.subjectGradleen
dc.subjectbuild erroren
dc.subjectbuild fixingen
dc.subjectopen sourceen
dc.subjectautomationen
dc.title自動歸類與修復Java開源專案的建構錯誤zh_TW
dc.titleAuto-Classifying-Fixing Build Errors in Java-Based Open Source Projectsen
dc.typeThesis
dc.date.schoolyear108-2
dc.description.degree碩士
dc.contributor.oralexamcommittee鄭有進(Yu Chin Cheng),劉立頌(Alan Liu),郭忠義(Jong Yih Kuo),徐國勛(Kuo-Hsun Hsu)
dc.subject.keyword建構錯誤,建構修復,Gradle建構工具,開放原始碼,自動化,zh_TW
dc.subject.keywordbuild error,build fixing,Gradle,open source,automation,en
dc.relation.page54
dc.identifier.doi10.6342/NTU202003828
dc.rights.note有償授權
dc.date.accepted2020-08-18
dc.contributor.author-college電機資訊學院zh_TW
dc.contributor.author-dept資訊工程學研究所zh_TW
顯示於系所單位:資訊工程學系

文件中的檔案:
檔案 大小格式 
U0001-1708202017531700.pdf
  未授權公開取用
5.17 MBAdobe PDF
顯示文件簡單紀錄


系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。

社群連結
聯絡資訊
10617臺北市大安區羅斯福路四段1號
No.1 Sec.4, Roosevelt Rd., Taipei, Taiwan, R.O.C. 106
Tel: (02)33662353
Email: ntuetds@ntu.edu.tw
意見箱
相關連結
館藏目錄
國內圖書館整合查詢 MetaCat
臺大學術典藏 NTU Scholars
臺大圖書館數位典藏館
本站聲明
© NTU Library All Rights Reserved