| 研究生: |
林庭書 Ting-Shu Lin |
|---|---|
| 論文名稱: | Change History Tracing Tool for Arbitrary Programming Language |
| 指導教授: |
鄭永斌
Yung-Pin Cheng |
| 口試委員: | |
| 學位類別: |
碩士 Master |
| 系所名稱: |
資訊電機學院 - 軟體工程研究所 Graduate Institute of Software Engineering |
| 論文出版年: | 2016 |
| 畢業學年度: | 104 |
| 語文別: | 中文 |
| 論文頁數: | 50 |
| 中文關鍵詞: | 版本控制系統 |
| 外文關鍵詞: | VCS |
| 相關次數: | 點閱:19 下載:0 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
現今的版本控制系統及相關工具,因為所儲存的資訊缺乏對程式原始碼的理解,而導致軟體開發人員在對版本紀錄進行查詢時,難以得到他們實際所關心的資訊。例如開發者想要針對一個在許久以前能運作正常,卻在近期的測試中發生錯誤的方法(method)進行追蹤。為了找出造成錯誤的更動,由於目前版本控制系統只能找到關於檔案層級的變動紀錄,會有大量與目標無關的變動被顯示出來,而難以從中找出真正與該方法有關係的變動紀錄。
本論文針對現有版本控制系統的不足,提出一個輔助追蹤版本歷史紀錄之工具iNob。本工具能以高效的方式對程式原始碼進行簡易的分析,以讓軟體開發者以方法為單位,查找其於版本控制系統(Version Control System)中的變更紀錄。使用者可以透過簡單而直觀的操作,得到出他們所關注的變更紀錄。透過這樣的輔助,能幫助開發者更加有效地除錯以及瞭解程式碼變更歷程,從而提高開發效率並降低程式維護成本。本工具同時也有著高度的擴充性,能夠藉由簡單的方式更換部分元件,以支援不同的程式語言。
Version Control Systems(VCS) and related tools nowadays have an obvious problem: all data are saved as pure text format. The information of a program such as structure and elements is ignored from these tools. When developers try to trace history of a program, they can only get textual information from VCS. In many practical cases, it’s hard to find the information that developers really care about, changes of a method for example.
In this research, we propose iNob, a VCS assistant tool for this problem. iNob can search and analyze source code stored in VCS effectively. With the assistance of iNob, developers can search the change history of a method in VCS. Using iNob, developers can focus on code change history of a program element, such as method or others, making developing and debugging more efficient. iNob also has good extendibility: users can extend iNob to support different programming languages in a very efficient way without introducing heavy techniques such as programming language parsers.
[1] Subversion. Available: https://subversion.apache.org/
[2] Git. Available: https://git-scm.com/
[3] TortoiseSVN. Available: https://tortoisesvn.net
[4] SourceTree. Available: https://www.sourcetreeapp.com
[5] GitHub. Available: http://github.com/
[6] Bitbucket. Available: https://bitbucket.org
[7] GitLab. Available: https://gitlab.com
[8] Sourcegraph. Available: https://sourcegraph.com
[9] Visual Studio. Available: https://www.visualstudio.com/
[10] Eclipse. Available: https://eclipse.org/
[11] IntelliJ IDEA. Available: https://www.jetbrains.com/idea/
[12] RubyMine. Available: https://www.jetbrains.com/ruby/
[13] Visual Assist. Available: www.wholetomato.com
[14] ReSharper. Available: https://www.jetbrains.com/resharper
[15] Pylint. Available: https://www.pylint.org/
[16] FxCop. Available: https://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx
[17] PySonar. Available: https://github.com/yinwang0/pysonar2
[18] RubySonar. Available: https://github.com/yinwang0/rubysonar
[19] ydiff. Available: https://github.com/yinwang0/ydiff
[20] R. Wu, H. Zhang, S. Kim, and S.-C. Cheung, "ReLink: recovering links between bugs and changes," presented at the Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, Szeged, Hungary, 2011.
[21] A. Mockus and L. G. Votta, "Identifying reasons for software changes using historic databases," in Software Maintenance, 2000. Proceedings. International Conference on, 2000, pp. 120-130.
[22] A. Schröter, T. Zimmermann, R. Premraj, and A. Zeller, "If your bug database could talk," presented at the Proceedings of the 5th International Symposium on Empirical Software Engineering, 2006.
[23] T. Zimmermann and P. Weißgerber, "Preprocessing CVS Data for Fine-Grained Analysis," presented at the MSR'04, Edinburgh, Scotland, UK, 2004.
[24] J. Śliwerski, T. Zimmermann, and A. Zeller, "When do changes induce fixes?," SIGSOFT Softw. Eng. Notes, vol. 30, pp. 1-5, 2005.
[25] A. E. Hassan and R. C. Holt, "The top ten list: dynamic fault prediction," in 21st IEEE International Conference on Software Maintenance (ICSM'05), 2005, pp. 263-272.
[26] S. Kim, T. Zimmermann, J. E. J. Whitehead, and A. Zeller, "Predicting Faults from Cached History," in 29th International Conference on Software Engineering (ICSE'07), 2007, pp. 489-498.
[27] T. Zimmermann, P. Weisgerber, S. Diehl, and A. Zeller, "Mining Version Histories to Guide Software Changes," presented at the Proceedings of the 26th International Conference on Software Engineering, 2004.
[28] Z. Tóth, G. Novák, R. Ferenc, and I. Siket, "Using Version Control History to Follow the Changes of Source Code Elements," in Software Maintenance and Reengineering (CSMR), 2013 17th European Conference on, 2013, pp. 319-322.
[29] Y. Y. Lee, D. Marinov, and R. E. Johnson, "Tempura: Temporal Dimension for IDEs," in 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015, pp. 212-222.
[30] Y. Yoon, B. A. Myers, and S. Koo, "Visualization of Fine-Grained Code Change History," presented at the IEEE Symposium on Visual Languages and Human-Centric Computing, 2013.
[31] WebStorm. Available: https://www.jetbrains.com/webstorm/
[32] C# Keyword: Partial Available: https://msdn.microsoft.com/en-us/library/wbx7zzdd.aspx
[33] JGit. Available: http://www.eclipse.org/jgit
[34] libgit2. Available: https://libgit2.github.com
[35] NodeGit. Available: http://www.nodegit.org/
[36] 王浚懿, "Locating Interested Code by Program Execution Paths with Debugger," 碩士, 軟體工程研究所, 國立中央大學, 桃園縣, 2013.