版控軟體svn的問題,透過圖書和論文來找解法和答案更準確安心。 我們找到下列免費下載的地點或者是各式教學

版控軟體svn的問題,我們搜遍了碩博士論文和台灣出版的書籍,推薦劉淼寫的 企業級DevOps技術與工具實戰 和51Testing軟體測試網的 測試工程師核心開發技術都 可以從中找到所需的評價。

這兩本書分別來自電子工業 和人民郵電所出版 。

國立臺北科技大學 電子工程系 黃柏鈞所指導 林育新的 具不可否認性版本控制系統 (2021),提出版控軟體svn關鍵因素是什麼,來自於版本控制系統、區塊鏈、非對稱式加密、無循環有向圖。

而第二篇論文國立陽明交通大學 資訊科學與工程研究所 游逸平所指導 李冠程的 使用抽象語法樹偵測有意義之程式碼更動與重複性 (2020),提出因為有 程式碼改動之偵測、抽象語法樹、樹狀資料結構之比對、靜態分析、軟體發展的重點而找出了 版控軟體svn的解答。

接下來讓我們看這些論文和書籍都說些什麼吧:

除了版控軟體svn,大家也想知道這些:

企業級DevOps技術與工具實戰

為了解決版控軟體svn的問題,作者劉淼 這樣論述:

本書系統全面地介紹了DevOps的現狀趨勢、基礎理論和實踐方法,對DevOps實踐中的架構設計、開發、測試、部署等各階段所需踐行的原則和方法進行了總結,並提出相關建議。以實戰為中心,對DevOps實踐中的常用工具進行了分類介紹和特性分析,並結合相關示例進行了使用說明和演示。 劉淼 資深架構師,PMP、OCP、CSM、HPE University講師,EXIN DevOps Professional與DevOps Master認證講師,曾擔任HPE GD China DevOps & Agile Leader,説明企業級客戶提供DevOps諮詢培訓以及實施指導。熟悉通信和金融

領域,有超過10年金融外匯行業的架構設計、開發、維護經驗,在十幾年的IT從業生涯中擁有了軟體發展設計領域接近全生命週期的經驗和知識積累。CSDN博客專家,博客地址為 https://liumiaocn.blog.csdn.net/。   張笑梅 IT從業15年,其中含5年歐美外包經驗,10多年國內行業諮詢服務與解決方案經驗,涉及電信、金融、航空等領域。先後服務于HPE、惠普、畢博等公司,曾負責過大中型專案實施開發與管理工作,擔任過產品經理、諮詢顧問、培訓講師及教練等職位。 目前致力於專案和組織的敏捷與DevOps轉型實施和培訓。EXIN Agile Master、DevOps Professi

onal、Lean IT、VeriSM、TSP、PSP模型認證講師,鳳凰沙盤/火星沙盤教練,CMMI 2.0 評估員,ISO 9K內審員,擁有CSM、SAFE、SAFE Advance Master、ITIL、SIGMA GB認證。   第1 章 DevOps 概述 1 1.1 什麼是DevOps 2 1.2 DevOps 能帶來什麼 3 1.3 DevOps 的現狀 5 1.4 常見的理解誤區 10 第2 章 DevOps 基礎理論 12 2.1 敏捷理論體系解讀 12 2.1.1 敏捷背景介紹 12 2.1.2 三大支柱解讀 13 2.1.3 四大核心價值觀及解讀 1

4 2.1.4 12 條原則及解讀 15 2.1.5 Scrum 敏捷框架 17 2.2 敏捷與DevOps 24 2.3 精益理論體系解讀 25 2.3.1 精益產生背景 25 2.3.2 精益IT 及其原則 25 2.4 精益與DevOps 29 2.4.1 節拍 29 2.4.2 交貨時間 29 2.4.3 度量指標 29 2.4.4 浪費種類 30 2.4.5 安燈拉繩 31 2.4.6 看板 31 2.4.7 改善 32 2.4.8 挑戰與對策 33 2.5 實踐案例分析 33 第3 章 構建企業的DevOps 文化 36 3.1 對失敗友好的架構與環境 36 3.1.1 對失敗友

好的架構與環境的特點 37 3.1.2 對失敗友好的架構與環境的設計原則 37 3.1.3 當失敗遇見複雜系統 40 3.1.4 保障複雜系統的安全 41 3.2 以高度信任為基石的企業文化 42 3.2.1 傳統製造業的懲罰文化 43 3.2.2 聚焦改善的免責事後分析 44 3.2.3 多角度的知識與經驗分享 45 3.3 持續學習與持續試驗 49 3.3.1 通過內部與外部會議促進人員技術成長 50 3.3.2 向生產環境中引入故障來增強彈性 50 3.3.3 持續學習與持續試驗的建議 51 3.4 常見的理解誤區 52 3.5 實踐經驗研究 54 第4 章 設計和優化軟體全生命週期相

關流程 56 4.1 持續評估與DevOps 成熟度模型 56 4.2 持續規劃的評估策略 57 4.3 持續集成的策略與原則 58 4.4 持續測試的策略與原則 58 4.5 持續部署的策略與原則 59 4.6 持續監控的策略與原則 59 4.7 持續運維的策略與原則 60 4.8 持續回饋的策略與機制 60 4.9 常見的理解誤區和實踐經驗 60 第5 章 DevOps 實踐中的設計與開發 62 5.1 傳統架構的痛點 62 5.2 DevOps 中的架構設計 62 5.2.1 康威定律的影響 63 5.2.2 耦合設計原則 64 5.2.3 獨立部署原則 66 5.2.4 自動部署策略

66 5.2.5 12 要素 68 5.2.6 應用擴容機制 68 5.3 環境一致性 69 5.3.1 環境一致性的重要性 69 5.3.2 常用工具介紹 69 5.4 版本管理實踐 71 5.4.1 版本管理的痛點 71 5.4.2 常用工具介紹 74 5.4.3 實踐經驗總結 75 5.5 製品管理實踐 75 5.6 代碼品質分析 77 第6 章 DevOps 實踐中的測試 78 6.1 傳統測試及其痛點 78 6.2 測試驅動開發 79 6.3 測試分類 81 6.4 測試策略 83 6.4.1 測試團隊結構重群組原則:測試團隊去中心化的應對策略 84 6.4.2 測試促進架構重構

策略:根據測試的回饋不斷優化系統架構 84 6.4.3 測試團隊技能提升策略:逐步推動測試團隊知識與技能的重建 84 6.4.4 各階段測試策略:分階段使用不同方式保證系統功能 85 6.5 自動化測試 85 6.5.1 自動化測試現狀 86 6.5.2 做還是不做:決策因素 86 6.5.3 自動化測試推行策略 88 6.5.4 自動化測試工具選型 89 6.6 實踐經驗研究 90 6.6.1 常見的實踐誤區 90 6.6.2 實踐案例 91 第7 章 DevOps 實踐中的部署 101 7.1 部署方式 101 7.1.1 藍綠部署 102 7.1.2 金絲雀部署 103 7.2 部署依

賴 104 7.2.1 架構的影響 104 7.2.2 基礎設施的影響 104 7.3 常用工具 106 7.4 實踐經驗總結 107 第8 章 DevOps 工具選型:開源與閉源 108 8.1 通用選型指標 108 8.1.1 系統限制要素 109 8.1.2 可用性 109 8.1.3 交互性 110 8.1.4 市場狀況 110 8.1.5 功能可裁剪度 111 8.2 開源/閉源選型指標 111 8.2.1 成本 112 8.2.2 更新頻度 112 8.2.3 改善速度 113 8.2.4 集成方式 113 8.2.5 文檔說明 114 8.3 選型模型介紹 115 8.4 實踐

經驗總結 115 第9 章 DevOps 工具:需求管理與缺陷追蹤 117 9.1 常用工具介紹 117 9.1.1 JIRA 117 9.1.2 Redmine 118 9.1.3 Trac 120 9.1.4 Bugzilla 121 9.2 詳細介紹:Redmine 121 9.2.1 安裝Redmine 121 9.2.2 設定Redmine 125 9.2.3 REST API 操作 130 9.3 需求管理工具選型比較 137 第10 章 DevOps 工具:持續集成 139 10.1 常用工具介紹 139 10.1.1 Jenkins 139 10.1.2 Apache Co

ntinuum 140 10.1.3 CruiseControl 141 10.2 詳細介紹:Jenkins 141 10.2.1 安裝Jenkins 142 10.2.2 設定Jenkins 144 10.3 持續集成實踐 146 10.3.1 Jenkins+GitLab 147 10.3.2 Jenkins+Docker 150 10.3.3 Jenkins pipeline 157 第11 章 DevOps 工具:版本管理 169 11.1 常用工具介紹 169 11.1.1 RCS 169 11.1.2 SVN 179 11.1.3 Git 180 11.1.4 GitLab 18

1 11.2 詳細介紹:GitLab 與開發模型 182 11.2.1 Git Flow 分支模型 182 11.2.2 GitLab+Git Flow 185 11.2.3 GitHub Flow 分支模型 200 11.2.4 GitLab+GitHub Flow 201 11.3 實踐經驗總結 205 第12 章 DevOps 工具:構建工具 208 12.1 常用工具介紹 208 12.1.1 Make 208 12.1.2 Maven 209 12.1.3 Gradle 209 12.1.4 MSBuild 210 12.2 詳細介紹:Maven 211 12.2.1 安裝Mave

n 211 12.2.2 Maven 的使用 211 12.3 詳細介紹:Gradle 214 12.3.1 安裝Gradle 214 12.3.2 Gradle 的使用 214 12.4 實踐經驗總結 221 第13 章 DevOps 工具:代碼品質 223 13.1 常用工具介紹 223 13.1.1 SonarQube 223 13.1.2 Frotify 224 13.1.3 Coverity 225 13.1.4 FindBugs 225 13.2 詳細介紹:SonarQube 226 13.2.1 安裝SonarQube 226 13.2.2 SonarQube 基礎 231 1

3.2.3 SonarQube 使用方式 239 13.3 代碼品質檢測實踐 244 13.3.1 代碼掃描與概要資訊獲取 245 13.3.2 指標資訊的獲取 249 13.3.3 測試指標與事前準備 259 13.3.4 測試指標實踐 261 13.3.5 專案與品質規約管理 272 第14 章 DevOps 工具:運維自動化 277 14.1 常用工具介紹 277 14.1.1 Ansible 277 14.1.2 Chef 277 14.1.3 Puppet 278 14.1.4 Saltstack 279 14.2 常用工具的使用 279 14.2.1 Ansible 的安裝與使用

279 14.2.2 Chef 的安裝與使用 280 14.2.3 Puppet 的安裝與使用 287 14.2.4 Saltstack 的安裝與使用 289 第15 章 DevOps 工具:測試自動化 292 15.1 常用工具介紹 292 15.1.1 xUnit 292 15.1.2 Selenium 293 15.1.3 Apache JMeter 293 15.1.4 Robot Framework 293 15.2 詳細介紹:Robot Framework 294 15.2.1 準備Python 294 15.2.2 安裝PIP 294 15.2.3 安裝Robot Frame

work 295 15.3 自動化測試工具的使用 296 15.3.1 使用Robot Framework 進行測試 296 15.3.2 使用Selenium 進行測試 300 第16 章 DevOps 工具:日誌監控 303 16.1 常用工具介紹 303 16.1.1 ELK 303 16.1.2 Splunk 306 16.1.3 Hygieia 308 16.2 詳細介紹:Hygieia 311 16.2.1 安裝配置 311 16.2.2 Hygieia 服務的啟動方式和說明 312 16.2.3 使用說明 314 16.3 實踐經驗總結 315 第17 章 DevOps 工具

:運維監控 316 17.1 常用工具介紹 316 17.1.1 Zabbix 316 17.1.2 Nagios 319 17.1.3 Grafana 323 17.1.4 InfluxDB 325 17.2 詳細介紹:InfluxDB 326 17.3 實踐中的注意事項及原則 330 第18 章 DevOps 工具:安全監控 331 18.1 常用工具介紹 331 18.1.1 Clair 331 18.1.2 Anchore 336 18.1.3 ClamAV 339 18.2 詳細介紹:安全掃描 344 18.2.1 Clair 鏡像安全掃描 344 18.2.2 Anchore 鏡

像掃描 348 18.2.3 ClamAV 病毒掃描 349 18.3 實踐經驗總結 350 第19 章 DevOps 工具:容器化 352 19.1 常用工具介紹 352 19.1.1 Docker 352 19.1.2 docker-compose 356 19.1.3 Kubernetes 357 19.2 詳細介紹:Docker 357 19.2.1 問題診斷 357 19.2.2 鏡像操作與容器操作 365 19.2.3 其他操作 381 19.3 詳細介紹:Kubernetes 384 19.3.1 管理資源 385 19.3.2 故障排查 390 19.3.3 故障應對 397

第20 章 DevOps 工具:鏡像私庫 407 20.1 常用工具介紹 407 20.1.1 Registry 407 20.1.2 Harbor 409 20.1.3 Nexus 414 20.2 詳細介紹:Harbor 420 第21 章 DevOps 工具:二進位製品管理 422 21.1 常用工具介紹 424 21.1.1 Apache Archiva 424 21.1.2 Artifactory 424 21.2 詳細介紹:Nexus 425 21.2.1 環境設定:Maven 私庫搭建 425 21.2.2 私庫使用:準備與設定Maven 427 21.2.3 私庫使用:設

定專案的pom 檔 428 21.2.4 私庫使用:執行maven 操作 429 21.3 實踐經驗總結 430 第22 章 DevOps 實踐中的安全機制 431 22.1 安全調查現狀 431 22.2 設計安全機制的整體策略 432 22.3 與安全工具的融合 436 22.4 持續評估和改善 438 22.5 實踐案例分析 439 第23 章 基於微服務和容器化的高可用架構 440 23.1 高可用架構設計 440 23.2 Kubernetes+微服務+DevOps 的實踐思路 443 23.2.1 整體原則 443 23.2.2 多層級的高可用性 444 23.2.3 專注于業

務開發的微服務 445 23.2.4 保駕護航的DevOps 446  

具不可否認性版本控制系統

為了解決版控軟體svn的問題,作者林育新 這樣論述:

版本控制是文件共享、交換、以及協作的關鍵技術之一。當前,已有許多版本控制的軟體系統可用,諸如Concurrent Versioning System (CVS)、Subversion (SVN)、以及Git等。現有之版本控制系統可建立在自行維護的伺服器上,亦或以雲端服務的形式提供給使用者。然而,這些中心化的版本控制系統架構往往使得版本控制系統無法提供中立、未經審查、過濾的服務。尤有甚者,中心化的系統架構易受分布式服務阻斷等惡意攻擊。此外,現有之版本控制系統無法高效的驗證共享文件的各個更新版的作者。有鑑於此,在本研究中,我們將區塊鏈與非對稱加密技術整合到Git等版本控制系統中。利用區塊鏈作者的

不可否認性以及非對稱式加密的零知識證明,我們可以保證所有寫入Git檔案庫的更動都不會被Git維護者等人惡意篡改,且檔案庫的所有更動的作者都可被其他人驗證與追蹤。為了降低資料與作者驗證的效能負荷,我們還提出將傳統線性的區塊鏈結構擴充為無循環有向圖的區塊結構,使得不同分支不會互相影響,而可獨立被驗證與追蹤。藉由一系列實驗,我們驗證了所提出系統設計的可行性與有效性,結果令人滿意。

測試工程師核心開發技術

為了解決版控軟體svn的問題,作者51Testing軟體測試網 這樣論述:

本書共7章,凝聚了51Testing軟體測試網在軟體測試培訓方面的精華內容。主要內容包括Linux系統入門知識、Linux Shell程式設計技術、Oracle和MySQL兩大主流資料庫的基本操作、配置管理工具SVN及Java和Python程式設計。   本書從測試的角度講述了軟體 測試人員需要掌握的開發技術,有助於讀者提升測試技能。   本書既適合測試人員閱讀,也可供相關專業人士參考。 5lTesting軟體測試網是專業的軟體測試服務供應商,為上海博為峰軟體技術股份有限公司旗下品牌,是國內人氣非常高的軟體測試門戶網站。51Testing軟體測試網始終堅持以專業技術為核心,

專注於軟體測試領域,自主研發軟體測試工具,為客戶提供全球領先的軟體測試整體解決方案,為行業培養優秀的軟體測試人才,並提供開放式的公益軟體測試交流平臺。51Testing軟體測試網的微信公眾號是“atstudy51”。 第1章Linux系統入門知識 1 1.1 Linux系統簡介 1 1.2 Linux系統的安裝 2 1.2.1 配置虛擬機器 2 1.2.2 安裝CentOS 7 1.3 Linux系統的基本使用方法 14 1.3.1 命令列與圖形化介面的選擇和配置 14 1.3.2 終端命令列與ls命令 16 1.3.3 線上說明命令 19 1.3.4 遠端登入Linux系

統 21 1.3.5 Linux系統的檔和目錄 26 1.3.6 Linux系統的檔打包與壓縮 47 1.4 Linux系統的管理 51 1.4.1 Linux系統的關機和重啟 51 1.4.2 用戶和組管理 53 1.4.3 磁片管理 60 1.4.4 安裝包管理 63 1.4.5 進程管理 68 1.4.6 網路管理 75 1.4.7 服務腳本 78 1.4.8 安全設置 79 1.5 Web伺服器環境的搭建 81 1.5.1 安裝LAMP 81 1.5.2 安裝Tomcat 88 1.6 在Linux系統下安裝Oracle 90 1.6.1 安裝資料庫前的系統組態 91 1.6.2 創建

Oracle使用者和目錄 92 1.6.3 修改環境變數 93 1.6.4 傳輸Oracle安裝包到Linux系統 97 1.6.5 安裝Oracle 98 1.6.6 測試是否成功安裝Oracle 104 第2章LinuxShell程式設計技術 108 2.1 LinuxShell概述 108 2.1.1 Shell 108 2.1.2 Shell腳本 108 2.1.3 Shell的版本區分 109 2.1.4 BASH的特點 109 2.2 Shell的“helloworld” 111 2.3 echo的應用 112 2.4 Shell變數 113 2.4.1 變數的定義和使用 113

2.4.2 刪除變數 113 2.4.3 唯讀變數 114 2.4.4 變數的類型 114 2.5 Shell的注釋 115 2.6 Shell程式設計中常用的資料類型 115 2.6.1 字串 116 2.6.2 Shell陣列 117 2.7 在Shell中傳遞參數 119 2.8 Shell基本運運算元 120 2.8.1 算術運運算元 120 2.8.2 關係運運算元 122 2.8.3 布林運運算元和邏輯運運算元 124 2.8.4 字串運運算元 125 2.9 Shell的printf命令 127 2.10 Shell流程控制 128 2.10.1 if…else條件控制 129

2.10.2 for迴圈 129 2.10.3 while迴圈 130 2.10.4 case語句 132 2.10.5 跳出迴圈 133 2.11 Shell函數 136 2.11.1 無返回值的函式呼叫示例 136 2.11.2 有返回值的函式呼叫示例 136 2.11.3 帶參數的函式呼叫示例 137 2.12 Shell輸入/輸出重定向 138 2.12.1 輸出重定向 139 2.12.2 輸入重定向 139 2.12.3 HereDocument 141 2.12.4 /dev/null文件 142 2.12.5 輸入/輸出重定向的應用示例 142 2.13 Shell檔的包含 

143 第3章 Oracle的使用 145 3.1 資料庫原理 145 3.1.1 基本概念 145 3.1.2 常見的資料庫產品 148 3.1.3 資料庫模型 149 3.1.4 關聯式資料庫 152 3.2 Oracle的安裝與配置 159 3.2.1 支援的平臺 159 3.2.2 安裝過程 160 3.2.3 創建資料庫 164 3.2.4 確認安裝 166 3.2.5 資料庫常用管理命令 174 3.2.6 資料庫體系結構 178 3.3 Oracle企業管理器 186 3.3.1 企業管理器概述 186 3.3.2 創建表空間 186 3.3.3 創建用戶 189 3.3.4 

創建表 193 3.3.5 創建約束 196 3.4 標準SQL語句 200 3.4.1 資料定義語言 201 3.4.2 資料操縱語言 203 3.4.3 資料查詢語言 204 3.4.4 資料控制語言 215 3.4.5 SQL語句性能優化 216 3.5 PL/SQL程式設計 225 3.5.1 PL/SQL概述 225 3.5.2 基本語法 227 3.5.3 記錄類型 229 3.5.4 存儲過程 230 3.5.5 函數 231 3.5.6 遊標 233 3.5.7 觸發器 235 3.5.8 事務 237 3.6 其他資料庫物件 240 3.6.1 索引 240 3.6.2 視圖

 245 3.6.3 同義詞 246 3.6.4 序列 248 3.6.5 備份 249 3.6.6 Oracle內置函數 250 第4章 MySQL的使用 253 4.1 MySQL基礎 253 4.1.1 MySQL概述 253 4.1.2 MySQL的安裝 253 4.1.3 MySQL的主流資料庫連接工具 256 4.1.4 MySQL資料類型 257 4.2 在MySQL中使用SQL 259 4.2.1 表的基本操作 259 4.2.2 表的查詢 266 4.2.3 表的資料操作 289 4.2.4 事務 292 4.2.5 視圖 292 4.2.6 存儲過程 293 4.3 My

SQL進階 295 4.3.1 MySQL的用戶管理 296 4.3.2 通過MySQL匯出資料 299 4.3.3 通過MySQL導入資料 301 第5章 配置管理工具SVN 303 5.1 安裝和配置SVN 303 5.2 SVN常用操作和功能 305 5.2.1 Import 305 5.2.2 Checkout 306 5.2.3 Add/Delete 307 5.2.4 Commit 308 5.2.5 Update 308 5.2.6 Tag/Branch/Merge 309 5.2.7 RevisionGraph 311 5.2.8 Diffwithpreviousversio

n 312 5.2.9 Showlog 312 5.2.10 版本回溯 313 5.3 SVN的簡要原理 314 5.3.1 SVN概述 314 5.3.2 其他常見配置管理工具 315 5.3.3 每日構建 316 5.4 SVN的版本控制案例 316 5.5 版本控制系統的發展歷史 319 5.5.1 本地版本控制系統 319 5.5.2 集中化的版本控制系統 319 5.5.3 分散式版本控制系統 320 5.5.4 檔差異版本控制系統 320 5.5.5 直接為版本控制系統拍快照 321 第6章 Java程式設計 323 6.1 Java概述 323 6.2 搭建Java環境 324

6.2.1 搭建JDK環境 324 6.2.2 第一個Java程式 325 6.2.3 Java中的注釋 327 6.3 Eclipse集成開發工具 329 6.3.1 Eclipse的使用 329 6.3.2 利用Eclipse開發Java程式的步驟 329 6.4 Java資料類型、變數、運運算元及陣列 331 6.4.1 Java資料類型 331 6.4.2 Java變數 334 6.4.3 Java運運算元 335 6.4.4 Java陣列 339 6.5 Java選擇結構 340 6.5.1 Java單分支結構 341 6.5.2 Java雙分支結構 341 6.5.3 Java多

分支結構 342 6.5.4 switch多重分支結構 343 6.5.5 Java選擇結構的比較 345 6.6 Java迴圈結構 345 6.6.1 while迴圈 345 6.6.2 do...while迴圈 346 6.6.3 while與do...while的比較 347 6.6.4 for迴圈 347 6.6.5 break關鍵字 348 6.6.6 continue關鍵字 349 6.6.7 Java迴圈嵌套 349 6.7 Java物件導向程式設計中的類與物件 350 6.7.1 類的定義 351 6.7.2 物件的產生和使用 353 6.7.3 方法的重載 355 6.7.4

 this關鍵字 356 6.8 Java物件導向程式設計中的封裝 357 6.8.1 封裝中常見的getter/setter方法 357 6.8.2 封裝控制符存取權限 358 6.9 Java物件導向程式設計中的繼承 359 6.9.1 繼承的實現 359 6.9.2 方法的重寫 360 6.9.3 super關鍵字 361 6.10 Java物件導向程式設計中的多態 363 6.11 抽象類別 365 6.11.1 抽象方法及抽象類別 365 6.11.2 關於抽象類別和抽象方法的注意事項 366 6.12 介面 366 6.12.1 介面的定義 366 6.12.2 介面的使用 367

6.12.3 介面與多態的實現 368 6.13 JavaAPI 370 6.14 Java包 372 6.14.1 包的創建 372 6.14.2 包的使用 373 6.15 Java中的異常 374 6.15.1 Java中的異常類 374 6.15.2 Java中異常的捕獲 376 6.15.3 Java中的異常處理方法 378 6.15.4 自訂異常類 380 第7章 Python程式設計 382 7.1 Python的特點 382 7.2 Python環境的搭建與啟動 383 7.2.1 搭建Python環境 383 7.2.2 啟動Python 384 7.3 初識Python

及IDLE 385 7.3.1 Python的靈活性 385 7.3.2 Python猜數字遊戲 386 7.4 Python變數和資料類型 387 7.4.1 Python變數 387 7.4.2 整型、浮點型、布林型和字串型 389 7.4.3 列表 391 7.4.4 元組 393 7.4.5 字典 395 7.5 Python程式結構 397 7.5.1 分支結構 397 7.5.2 while迴圈結構 399 7.5.3 for迴圈結構 401 7.5.4 Python中猜數字遊戲的改進 402 7.6 Python函數 405 7.6.1 自訂函數 405 7.6.2 按值傳遞參數

和按引用傳遞參數 406 7.6.3 參數的其他傳遞形式 406 7.7 Python物件導向程式設計 408 7.7.1 類和方法 408 7.7.2 模組 409 7.7.3 異常 411 7.7.4 數據的讀取 413

使用抽象語法樹偵測有意義之程式碼更動與重複性

為了解決版控軟體svn的問題,作者李冠程 這樣論述:

版本控制已經被廣泛的應用於現今的軟體開發領域,從大型的開源專案到個人的獨立專案,幾乎都會透過 Git、SVN 或是 CSV 等版本控制軟體來進行管理,而其中一項重要的元件就是差異比對工具,它能對專案程式碼的任意兩個版本進行比對。然而,絕大多數的差異比對工具都是以單行文字為單位進行比對,這導致了它們產生的報告中含有一些沒有意義的資訊,例如:因為變更程式碼風格而造成空白與換行的新增或刪除。本論文提出了一個叫做 smart-diff 的工具,smart-diff 是基於抽象語法樹的比對來偵測 C 語言中多種不同類別且有意義的程式碼更動以及可能是重複撰寫的程式碼。我們首先將相同結構的抽象語法樹進行比

對,接著再透過我們所提出的最長共同子樹演算法找出相似的抽象語法樹,而最長共同子樹演算法則是從最長共同子序列演算法修改而來。我們選擇與以單行文字為單位進行程式碼比對的 GitHub 提交頁面相比,實驗結果顯示,smar-tdiff 的報告可以幫助使用者專注於有意義的程式碼更動並且也提供了更精準的定位,相較於 GitHub 提交頁面所顯示的結果,smart-diff 的報告內容對於使用者是更加友善的,而從實驗的統計數據中可以發現,smart-diff 在 Curl、Lua、Redis 以及 Nginx 這些開源專案的部分提交中所發現的程式碼更動數量與 GitHub 所顯示的資訊相比下降了 40.0

0% 到 89.39%,導致數量下降的原因是因為 smartdiff 會略過沒有意義的更動資訊,並且還能以 AST 層級對這些更動做出適合的分類。最後,我們也展示了smart-diff 找出程式碼潛在問題的能力,這些問題包括物件錯誤的考以及重複撰寫的程式碼,因此,我們相信 smart-diff 也有潛能可以成為程式碼檢閱的工具。