跳到主要內容

簡易檢索 / 詳目顯示

研究生: 林庭書
Ting-Shu Lin
論文名稱: Change History Tracing Tool for Arbitrary Programming Language
指導教授: 鄭永斌
Yung-Pin Cheng
口試委員:
學位類別: 碩士
Master
系所名稱: 資訊電機學院 - 軟體工程研究所
Graduate Institute of Software Engineering
論文出版年: 2016
畢業學年度: 104
語文別: 中文
論文頁數: 50
中文關鍵詞: 版本控制系統
外文關鍵詞: VCS
相關次數: 點閱:16下載: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章、 緒論 1 1-1 研究動機 1 1-2 問題描述 2 第2章、 背景與相關研究 4 2-1 版本控制系統 4 2-2 版本控制系統相關工具 4 2-3 Git 版本控制系統之原理與侷限 6 2-3-1 Git原理簡介 6 2-3-2 Git 的侷限 6 2-4 整合開發工具 7 2-5 程式分析工具 8 2-6 相關研究 9 2-6-1 程式歷史紀錄分析探勘 9 2-6-2 基於版本控制系統之開發輔助工具 10 第3章、 iNob – Code History Tracing Tool 13 3-1 問題描述 13 3-1-1 使用傳統Git工具追蹤Bug發生點的難題 13 3-1-2 使用傳統Git工具追蹤程式碼演變歷史的難題 14 3-1-3 現實中的難題案例 15 3-1-4 iNob的挑戰 19 3-2 設計理念 19 第4章、 系統設計與實作 24 4-1 系統架構 24 iNob主程式架構 24 iNob與Eclipse Plugin的合作 25 4-1-1 Source Code Analyzer 25 4-1-2 History Tracer 27 4-1-3 User Interface 27 4-2 實作方法 27 4-2-1 JGit 27 4-2-2 Eclipse Plugin 28 4-2-3 Java Extensible Application 29 第5章、 實驗評估 31 5-1 評估方法 31 5-2 效能評估 31 5-3 可擴充性評估 31 5-4 實用案例 33 5-4-1 TaaS 團隊使用iNob找出問題程式碼源頭 33 5-4-2 xDiva 使用iNob尋找因不明原因失敗的測試案例 35 第6章、 結論與未來展望 39 未來展望 39 第7章、 參考文獻 41

    [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.

    QR CODE
    :::