溫彥 張峰 仇麗青 趙衛(wèi)東
摘 要:Java Web是計算機專業(yè)核心實踐課程。傳統(tǒng)課程管理方法需要教師手動逐個部署、運行并檢查學(xué)生項目程序,效率極低且極易發(fā)生錯誤,實現(xiàn)Java Web課程項目自動管理和分析勢在必行。近年來飛速發(fā)展的在線教育、云計算及程序在線評判系統(tǒng)為該類需要復(fù)雜分布式部署和運行環(huán)境的課程項目管理提供了新思路。因此,設(shè)計并實現(xiàn)一個基于云環(huán)境的Java Web課程管理系統(tǒng)。該系統(tǒng)可實現(xiàn)學(xué)生提交課程項目的云端在線自動部署和運行,解決其中負載均衡、命名沖突等問題,并提供項目相似性檢測等分析功能。與人工評閱方法相比,該系統(tǒng)可節(jié)省至少57%的評閱時間,同時可提供準(zhǔn)確性達97%的項目相似性檢測功能,大幅提高Java Web課程管理自動化程度和教師工作效率。
關(guān)鍵詞:在線教育;Java Web;云平臺;課程管理
DOI:10. 11907/rjdk. 201284 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
中圖分類號:TP319文獻標(biāo)識碼:A 文章編號:1672-7800(2020)007-0103-05
Online Deployment and Analysis System of Java Web Course Projects Based on Cloud Environment
WEN Yan, ZHANG Feng, QIU Li-qing, ZHAO Wei-dong
(College of Computer Science and Engineering, Shandong University of Science and Technology, Qingdao 266590,China)
Abstract: Java Web is a core practical course for computer-related majors. Traditional course management methods require teachers to manually deploy, run, and check student programs one by one, which is extremely inefficient and prone to errors. It is imperative to implement the automatic management and analysis of Java Web course projects. In recent years, the rapid development of online education, cloud computing, and online judge systems have provided new ideas for such course project management that requires complex distributed deployment and operating environments. Hence this article designs and implements a Java Web course management system based on the cloud environment. This system implements the cloud-based automatic online deployment and operation of Java Web projects submitted by students, resolves the problems of load balancing, naming conflicts, and provides projects analysis functions such as similarity detection. Compared with the manual review method, the system can save at least 57% of the review time, and detect the similarity between projects with an accuracy of 97%. This system greatly improves the automation degree of Java Web course management and teachers work efficiency.
Key Words: online education; Java Web; cloud platform; curriculum management
0 引言
互聯(lián)網(wǎng)和云計算的普及與發(fā)展極大推動了教育事業(yè)的發(fā)展,使在線教育成為教育發(fā)展新動力與教育改革趨勢及發(fā)展方向。在線教育作為一種“云服務(wù)”,突破了時間和地理局限性,也突破了對教師、學(xué)生身份的限制,使優(yōu)質(zhì)教學(xué)資源可在全球范圍內(nèi)共享,使教學(xué)滿足個性化需求,極大提高了教學(xué)效率[1]。在線教育經(jīng)過十多年的發(fā)展,在教育體系中扮演著重要角色,涌現(xiàn)出包括超星、雨課堂、中國Mooc等優(yōu)質(zhì)平臺。計算機專業(yè)存在一項特殊的云服務(wù)——程序在線評判系統(tǒng)(Online Judge,OJ),它被廣泛應(yīng)用于程序設(shè)計相關(guān)課程的作業(yè)管理中,可自動完成程序提交、編譯和執(zhí)行,并通過預(yù)先設(shè)計的測試數(shù)據(jù)檢驗程序源代碼正確性[2]。OJ系統(tǒng)一方面切實提高了學(xué)生編程實踐能力,另一方面提高了教師工作效率和正確率。然而傳統(tǒng)OJ系統(tǒng)局限性較大,如僅能評判邏輯和結(jié)構(gòu)簡單的玩具項目,無法處理涉及用戶圖形界面、文件操作、數(shù)據(jù)庫和Web交互等功能的程序;僅支持單文件評判,不支持復(fù)雜項目結(jié)構(gòu);對程序書寫格式要求較為嚴(yán)格;評判方式較為單一,僅支持通過輸出字符串比對形式進行評判等。因此OJ系統(tǒng)對于一些大型程序的評判能力幾乎為0。
Java Web及其相關(guān)課程如Web前端設(shè)計、Java EE框架技術(shù)是高校計算機專業(yè)中重要的實踐技術(shù)課程,以Java Web為核心的技術(shù)體系是當(dāng)前企業(yè)級信息管理系統(tǒng)的主流技術(shù)[3],學(xué)好這門課程對于學(xué)生了解分布式系統(tǒng)運行機制、提高實踐能力具有重要作用[4]。在該課程中,學(xué)生提交的作業(yè)項目需要復(fù)雜的分布式物理部署環(huán)境,包含復(fù)雜的文件結(jié)構(gòu)且需應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器和其它Web組件支撐。傳統(tǒng)Java Web作業(yè)管理所需的教師人工成本過高:①教師需手動將項目和數(shù)據(jù)部署至應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器上,并進行必要的系統(tǒng)配置,啟動服務(wù)器,并逐個運行文件,檢查結(jié)果。該過程需要大量時間和精力,且配置過程的細微差錯會影響程序運行甚至導(dǎo)致程序無法啟動;②Java Web作業(yè)一般代碼量較大、文件結(jié)構(gòu)也相對復(fù)雜,教師需逐個查看源文件,且很難判斷學(xué)生獨立完成情況。
為了解決上述問題,對Java Web課程作業(yè)進行在線管理、自動部署和自動分析十分必要。因此,本文提出針對Java Web課程項目的在線自動部署與分析系統(tǒng),可實現(xiàn)在線作業(yè)管理、在線遠程自動部署作業(yè)項目、多文件項目相似度分析等功能,優(yōu)化作業(yè)管理中重復(fù)繁瑣的工作,并依靠數(shù)據(jù)分析,為杜絕作業(yè)抄襲等不良現(xiàn)象提供參考。
1 相關(guān)技術(shù)與系統(tǒng)
1.1 OJ系統(tǒng)
在線判題(Online judge,OJ)系統(tǒng)起源于ACM國際大學(xué)生程序設(shè)計競賽(ACM International Collegiate Programming Contest)和信息學(xué)奧林匹克競賽(Olympiad In Informatics),OJ系統(tǒng)負責(zé)自動判題和排名。經(jīng)過近 40 年發(fā)展,ACM 國際大學(xué)生程序設(shè)計競賽已發(fā)展成為全球最具影響力的大學(xué)生程序設(shè)計競賽[5-6]。當(dāng)前,國內(nèi)外高校部分計算機程序設(shè)計相關(guān)課程作業(yè)和實驗采用OJ系統(tǒng)進行考核[7]。用戶可在線編輯、提交程序,而后系統(tǒng)對源代碼進行編譯和執(zhí)行,通過預(yù)先設(shè)計的測試數(shù)據(jù)檢驗程序正確性。其中,在線自動判題是核心功能,依賴于服務(wù)器端編譯器。此外,大多數(shù)OJ系統(tǒng)包含實現(xiàn)代碼相似度檢測,以避免抄襲現(xiàn)象。
國內(nèi)外有諸多知名的OJ系統(tǒng)[8],西班牙Valladolid大學(xué)OJ系統(tǒng)(UVA)是全球最大最老牌的OJ之一,題目數(shù)量堪稱之最;POJ是北京大學(xué)的在線評測系統(tǒng),題目數(shù)量很多,難度不一,OJ各項功能也很完善,還提供免費的OJ系統(tǒng)下載,學(xué)生可以自行搭建OJ;ZOJ是浙江大學(xué)的在線評測系統(tǒng),是國內(nèi)起步最早的OJ之一,系統(tǒng)友好性不如POJ,但功能并不差;HUSTOJ是華中科技大學(xué)的在線評測系統(tǒng),其中以Virtual Judge功能最為著名,它無需測試數(shù)據(jù),可直接使用其它OJ上的題目。
目前各高校在線OJ系統(tǒng)僅能處理較為簡單的程序,僅支持單文件評判,對提交程序的格式要求也較為嚴(yán)格,對于Java Web這類分布式環(huán)境下包含諸多組件和復(fù)雜文件結(jié)構(gòu)的大型程序的處理能力非常有限。
1.2 應(yīng)用程序自動部署
對普通Web項目實現(xiàn)自動部署相對常見,已有較成熟的技術(shù)和方法[9-10],如最常見的持續(xù)集成技術(shù)Jenkins[11-12],使用Jenkins可編寫腳本關(guān)聯(lián)Git、SVN等代碼托管工具及Maven、Ant等依賴管理和項目構(gòu)建的工具。一個典型方案是Jenkins集成Git和Maven,代碼通過Git發(fā)布版本,之后拉取Git中相應(yīng)版本代碼,使用Maven編譯并發(fā)布到Tomcat,Jenkins再重啟Tomcat,完成自動部署。
當(dāng)前主流持續(xù)集成技術(shù)大多是對已知文件結(jié)構(gòu)項目進行部署或?qū)σ巡渴鸷玫捻椖窟M行更新,若待部署項目的屬性(項目名、目錄結(jié)構(gòu)等)未知,則不能采用該技術(shù)。
1.3 程序相似度檢測
程序相似度檢驗的目的是發(fā)現(xiàn)程序文本、結(jié)構(gòu)、語義、功能等方面的相似性,是在GitHub、SourceForge等大型代碼庫上進行代碼檢索的核心功能,也是判斷程序是否具有抄襲現(xiàn)象的主要依據(jù)[13],主要包含兩大類方法[14]。一種是屬性計數(shù)(Attribute counting)技術(shù),它是最早的程序代碼相似性檢測技術(shù),其主要思想是對程序的一些統(tǒng)計屬性進行處理,而不考慮程序內(nèi)部結(jié)構(gòu)[15]。另一種是結(jié)構(gòu)度量技術(shù),根據(jù)對程序建模粒度的不同,可分為3種方法:①基于Token的檢測方法[16-17],即將代碼看作Token(詞)序列,并對其中的標(biāo)識符進行統(tǒng)一處理,利用最長公共子序列、后綴樹匹配等算法計算相似度,能夠發(fā)現(xiàn)標(biāo)識符重命名等代碼復(fù)制情況,實現(xiàn)效率較高,但因缺乏程序邏輯信息,準(zhǔn)確率有限;②基于語法樹的相似性檢測方法[18-19],包含程序語法邏輯,效果優(yōu)于前兩種方法,但由于語法樹結(jié)構(gòu)龐大,運行樹的匹配運算復(fù)雜度很高;③基于程序依賴圖的檢測方法[20-21],根據(jù)語法結(jié)構(gòu)和數(shù)據(jù)流轉(zhuǎn)關(guān)系構(gòu)建程序依賴關(guān)系圖,通過子圖匹配、程序片段運行結(jié)果匹配等方法檢測程序相似性,包含程序從語法和語義層面的邏輯信息,具有較好的準(zhǔn)確率,但復(fù)雜度非常高。結(jié)構(gòu)度量是目前的主流技術(shù),并配有MOSS、SIM等成熟工具。
綜上所述,OJ系統(tǒng)為程序設(shè)計類課程自動化管理提供了思路,Java Web課程項目可通過在線自動部署和運行的方式節(jié)省人力成本。當(dāng)前對Web項目的自動部署以及程序相似性檢測技術(shù)已積累一定的研究,但如果待部署項目的屬性未知,則已有部署方法適用性有限;且學(xué)生數(shù)量多,提交項目量大,對系統(tǒng)性能要求較高,需要考慮項目部署環(huán)境和部署方式,并解決負載均衡等問題。在對Java Web項目進行相似性檢測時,需要在已有程序相似性檢測算法基礎(chǔ)上,針對復(fù)雜目錄結(jié)構(gòu)設(shè)計多文件項目相似性檢測算法,這些是本文系統(tǒng)設(shè)計面臨的挑戰(zhàn)。
2 系統(tǒng)功能與架構(gòu)設(shè)計
本文系統(tǒng)基本功能和架構(gòu)如圖1所示。該Java Web類課程管理系統(tǒng)提供的業(yè)務(wù)功能包括用戶管理、課程管理、通知管理、項目管理等,其中項目管理是系統(tǒng)核心,包括動態(tài)部署學(xué)生提交項目、項目相似度檢驗等。系統(tǒng)包含客戶端、本地服務(wù)器、遠程服務(wù)器。由于學(xué)生提交項目需要動態(tài)裝載、運行和卸載,與本文課程管理系統(tǒng)彼此獨立運行,因此使用本地和遠程雙應(yīng)用程序服務(wù)器,并搭載本地和遠程雙數(shù)據(jù)庫服務(wù)器。遠程服務(wù)器主要運行學(xué)生提交的應(yīng)用;本地服務(wù)器主要運行課程管理系統(tǒng),并作為學(xué)生提交應(yīng)用的元數(shù)據(jù)引擎和動態(tài)部署引擎。由于待部署項目數(shù)量較多,測試時服務(wù)器訪問量較大,使用單個Tomcat實例部署所有學(xué)生的項目不能滿足系統(tǒng)性能和穩(wěn)定性要求,因此使用云平臺作為遠程服務(wù)器,在其上搭建Tomcat集群和MySQL服務(wù)器以滿足應(yīng)用訪問的性能需求。本地服務(wù)器則根據(jù)遠程云主機上Tomcat集群的實際運行情況,對應(yīng)用程序進行動態(tài)部署,實現(xiàn)負載均衡。同時需要處理目錄合法性校驗、應(yīng)用程序命名沖突、應(yīng)用程序和數(shù)據(jù)庫關(guān)聯(lián)等問題。此外,還為教師用戶提供一些輔助功能,包括瀏覽器端查看代碼、入口web頁面檢測等功能,以協(xié)助教師高效評價學(xué)生程序。
課題組對該系統(tǒng)進行了一個學(xué)期兩個平行班的試用和對比分析。在原工作環(huán)境下,教師一學(xué)期布置9個小型項目和1個大型項目,對于小型項目,無異常情況下手動部署項目和數(shù)據(jù)庫的時間約為6分鐘,運行和查看項目的時間約為5分鐘,查看源文件的時間約為10分鐘;對于大型項目,運行和查看項目的時間約為10分鐘,查看源文件的時間約為20分鐘。學(xué)生提交程序出現(xiàn)異常的概率約為40%,調(diào)試異常需要10~30分鐘時間不等。因此,對于一個學(xué)生所有項目評閱時間約為305分鐘。此外,教師還需花大量時間進行項目相似性比對以發(fā)現(xiàn)抄襲現(xiàn)象,這段時間無法定量描述。而采用該課程項目自動管理系統(tǒng)后,項目和數(shù)據(jù)庫被自動部署,因此這段時間被節(jié)省;學(xué)生可以直觀查看項目運行狀態(tài),程序在教師端出現(xiàn)異常的概率為0,教師調(diào)試時間被節(jié)省。教師僅需運行和查看項目,還可以直接在線查看源文件,不需要操作文件系統(tǒng),因此這段時間可節(jié)省30%,則此時一個學(xué)生所有項目修改時間約為132分鐘,節(jié)約了近57%的時間。
3 基于Tomcat集群的遠程分布式自動部署過程實現(xiàn)
3.1 項目遠程自動部署流程
當(dāng)學(xué)生提交作業(yè)時,上傳應(yīng)用程序的打包文件(WAR文件)及數(shù)據(jù)庫腳本文件(SQL文件)。為了有效利用主機資源,Tomcat集群采用單主機多實例方式,即一臺機器允許多個Tomcat實例,為每個Tomcat實例配置不同的端口。應(yīng)用的主機地址、端口號、webapp路徑等參數(shù)被保存在本地數(shù)據(jù)庫中,作為遠程應(yīng)用的元數(shù)據(jù)。部署WAR文件時,根據(jù)各實例實際運行情況采用一定的負載均衡策略選擇目標(biāo)實例。為了使項目及其數(shù)據(jù)庫能有效關(guān)聯(lián),采用單數(shù)據(jù)庫實例方式,并要求學(xué)生在編寫代碼時使用本地數(shù)據(jù)庫及標(biāo)準(zhǔn)端口。為了防止學(xué)生上傳同名項目造成命名沖突和項目覆蓋,對應(yīng)用程序進行統(tǒng)一命名管理。具體指采用學(xué)生標(biāo)識+作業(yè)標(biāo)識以重命名項目,可保障每位學(xué)生每次作業(yè)項目具有全局唯一標(biāo)識。為了防止學(xué)生頻繁上傳項目導(dǎo)致服務(wù)器崩潰,應(yīng)當(dāng)及時卸載舊版本應(yīng)用程序。選擇主機后,獲取目標(biāo)Tomcat服務(wù)器的應(yīng)用部署目錄,使用基于SSH2協(xié)議的JSch框架遠程執(zhí)行部署前的校檢腳本,主要檢測部署目錄合法性,即是否已有相同項目的目錄存在,如有則清空目錄;然后上傳項目WAR包,執(zhí)行自動部署腳本,解壓WAR包,部署項目并重啟Tomcat;最后,如果項目需要使用數(shù)據(jù)庫,則在數(shù)據(jù)庫服務(wù)器上為程序創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫與應(yīng)用實現(xiàn)一一對應(yīng),而后使用MyBatis中的ScriptRunner遠程批量執(zhí)行SQL腳本,將數(shù)據(jù)導(dǎo)入遠程數(shù)據(jù)庫中。
3.2 負載均衡策略
為有效應(yīng)用分配Tomcat實例是該系統(tǒng)的核心需求,其關(guān)鍵在于制定合適的負載均衡策略。負載均衡主要用于處理Tomcat服務(wù)器同時部署多個項目的情況,而非解決項目在運行期間需處理大量用戶訪問的情況,其主要解決應(yīng)用均衡部署的問題,因此不存在session共享和資源負載等問題。此外,部署應(yīng)用時需上傳項目文件并重啟服務(wù)器,然而服務(wù)器重新啟動和應(yīng)用的裝載需一定時間,數(shù)秒至數(shù)十秒不等。當(dāng)多個應(yīng)用同時部署時,該延時是無法接受的,甚至還會影響系統(tǒng)正常運行。因此需要采取一定策略避免多個應(yīng)用在同一Tomcat實例上同時執(zhí)行部署任務(wù)。具體策略為:①查看各個Tomcat實例的運行情況,找到其中空閑資源較多的。主要監(jiān)控Tomcat實例進程的內(nèi)存和CPU使用情況,若使用率大于某一閾值,則認為滿負荷運轉(zhuǎn),新的應(yīng)用則不在該實例上部署;②篩選出沒有執(zhí)行部署任務(wù)的Tomcat實例集合,初始時所有實例均為非部署狀態(tài);③基于哈希算法選擇一個實例,進行部署。部署開始后,將該主機設(shè)置為正在部署狀態(tài)。部署過程中,運行檢測腳本程序輪詢式檢查部署是否完成。完成后,設(shè)置部署狀態(tài)為非部署。檢測腳本主要進行兩方面的檢查,使用云主機監(jiān)控程序檢測Tomcat進程是否啟動,使用HTTP請求訪問查看Tomcat是否已經(jīng)開啟特定端口并進行服務(wù);④如果沒有可以服務(wù)的Tomcat實例,則使用腳本程序新建一個Tomcat實例,并修改其服務(wù)端口。
4 多目錄項目相似度分析設(shè)計
在教師進行學(xué)生項目評閱時,除了查看運行頁面,代碼查閱也是主要工作,抄襲分析是其中的重要環(huán)節(jié)。抄襲分析的核心為代碼相似度分析,然而主流工具如SIM主要計算單文件相似性,無法直接用于Web項目的復(fù)雜目錄結(jié)構(gòu)。本文在SIM的基礎(chǔ)上進行改進,使其可用于Web項目相似性計算。首先將層次目錄進行扁平化,得到項目文件集合;然后,計算文件集合相似度,是典型的最佳匹配問題,可采用Gale-Shapley算法[22]計算,然而該算法復(fù)雜度為O(n2),復(fù)雜度較高,因此本系統(tǒng)采用貪心思想,簡化文件集合相似度算法。首先利用SIM計算兩集合間單個文件的兩兩相似度;然后找到相似度最大的一對文件,對相似度進行累加;而后將此文件從原始集合中刪除,并繼續(xù)從剩余文件集合中尋找相似度最大的文件對,累加相似度直至某個項目文件集合為空,最后進行歸一化處理,具體如算法1所示。該算法匹配過程為第5~10行的while循環(huán),只要對文件集合相似度進行排序則可以較快實現(xiàn),因此匹配過程復(fù)雜度為NlogN。
算法1:文件集合相似度算法
輸入:文件集合S1、S2;兩個集合的大小M、N
輸出:文件集合S1和S2的相似度SIM
BEGIN
FOR EACH si in S1
FOR EACH sj in S2
compute simi,j
END FOR
END FOR
WHILE S1 or S2 is not null
sum += simi,j
S1 -= {si}
S2 -= {sj}
END WHILE
SIM = 2 * sum / (M+N)
END
當(dāng)用算法1計算出的SIM值大于規(guī)定閾值q時,認為兩個項目存在抄襲現(xiàn)象。將閾值q設(shè)定為0.8,對學(xué)生已有項目進行相似值計算,并通過人工比對發(fā)現(xiàn)上述算法準(zhǔn)確性可達97%以上,這是由于Java Web項目中跨文件的各類數(shù)據(jù)和邏輯關(guān)聯(lián)較為復(fù)雜,學(xué)生在抄襲時如果進行部分修改,很可能會引起項目無法運行的錯誤,因此單文件相似度本身可較真實地反映抄襲情況,從而在該基礎(chǔ)上的多文件相似度計算也較為準(zhǔn)確。
5 結(jié)語
為了克服傳統(tǒng)手動管理效率低下問題,本文設(shè)計并實現(xiàn)了一個在線Java Web課程項目自動管理和分析系統(tǒng),該系統(tǒng)將學(xué)生提交的項目自動部署至位于遠程云主機Tomcat集群和MySQL服務(wù)器上,部署過程處理負載均衡、命名沖突等問題,同時提供基于多文件項目相似度分析的抄襲檢測等功能。通過一學(xué)期試用對比發(fā)現(xiàn),與人工評閱方法相比,該系統(tǒng)能節(jié)省至少57%的評閱時間,同時可提供準(zhǔn)確性達97%的項目相似性檢測功能。因此,該系統(tǒng)大幅提高了Java Web課程管理自動化程度和教師工作效率,具有較高的實用和推廣價值。
后續(xù)工作重點一方面是提高該系統(tǒng)對各類Web組件的擴展能力,另一方面考慮如何提供更為全面和深度的數(shù)據(jù)分析能力,包括代碼質(zhì)量分析、學(xué)生行為分析、學(xué)生知識能力分析等能力。
參考文獻:
[1] 周唯,鄒東升,牛寶君. 基于移動云計算的高校教學(xué)資源整合系統(tǒng)[J]. 計算機應(yīng)用,2016(S1):33-36.
[2] 杜祥軍,李建波,李敏,等. 基于Online Judge的計算機類課程教學(xué)評價方法研究[J]. 計算機教育,2019,304(3):55-57.
[3] 于海平. Java Web 課程教學(xué)改革探索[J],軟件導(dǎo)刊,2014,13(5):191-192.
[4] 馮永安,王永貴,邱云飛,等. “鏈”式教學(xué)模式下Java Web課程教學(xué)改革與實踐[J]. 計算機教育,2020(3):145-147,152.
[5] 陳志,李夢澤,馬嫣,等. 基于ACM程序設(shè)計競賽的常規(guī)教學(xué)改革[J].? 電氣電子教學(xué)學(xué)報,2011,33(6):18-20.
[6] WANG G P,CHEN S Y,YANG X,et al. OJPOT: online judge & practice oriented teaching idea in programming courses[J]. European Journal of Engineering Education,2016,41(3):16.
[7] 陳燈,張彥鐸,王海暉,等. C語言程序設(shè)計基礎(chǔ)課程教賽融合教學(xué)方法研究[J]. 軟件導(dǎo)刊,2019,18(4):206-209.
[8] 國內(nèi)外有哪些好的刷題網(wǎng)站[EB/OL]. https:. www.nowcoder.com/discuss/20147?type=1&order=0&pos=6&page=1.
[9] 李超,花磊,宋云奎. 面向云計算的分布式應(yīng)用自動部署框架[J].? 計算機技術(shù)與發(fā)展,2018(6):12-16.
[10] 王海俠,吳愛華,曾衛(wèi)明. 基于JBoss和Tomcat的自動化部署研究[J].? 現(xiàn)代計算機(專業(yè)版),2015(13):38-42.
[11] 趙杰昌,張良宇. 基于Jenkins構(gòu)建持續(xù)集成系統(tǒng)[J]. 電腦編程技巧與維護,2014(9):9-10.
[12] 周瑩,歐中紅,李俊. 基于Jenkins的持續(xù)集成自動部署研究[J]. 計算機與數(shù)字工程,2016,44(2):267-270.
[13] 張丹,羅平. 代碼相似性檢測方法與工具綜述[J]. 計算機科學(xué),2020,47(3):5-10.
[14] 程金宏, 劉東升. 程序代碼相似度自動度量技術(shù)研究綜述. 內(nèi)蒙古師范大學(xué)學(xué)報(自然科學(xué)漢文版),2006, 35(4):457-461.
[15] VERCO K L,WISE M J. Software for detecting suspected plagiarism: comparing structure and attribute-count systems[C].? Conference on Computer Science Education, 1996:86-95.
[16] DUCASSE S, RIEGER M , DEMEYER S .? A language independent approach for detecting duplicated code[C].? IEEE International Conference on Software Maintenance, 1999:109-118.
[17] GITCHELL D, TRAN N. SIM: a utility for detecting similarity in computer programs[C]. Thirtieth Sigcse Technical Symposium on Computer Science Education, 1999:266-270.
[18] KIM Y C, CHO Y Y, MOON J B. A plagiarism detection system using a syntax-tree[C].? International Conference on Computational Intelligence, 2004:23-26.
[19] JIANG L, MISHERGHI G, SU Z, et al. DECKARD: scalable and accurate tree-based detection of code clones[C].? Minneapolis: International Conference on Software Engineering, 2007.
[20] PHAM N H, NGUYEN H A, NGUYEN T T, et al. Complete and accurate clone detection in graph-based models[C].? IEEE International Conference on Software Engineering, 2009:276-286.
[21] SHENEAMER A, ROY S, KALITA J. A detection framework for semantic code clones and obfuscated code[J]. Expert Systems with Applications,2018,97(1):405-420.
[22] DUBINS L E,F(xiàn)REEDMAN D A. Machiavelli and the Gale-Shapley algorithm[J]. American Mathematical Monthly,1981(88):485-494.
(責(zé)任編輯:江 艷)