CN103678111A - 源代码类似度评价方法以及源代码类似度评价装置 - Google Patents

源代码类似度评价方法以及源代码类似度评价装置 Download PDF

Info

Publication number
CN103678111A
CN103678111A CN201310337262.2A CN201310337262A CN103678111A CN 103678111 A CN103678111 A CN 103678111A CN 201310337262 A CN201310337262 A CN 201310337262A CN 103678111 A CN103678111 A CN 103678111A
Authority
CN
China
Prior art keywords
source code
mentioned
benchmark
comparison object
similar degree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310337262.2A
Other languages
English (en)
Other versions
CN103678111B (zh
Inventor
吉村健太郎
桥本康范
三部良太
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN103678111A publication Critical patent/CN103678111A/zh
Application granted granted Critical
Publication of CN103678111B publication Critical patent/CN103678111B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

一种源代码类似度评价方法以及源代码类似度评价装置。代码克隆的分析随着软件的大规模化而计算量增大。本发明的源代码类似度评价装置具备:开发成果分析单元(21),其提取构成软件的源代码列表;对应关系分析单元(22),其比较比较基准源代码列表(44a)和比较目标源代码列表(44b),分析两者的对应关系;比较对象确定单元(23),其根据对应关系,从上述比较目标源代码列表(44b)中确定包含在比较基准源代码列表(44a)中的比较基准的比较目标源代码(41b)的比较对象;类似度计算单元(24),其求出比较基准源代码(41a)和由比较对象确定单元(23)确定的源代码之间的类似度;输出单元(15),其输出比较基准源代码(41a)和类似度的组合。

Description

源代码类似度评价方法以及源代码类似度评价装置
技术领域
本发明涉及对构成软件的源代码群的类似度进行评价的源代码类似度评价方法以及实施该方法的源代码类似度评价装置。
背景技术
近年来,伴随着软件的应用范围的扩大,被称为遗产软件(legacy software)的软件正在扩大。所谓遗产软件,是指对应于对系统的新的要求来重复地进行功能追加、修正,结果导致软件的规模、复杂度增大,难以进行维护,维护成本增大的软件。
作为遗产软件的维护成本增大的原因之一,是被称为所谓的代码克隆的类似代码列的存在。代码克隆是包含在源代码中的相同或类似的多个代码列,主要由于进行源代码的沿用而生成。在包含许多代码克隆的软件中,除了系统整体的代码大小增大以外,在对相同或类似的多个代码列的一个施加变更时,大多必须还要对其他全部地方进行同样的变更,成为增大维护成本的原因。
代码克隆大多在对遗产软件进行功能追加的维护开发中发生。这是因为代码克隆大多是将实现与所追加的功能类似的功能的软件作为基础软件,在复制构成基础软件的源代码群的基础上进行改造而作成的。按道理,基础软件的类似的功能部分应该作为软件部件而通用。但是,由于在软件开发中强烈要求缩短开发期间、开发成本,所以在大多的软件开发现场作成了代码克隆。
为了削减软件的维护成本,从软件的维护现场要求了检测出该代码克隆并作为软件部件而通用。但是,对于大规模软件,通过目视的代码评审来发现代码克隆是低效的。
近年来,基于上述问题,针对构成软件的源代码,公开了检测代码克隆的技术。
在专利文献1的课题中记载了“提供一种能够高速地提取类似的软件片段的类似源代码提取程序、类似源代码提取装置和类似源代码提取方法”,在“解决手段”中记载了“比较基准源代码片段指定部210接受成为比较的基准的源代码片段的指定,从通过比较目标源代码指定部220接受了指定的源代码群中提取与该源代码片段类似的源代码片段,从结果输出部290输出。参照根据比较基准的源代码片段作成的句法树、根据源代码群作成的句法树,由比较目标源代码片段提取部270进行从源代码群中提取与比较基准的源代码片段进行类似比较的源代码的处理”。
在非专利文献1中记载了作为进行2个文件的比较的程序的diff的算法的细节。
在非专利文献2中记载了与软件的克隆检测有关的研究内容。
在非专利文献1、2所记载的技术中存在以下问题,即如果应用于由大量的源代码(例如数千文件)构成的大规模软件,则分析结果按照文件数的平方而增加,因此理解类似关系需要极大的时间。
在专利文献2所记载的技术中,由用户指定比较基准源代码,因此对于由大量的源代码构成的大规模软件,对进行高效的分析的目的来说并不充分。例如,在软件由数万个源代码文件构成时,由用户指定全部的该比较基准源代码(文件)是不现实的。
专利文献1:日本特开2006-18693号公报
非专利文献1:J.W.Hunt and M.D.Mcllroy,“An Algorithm for DifferentialFile Comparison”,BellTelephone Laboratories Computing Science TechnicalReport#41,July1976.
非专利文献2:Rainer Koschke,“Survey of Research on Software Clones”,Dagstuhl Seminar Proceedings06301,19.04.2007
发明内容
本发明的目的在于提供一种对由多个源代码文件构成的2个软件的类似度进行评价的源代码类似度评价方法、以及实施该方法的源代码类似度评价装置。
为了解决上述问题,在第一方式的源代码类似度评价装置的发明中,具备:源代码列表提取单元,其提取表示比较基准软件的结构的比较基准源代码列表和表示比较目标软件的结构的比较目标源代码列表;对应关系分析单元,其比较上述比较基准源代码列表和上述比较目标源代码列表,分析两者的对应关系;比较对象确定单元,其根据上述对应关系,从上述比较目标源代码列表中确定成为包含在上述比较基准源代码列表中的各比较基准源代码的比较对象的比较目标源代码;类似度计算单元,其计算上述比较基准源代码和通过上述比较对象确定单元确定的上述比较目标源代码之间的类似度;类似度评价单元,其判定通过上述比较对象确定单元确定的上述比较目标源代码中的具有最高类似度的类似源代码;输出单元,其将上述比较基准源代码、以及上述比较基准源代码和上述类似源代码之间的类似度对应起来输出。
在用于实施发明的方式中,说明其他手段。
根据本发明,能够提供一种对由多个源代码文件构成的2个软件的类似度进行评价的源代码类似度评价方法、以及实施该方法的源代码类似度评价装置。
附图说明
图1是表示第一实施方式的源代码类似度评价装置的概要的结构图。
图2是表示第一实施方式的源代码类似度评价单元的动作的图。
图3是表示第一实施方式的开发成果分析单元的处理的流程图。
图4是表示第一实施方式的比较基准源代码列表和比较目标源代码列表的图。
图5是表示第一实施方式的对应关系分析单元的处理的流程图。
图6是表示第一实施方式的对应关系列表的图。
图7是表示第一实施方式的比较对象确定单元的处理的流程图。
图8是表示第一实施方式的逻辑行定义DB的图。
图9是表示第一实施方式的类似度计算单元的差分分析处理的图。
图10是表示第一实施方式的类似度计算单元的处理的图。
图11是表示第一实施方式和比较例的类似度评价结果的图。
图12是表示第一实施方式的类似度评价单元的处理的流程图。
图13是表示第一实施方式的源代码的类似关系信息的图。
图14是第一实施方式的类似关系图。
图15是表示第一实施方式的类似说明书分析单元的处理的流程图。
图16是表示第一实施方式的类似说明书信息的图。
符号说明
10:源代码类似度评价装置;11:存储器;12:文件数据库;13:处理器;14:输入单元;15:输出单元;16:存储单元;17:源代码类似度评价程序;18:总线;19:用户接口;20:源代码类似度评价单元;21:开发成果分析单元(源代码列表提取单元);22:对应关系分析单元;23:比较对象确定单元;24:类似度计算单元;25:类似度评价单元;26:逻辑行定义DB;30:类似说明书分析单元;40a:比较基准软件存储部;40b:比较目标软件存储部;41:源代码;41a:比较基准源代码;41b:比较目标源代码;42、42a、42b:详细设计说明书;43、43a、43b:测试说明书;44a:比较基准源代码列表;44b:比较目标源代码列表;45:对应关系列表(对应关系);46:源代码间差分;47:类似度评价结果;48:类似关系信息;49:类似说明书信息;60:类似关系图;61:根;62:文件夹;63:文件;64:横条形图;100:外部网络;110:外部文件数据库;200:用户;S50:逻辑行提取处理;S52:差分行数测量处理;S53:共通行数计算处理;S54:独立行数计算处理;S55:文件间类似度计算处理。
具体实施方式
以下,参照各图详细说明用于实施本发明的方式。
(第一实施方式的结构)
图1是表示第一实施方式的源代码类似度评价装置的概要的结构图。
源代码类似度评价装置10具备:保存执行用程序、计算结果的存储器11;以电磁方式存储文件的文件数据库12;执行计算处理的处理器13;接受来自用户的输入的输入单元14;向用户输出信息的输出单元15;存储源代码类似度评价程序17的存储单元16;将上述的存储器11、文件数据库12、处理器13、输入单元14、输出单元15、存储单元16连接起来而能够相互进行通信的总线18。
存储器11例如由RAM(随机存取存储器)等构成,具有:对构成2个软件的源代码群之间的类似度进行评价的源代码类似度评价单元20、提取与类似的比较目标源代码关联的详细设计说明书42b(图2、图4(b))和测试说明书43b(图2)的类似说明书分析单元30。
进而,源代码类似度评价单元20具备:开发成果分析单元21(源代码列表提取单元),其提取表示各软件的结构的源代码列表;对应关系分析单元22,其对比较基准源代码列表和比较目标源代码列表进行比较,分析两者的对应关系来进行判定;比较对象确定单元23,其根据该对应关系,从比较目标源代码列表中确定包含在比较基准源代码列表中的比较基准源代码的比较对象、即比较目标源代码;类似度计算单元24,其计算比较基准源代码与由比较对象确定单元23确定的源代码之间的类似度;类似度评价单元25,其判定在比较基准源代码中具有最高类似度的类似源代码。
将存储在存储单元16中的源代码类似度评价程序17读入到该存储器11中,由上述处理器13执行,由此实现源代码类似度评价单元20和类似说明书分析单元30。
文件数据库12例如是以HDD(硬盘驱动器)为代表的存储装置,以电磁方式存储文件。
存储器13例如是CPU(中央处理单元),通过执行读入到存储器11的程序文件而实现源代码类似度评价单元20、类似说明书分析单元30,控制该源代码类似度评价装置10。
输入单元14例如是鼠标、键盘、输入板等,在用户向源代码类似度评价装置10进行指示时使用。
输出单元15例如是液晶显示装置、打印机等,向用户输出显示该源代码类似度评价装置10的操作指导、处理结果等。本实施方式的输出单元15输出比较基准源代码及其类似度。
存储单元16例如是以HDD为代表的存储装置,以电磁方式存储文件。
源代码类似度评价装置10经由未图示的网络接口与外部网络100连接,也能够对外部文件数据库110进行存取。以下,在本实施方式中,将源代码类似度评价装置10记载为对存在于文件数据库12中的软件(项目)进行分析。
(第一实施方式的动作)
图2是表示第一实施方式的源代码类似度评价单元的动作的图。
源代码类似度评价单元20如果经由用户接口19接受了用户200的指示,则进行存储在比较基准软件存储部40a中的软件和存储在比较目标软件存储部40b中的软件之间的类似度的评价。源代码类似度评价单元20经由用户接口19向用户200显示类似关系信息48。
比较基准软件存储部40a和比较目标软件存储部40b存储在文件数据库12、外部文件数据库110(图1)中。比较基准软件存储部40a例如是对现有的软件进行改造所得的,在文件数据库12的预定的路径下的文件夹阶层中,具备包含用预定的程序语言记述的代码的文件即比较基准源代码41a、记载了该比较基准源代码41a的设计规格的详细设计说明书42a、记载了该比较基准源代码41a的测试规格的测试说明书43a。另外,比较基准源代码41a大多是多个,例如有时达到数千~数万的数量级。
比较目标软件存储部40b例如是成为比较基准软件的改造源的现有的软件,在文件数据库12的预定的路径下的文件夹阶层中,具备包含用与记述比较基准源代码41a的程序语言相同的程序语言记述的代码的文件即比较目标源代码41b、记载了该比较目标源代码41b的设计规格的详细设计说明书42b、记载了该比较目标源代码41b的测试规格的测试说明书43b。
以下,在不特别区别比较基准源代码41a和比较目标源代码41b时,简单地记载为“源代码41”。在不特别区别详细设计说明书42a、42b时,简单地记载为“详细设计说明书42”。在不特别区别测试说明书43a、43b时,简单地记载为“测试说明书43”。另外,将现有的软件记载为“基础软件”,将对该现有的软件进行变更或改造所得的软件记载为“改造软件”。
逻辑行定义DB(数据库)26是针对每个扩展名定义构成软件的源代码的逻辑行的数据库。
源代码类似度评价单元20根据源代码的扩展名而参照逻辑行定义DB26,从而取得源代码的逻辑行的定义,根据该逻辑行定义,提取比较基准源代码41a、比较目标源代码41b等的逻辑行。逻辑行定义DB26被存储在存储单元16(图1)中,由源代码类似度评价单元20参照。
开发成果分析单元21分析比较基准软件存储部40a,提取表示比较基准软件的结构的比较基准源代码列表44a,分析比较目标软件存储部40b,提取表示比较目标软件的结构的比较目标源代码列表44b。比较基准源代码列表44a是构成比较基准软件的比较基准源代码41a的一览。比较目标源代码列表44b是构成比较目标软件的比较目标源代码41b的一览。
对应关系分析单元22对比较基准源代码列表44a和比较目标源代码列表44b进行比较,分析判定两者的对应关系。对应关系分析单元22根据比较基准源代码列表44a和比较目标源代码列表44b,分析判定与构成比较基准源代码列表44a的比较基准源代码41a具有对应关系的比较目标源代码41b,输出对应关系列表45。
对应关系列表45是比较基准源代码41a和与该比较基准源代码41a具有对应关系的比较目标源代码41b的组合的一览。
比较对象确定单元23根据对应关系列表45,从比较目标源代码列表44b中确定包含在比较基准源代码列表44a中的各比较基准源代码41a的比较对象,输出由类似度计算单元24计算出的类似度评价结果47。
类似度计算单元24计算比较基准源代码41a和由比较对象确定单元23确定的比较目标源代码41b之间的类似度。
类似度评价结果47是分别计算包含在比较目标源代码列表44b中的比较基准源代码41a和包含在比较基准源代码列表44a中的比较目标源代码41b之间的类似度所得的结果。
类似度评价单元25判定由比较对象确定单元23确定的比较目标源代码41b中的具备最高类似度的类似源代码,输出类似关系信息48。
类似关系信息48存储有包含在比较目标源代码列表44b中的比较基准源代码41a、类似源代码、该比较基准源代码41a和类似源代码之间的类似度。
用户接口19通过输入单元14接受用户200的输入,并且通过输出单元15输出信息来向用户200提供信息。输出单元15对应地输出比较基准源代码41a、该比较基准源代码41a和类似源代码之间的类似度。
类似说明书分析单元30在说明书与在比较基准源代码列表44a中记载的比较基准源代码41a不关联的情况下,将与类似源代码相关的说明书作为类似说明书而提示。类似说明书分析单元30根据作为沿用源的比较目标源代码41b,确定成为沿用候选的详细设计说明书42b和测试说明书43b,输出类似说明书信息49。
图3(a)、(b)是表示第一实施方式的开发成果分析单元的处理的流程图。
图3(a)是表示开发成果分析单元21的整体处理的流程图。
如果开始处理,则在步骤S10中,开发成果分析单元21指定比较基准软件存储部40a的根文件夹,进行开发成果分析处理(图3(b))。
在步骤S11中,开发成果分析单元21指定比较目标软件存储部40b的根文件夹,进行开发成果分析处理(图3(b))。如果步骤S11的处理结束,则图3(a)的整体处理结束。
图3(b)是表示开发成果分析单元21对每个源代码存储部的处理的流程图。
如果开始处理,则在步骤S20中,开发成果分析单元21搜索被指定为源代码存储部的该文件夹的项目文件(例如makefile等)。在此,项目文件是该软件的管理文件,记载了从该软件的源文件生成执行文件的规则等。
在步骤S21~S25中,开发成果分析单元21对全部项目文件重复进行处理。
在步骤S22中,开发成果分析单元21提取与该项目文件相关的源代码41(文件名和相对路径名)。
在步骤S23中,开发成果分析单元21提取与该项目文件相关的各源代码41的详细设计说明书42。开发成果分析单元21搜索源代码41的相对路径,提取具备与源代码41的文件名具有预定的关联性的文件名的详细设计说明书42。
在步骤S24中,开发成果分析单元21提取与该项目文件相关的各源代码41的测试说明书43。开发成果分析单元21搜索源代码41的相对路径,提取具备与源代码41的文件名具有预定的关联性的文件名的测试说明书43。
在步骤S25中,开发成果分析单元21判断是否对全部的项目文件重复进行了处理。开发成果分析单元21如果该判断条件不成立,则返回到步骤S21的处理。
在步骤S26中,开发成果分析单元21搜索该预定文件夹的子文件夹。
在步骤S27~S29中,开发成果分析单元21对全部子文件夹重复进行处理。
在步骤S28中,开发成果分析单元21对该子文件夹递归地进行开发成果分析处理(图3(b))。
在步骤S29中,开发成果分析单元21对全部子文件夹判断是否重复进行了处理。开发成果分析单元21如果该判断条件不成立,则返回到步骤S27的处理,如果该判断条件成立,则结束图3(b)的处理。
图4(a)、(b)是表示第一实施方式的比较基准源代码列表和比较目标源代码列表的图。
图4(a)是表示比较基准源代码列表44a的图。
比较基准源代码列表44a具有识别各比较基准源代码41a的ID栏44-1、存储各比较基准源代码41a的文件名信息的文件名栏44-2、对存储了各比较基准源代码41a的相对路径名信息进行存储的相对路径名栏44-3、存储各比较基准源代码41a的逻辑行数即SLOC(source lines of code:源代码行)的逻辑行数栏44-4、存储各比较基准源代码41a的详细设计说明书42a的文件名的详细设计说明书栏44-5、存储各比较基准源代码41a的测试说明书43a的文件名的测试说明书栏44-6。
例如ID是1的比较基准源代码41a的文件“F01.c”存储在相对路径“/D01”,逻辑行数是300行,详细设计说明书42a的文件名是“F01_spec.doc”,测试说明书43a的文件名是“F01_test.doc”。
例如ID是4的比较基准源代码41a的文件“F06.c”存储在相对路径“/D02”,逻辑行数是500行,不存在详细设计说明书42b和测试说明书43b,因此在详细设计说明书44-5和测试说明书栏44-6中存储有表示不存在相应的文件的N/A(Not Available:不可用)。
图4(b)是表示比较目标源代码列表44b的图。
比较目标源代码列表44b具有与比较基准源代码列表44a相同的结构。
图5是表示第一实施方式的对应关系分析单元的处理的流程图。
如果开始处理,则在步骤S30中,对应关系分析单元22用1初始化变量i。变量i表示包含在比较基准源代码列表44a中的比较基准源代码41a的ID。在此,变量i=1,因此比较基准源代码Fi(41a)的文件名是“F01.c”。
在步骤S31中,对应关系分析单元22用1初始化变量j。变量j表示包含在比较目标源代码列表44b中的比较目标源代码41b的ID。
在步骤S32中,对应关系分析单元22判断比较基准源代码Fi(41a)的相对路径名和比较目标源代码Fj(41b)的相对路径名是否相同。对应关系分析单元22如果该判断条件成立(是),则进行步骤S33的处理,如果该判断条件不成立(否),则进行步骤S35的处理。
在步骤S33中,对应关系分析单元22判断比较基准源代码Fi(41a)的文件名和比较目标源代码Fj(41b)的文件名是否相同。对应关系分析单元22如果该判断条件成立(是),则进行步骤S34的处理,如果该判断条件不成立(否),则进行步骤S35的处理。
在步骤S34中,对应关系分析单元22将比较基准源代码Fi(41a)和比较目标源代码Fj(41b)判定为对应关系,记录在对应关系列表45中。
在步骤S35中,对应关系分析单元22判断变量j是否是比较目标源代码列表44b的ID的最大值jmax(在本实施方式中是5)以上。对应关系分析单元22,如果该判断条件成立(是),则进行步骤S37的处理,如果该判断条件不成立(否),则进行步骤S36的处理。
在步骤S36中,对应关系分析单元22将变量j加1,返回到步骤S32的处理。由此,对应关系分析单元22能够对全部的比较目标源代码列表44b的各比较目标源代码41b进行步骤S32~S34的处理。
在步骤S37中,对应关系分析单元22判断变量i是否是比较基准源代码列表44a的ID的最大值imax(在本实施方式中是5)以上。对应关系分析单元22如果该判断条件成立(是),则结束图5的处理,如果该判断条件不成立(否),则进行步骤S38的处理。
在步骤S38中,对应关系分析单元22将变量i加1,返回到步骤S31的处理。由此,对应关系分析单元22能够对全部的比较基准源代码列表44a的各比较基准源代码41a进行步骤S31~S35的处理。
图6是表示第一实施方式的对应关系列表的图。
在对应关系列表45中记载了比较基准源代码41a的ID和比较目标源代码41b的ID的对应关系。比较基准源代码41a的ID=1和比较目标源代码41b的ID=1具有对应关系。比较基准源代码41a的ID=2和比较目标源代码41b的ID=2具有对应关系。比较基准源代码41a的ID=3和比较目标源代码41b的ID=4具有对应关系。
图7是表示第一实施方式的比较对象确定单元的处理的流程图。
如果开始处理,则在步骤S40中,比较对象确定单元23用1初始化变量i。变量i表示包含在比较基准源代码列表44a中的比较基准源代码Fi(41a)的ID。
在步骤S41中,比较对象确定单元23判断是否存在与比较基准源代码Fi(41a)具有对应关系的比较目标源代码Fj(41b)。比较对象确定单元23如果该判断条件成立(是),则进行步骤S42的处理,如果该判断条件不成立(否),则进行步骤S44的处理。
在步骤S42中,比较对象确定单元23根据对应关系列表45,将与比较基准源代码Fi(41a)对应的比较目标源代码Fj(41b)的ID设置为变量j。
在步骤S43中,比较对象确定单元23在进行了比较基准源代码Fi(41a)和比较目标源代码Fj(41b)的类似度计算处理后,进行步骤S48的处理。在后述的图10中详细说明类似度计算处理。
在步骤S44中,比较对象确定单元23用1初始化变量j。变量j表示包含在比较目标源代码列表44b中的比较目标源代码41b的ID。
在步骤S45中,比较对象确定单元23进行比较基准源代码Fi(41a)和比较目标源代码Fj(41b)的类似度计算处理。在后述的图10中详细说明类似度计算处理。
在步骤S46中,比较对象确定单元23判断变量j是否为比较目标源代码列表44b的ID的最大值jmax(在本实施方式中是5)以上。比较对象确定单元23如果该判断条件成立(是),则进行步骤S48的处理,如果该判断条件不成立(否),则进行步骤S47的处理。
在步骤S47中,比较对象确定单元23将变量j加1,返回到步骤S45的处理。
在步骤S48中,比较对象确定单元23判断变量i是否为比较基准源代码列表44a的ID的最大值jmax(在本实施方式中是5)以上。比较对象确定单元23如果该判断条件成立(是),则结束图7的处理,如果该判断条件不成立(否),则进行步骤S49的处理。
在步骤S49中,比较对象确定单元23将变量i加1,返回到步骤S41的处理。
图8是表示第一实施方式的逻辑行定义DB的图。
逻辑行定义DB26具有扩展名栏26-1、逻辑行的划分栏26-2、注释开始栏26-3、注释结束栏26-4。
扩展名栏26-1表示文件名的扩展名部分的信息。在此,扩展名是指文件名的末尾的句号以后的部分。源代码通过文件名的扩展名部分表示记述了该源代码的计算机语言。
逻辑行的划分栏26-2表示与该扩展名相关的计算机语言的逻辑行的划分规则。源代码类似度评价单元20根据该逻辑行的划分规则,对源代码的逻辑行数进行计数。
注释开始栏26-3表示与该扩展名相关的计算机语言的注释的开始规则。
注释结束栏26-4表示与该扩展名相关的计算机语言的注释的结束规则。源代码类似度评价单元20在对源代码的逻辑行数进行计数时,根据注释开始栏26-3和注释结束栏26-4,完全无视注释。
图9是表示第一实施方式的类似度计算单元的差分分析处理的图。
在此,以任意2个比较基准源代码Fi(41a)和比较目标源代码Fj(41b)之间的类似关系为例。
比较基准源代码Fi(41a)用逻辑行表示比较基准源代码41a。用L(Fi)表示比较基准源代码Fi(41a)的逻辑行数。
比较目标源代码Fj(41b)用逻辑行表示比较目标源代码41b。用L(Fj)表示比较目标源代码Fj(41b)的逻辑行数。
比较基准源代码Fi(41a)的共通行41c和比较目标源代码Fj(41b)的共通行41d记载了相同的内容。共通行41c、41d的行数用共通行数L(Fi∧Fj)表示。
在差分分析处理S51中,对比较基准源代码Fi(41a)和比较目标源代码Fj(41b)的差分进行分析。在非专利文献1中记载了该差分分析处理S51的细节。
差分分析处理S51的结果是输出源代码间差分Dij(46)。源代码间差分Dij(46)的各行的第一位表示差分的内容。如果行的第一位是“<”,则该行表示只包含在比较基准源代码Fi(41a)中。如果行的第一位是“>”,则该行表示只包含在比较目标源代码Fj(41b)中。在此,将源代码间差分Dij(46)的全体行数设为L(Dij)。
式1表示比较基准源代码Fi(41a)和比较目标源代码Fj(41b)之间的源代码间类似度Sij的计算式。
Figure BDA00003622632400131
...(式1)
式2表示共通行数L(Fi∧Fj)的计算式。
Figure BDA00003622632400132
...(式2)
式3表示独立行数L(Fi∨Fj)的计算式。
L(Fi∨Fj)=L(Fi)+L(Fj)-L(Fi∧Fj)···(式3)
图10是表示第一实施方式的类似度计算单元的处理的图。
类似度计算单元24将比较基准源代码Fi(41a)和比较目标源代码Fj(41b)这2个作为输入。
在逻辑行提取处理S50中,类似度计算单元24参照逻辑行定义DB26,分别提取比较基准源代码Fi(41a)、比较目标源代码Fj(41b)的逻辑行。
在差分分析处理S51中,类似度计算单元24对比较基准源代码Fi(41a)和比较目标源代码Fj(41b)的源代码间差分Dij进行分析。
在差分行数测量处理S52中,类似度计算单元24计算源代码间差分Dij的逻辑行数L(Dij)。
在共通行数计算处理S53中,类似度计算单元24根据(式2)计算源代码之间的共通行数L(Fi∧Fj)。
在独立行数计算处理S54中,类似度计算单元24根据(式3)计算源代码之间的独立行数L(Fi∨Fj)。
在源代码间类似度计算处理S55中,类似度计算单元24根据(式1)将共通行数L(Fi∧Fj)除以独立行数L(Fi∨Fj),计算源代码间类似度Sij。
图11(a)、(b)是表示第一实施方式与比较例的类似度评价结果的图。
图11(a)是第一实施方式的类似度评价结果47。
类似度评价结果47的行方向表示比较基准源代码列表44a的各文件。类似度评价结果47的列方向表示比较目标源代码列表44b的各文件。在各矩阵的要素中存储有源代码间类似度Sij的计算结果。
在此,比较基准源代码列表44a的F01.c、F02.c、F04.c存在与比较目标源代码列表44b具有对应关系的比较目标源代码41b,因此计算与具有该对应关系的比较目标源代码41b的类似度,不计算与不具有该对应关系的其他源代码41的类似度。
如果在与比较基准源代码列表44a相关的比较基准源代码41a中不存在与比较目标源代码列表44b具有对应关系的源代码,则计算与比较目标源代码列表44b的全部比较目标源代码41b的类似度。
图11(b)是比较例的类似度评价结果47c。
在此,比较例的源代码类似度评价装置构成为计算比较基准源代码列表44a的全部的比较基准源代码Fi(41a)和比较目标源代码列表44b的全部比较目标源代码Fj(41b)之间的类似度。
本实施方式的源代码类似度评价装置10预先调查源代码之间的对应关系,只计算具有对应关系的源代码的类似度,得到类似度评价结果47。由此,本实施方式的源代码类似度评价装置10与比较例相比能够降低计算量,由此能够短时间地得到类似度评价结果47。
图12是表示第一实施方式的类似度评价单元的处理的流程图。
如果开始处理,则在步骤S60中,类似度评价单元25用1初始化变量i。变量i表示包含在比较基准源代码列表44a中的比较基准源代码Fi(41a)的ID。
在步骤S61中,类似度评价单元25根据对应关系列表45判断是否存在与比较基准源代码Fi(41a)对应的目标。类似度评价单元25如果该判断条件成立(是),则进行步骤S62的处理,如果该判断条件不成立(否),则进行步骤S63的处理。
在步骤S62中,类似度评价单元25将与比较基准源代码Fi(41a)具有对应关系的比较目标源代码Fj(41b)的ID设定为变量j,进行步骤S64的处理。在此,变量j所示的比较目标源代码Fj(41b)是计算变量i所示的比较基准源代码Fi(41a)的类似度的类似源代码。
在步骤S63中,类似度评价单元25将与比较基准源代码Fi(41a)的类似度最大的比较目标源代码Fj(41b)的ID设定为变量j,进行步骤S64的处理。在此,变量j所示的比较目标源代码Fj(41b)是计算与变量i所示的比较基准源代码Fi(41a)的类似度的“类似源代码”。
在步骤S64中,类似度评价单元25将比较目标源代码Fj(41b)的文件名设定为比较基准源代码Fi(41a)的类似文件名。
在步骤S65中,类似度评价单元25将比较目标源代码Fj(41b)的相对路径名设定为比较基准源代码Fi(41a)的类似相对路径名。
在步骤S66中,类似度评价单元25将比较基准源代码Fi(41a)和比较目标源代码Fj(41b)之间的类似度设定为比较基准源代码Fi(41a)的类似度。
在步骤S67中,类似度评价单元25判断变量i是否是比较基准源代码列表44a的ID的最大值(在实施方式中是5)以上。类似度评价单元25如果该判断条件成立(是),则结束图12的处理,如果该判断条件不成立(否),则进行步骤S68的处理。
在步骤S68中,类似度评价单元25将变量i加1,返回到步骤S61的处理。
图13是表示第一实施方式的源代码的类似关系信息的图。
类似关系信息48具有识别各比较基准源代码41a的ID栏48-1、存储各比较基准源代码41a的文件名信息的文件名栏48-2、对存储了各比较基准源代码41a的相对路径名信息进行存储的相对路径名栏48-3、存储各比较基准源代码41a的逻辑行数(SLOC)的逻辑行数栏48-4、存储与比较基准源代码41a对应的比较目标源代码41b的文件名信息的类似文件名栏48-5、存储与比较基准源代码41a对应的比较目标源代码41b的相对路径名信息的类似相对路径名栏48-6、存储比较基准源代码41a和比较目标源代码41b之间的类似度信息的类似度栏48-7。
图14是第一实施方式的类似关系图。
类似关系图60在用户接口19的输出单元15上表示类似关系信息48。类似关系图60用将根目录作为根节点、将目录作为中间节点、将文件作为叶节点的树构造来显示。
在类似关系图60中被表示为“根(root)”的根61被显示为根节点。作为根节点的根61将“D01”所示的文件夹62-1、“D02”所示的文件夹62-2作为中间节点而向右方向分支。
作为中间节点的文件夹62-1将“F01.c”所示的文件63-1、“F02.c”所示的文件63-2作为叶节点向右方向分支。
作为中间节点的文件夹62-2将“F04.c”所示的文件63-3、“F06.c”所示的文件63-4、“F07.c”所示的文件63-5作为叶节点向右方向分支。以下,在不特别区别文件63-1~63-5时,简单地记载为文件63。
在作为叶节点的文件63-1~63-5的右侧,显示出表示作为各个源代码的逻辑行数和类似度的横条形图64-1~64-5。以下,在不特别区别横条形图64-1~64-5时,简单地记载为横条形图64。
在类似关系图60的下侧显示凡例65。在凡例65中显示用白色表示的“克隆部”和用灰色表示的“原始部”。
横条形图64的长度是对应的文件63的作为源代码的逻辑行数。横条形图64都用白色和灰色这2种颜色上色划分。但是,并不限于此,横条形图64也可以用任意的2种颜色以上的组合上色划分。
用横条形图64的“克隆部”相对于全体面积的面积比例来表示文件63和与该文件63最类似的比较目标源代码41b之间的类似度。例如在文件63-1的类似度为95%的情况下,横条形图64-1的“克隆部”相对于全体面积的面积比例是95%。
由此,用户能够容易地全方位掌握由多个源代码群构成的2个软件的类似性,因此能够容易地发现作为代码克隆的软件。用户进而还能够容易地发现代码克隆的软件中的改造地方多的源代码,应对伴随着改造地方的不良状况。
图15是表示第一实施方式的类似说明书分析单元的处理的流程图。
如果开始处理,则在步骤S70中,类似说明书分析单元30用1初始化变量i。变量i表示包含在比较基准源代码列表44a中的比较基准源代码Fi(41a)的ID。
在步骤S71中,类似说明书分析单元30判断在比较基准源代码Fi(41a)中是否存在说明书。在本实施方式中,类似说明书分析单元30根据在比较基准源代码Fi(41a)的相对路径中是否存在与比较基准源代码Fi(41a)的文件名具有预定的关联性的文件名的说明书,来判断说明书的存在。类似说明书分析单元30如果该判断条件成立(是),则进行步骤S78的处理,如果该判断条件不成立(否),则进行步骤S72的处理。
在步骤S72中,类似说明书分析单元30根据对应关系列表45,判断是否存在与比较基准源代码Fi(41a)对应的目标。类似说明书分析单元30如果该判断条件成立(是),则进行步骤S73的处理,如果该判断条件不成立(否),则进行步骤S74的处理。
在步骤S73中,类似说明书分析单元30将与比较基准源代码Fi(41a)具有对应关系的比较目标源代码Fj(41b)的ID设定为变量j,进行步骤S75的处理。
在步骤S74中,类似说明书分析单元30将与比较基准源代码Fi(41a)的类似度最大的比较目标源代码Fj(41b)的ID设定为变量j,进行步骤S75的处理。
在步骤S75中,类似说明书分析单元30将比较目标源代码Fj(41b)的文件名和类似度登记为比较基准源代码Fi(41a)的类似文件名和类似度。
在步骤S76中,类似说明书分析单元30将比较目标源代码Fj(41b)的详细设计说明书42b登记为比较基准源代码Fi(41a)的类似设计说明书。
在步骤S77中,类似说明书分析单元30将比较目标源代码Fj(41b)的测试说明书43b登记为比较基准源代码Fi(41a)的类似测试说明书。
在步骤S78中,类似说明书分析单元30判断变量i是否为比较基准源代码列表44a的ID的最大值imax(在实施方式中是5)以上。类似说明书分析单元30如果该判断条件成立(是),则结束图15的处理,如果该判断条件不成立(否),进行步骤S79的处理。
在步骤S79中,类似说明书分析单元30将变量i加1,返回到步骤S71的处理。
图16是表示第一实施方式的类似说明书信息的图。
类似说明书信息49具有识别比较基准源代码Fi(41a)的ID栏49-1、存储比较基准源代码Fi(41a)的文件名信息的文件名栏49-2、存储比较基准源代码Fi(41a)的详细设计说明书42a的文件名的详细设计说明书栏49-3、存储比较基准源代码Fi(41a)的测试说明书43a的文件名的测试说明书栏49-4、存储最类似的比较目标源代码Fj(41b)的文件名信息的类似文件名栏49-5。
在详细设计说明书42a不与该比较基准源代码Fi(41a)关联时,在详细设计说明书栏49-3的括弧中记载与该比较基准源代码Fi(41a)最类似的比较目标源代码Fj(41b)的详细设计说明书42b的文件名信息。
在测试说明书43a不与该比较基准源代码Fi(41a)关联时,在测试说明书栏49-4的括弧中记载与该比较基准源代码Fi(41a)最类似的比较目标源代码Fj(41b)的测试说明书43b的文件名信息。
在测试说明书栏49-4中,还在括弧中记载有类似测试说明书的文件名信息。在类似文件名栏49-5中,还在括弧中记载有类似度的信息。
根据该类似说明书信息49,用户200能够容易地一起取得包含在比较目标源代码列表44b中的比较目标源代码41b的详细设计说明书42b和测试说明书43b以及该比较目标源代码41b的类似度。
(第一实施方式的效果)
在以上说明的第一实施方式中,具有以下的(A)~(G)的效果。
(A)源代码类似度评价单元20不指示各个软件的对应关系,而评价2个软件的关系,作成类似关系图60。由此,用户200能够容易地全方位掌握由多个源代码群构成的2个软件的类似性,因此能够容易地发现作为代码克隆的软件。
(B)比较对象确定单元23如果判定为比较基准源代码41a与比较目标源代码列表44b的任意一个比较目标源代码41b具有对应关系,则将具有对应关系的比较目标源代码41b确定为比较基准源代码41a的比较对象,评价类似度。由此,只对具有对应关系的比较基准源代码41a的类似度进行一次评价即可,因此减少计算量,由此能够在短时间内结束大规模软件之间的类似度评价。
(C)对应关系分析单元22如果比较基准源代码41a的相对路径名和文件名与比较目标源代码列表44b的任意一个比较目标源代码41b的相对路径名和文件名一致,则判定为一致的比较目标源代码41b与比较基准源代码41a具有对应关系。这样,只根据搜索相应文件夹而得到的信息来判定比较基准源代码41a和比较目标源代码41b之间的对应关系,因此减少计算量,由此能够短时间内结束大规模软件之间的类似度评价。
(D)输出单元15在比较基准源代码41a与比较目标源代码列表44b的任意一个比较目标源代码41b都不具有对应关系的情况下,显示与比较目标源代码列表44b的全部比较目标源代码41b的类似度中最高的类似度。由此,即使作为改造软件的比较基准源代码41a的文件名被变更,也能够选择最适合的比较目标源代码41b来显示类似度。
(E)输出单元15用将存储了比较基准源代码41a的比较基准软件存储部40a的根文件夹作为根节点、将构成比较基准源代码41a的相对路径的各文件夹作为内部节点、将比较基准源代码41a的各类似度作为叶节点的树形图来显示。由此,能够向用户200容易理解地显示比较基准软件存储部40a的文件夹结构、与包含在各文件夹中的源代码文件的比较目标的类似度。
(F)源代码类似度评价单元20在类似关系图60中,用横条形图64的面积显示比较基准源代码41a的逻辑行数,并且用上色划分的横条形图64的任意一种颜色的面积比来显示比较基准源代码41a和类似度最高的比较目标源代码41b之间的类似度。由此,用户200能够容易地发现代码克隆的软件中的改造地方多的比较基准源代码41a,能够应对伴随着改造地方的不良状况。
(G)类似说明书分析单元30自动作成类似说明书信息49。由此,用户200能够容易地与比较目标源代码41b的类似度一起,取得包含在比较目标源代码列表44b中的该比较目标源代码41b的详细设计说明书42b和测试说明书43b。用户200还能够根据比较目标源代码41b的类似度,判断能够到哪种程度沿用详细设计说明书42b和测试说明书43b。
(变形例)
本发明并不限于上述实施方式,在不脱离本发明的主旨的范围内,能够进行变更实施,例如有以下的(a)~(e)的情况。
(a)本实施方式的源代码类似度评价装置10对存在于文件数据库12中的软件(项目)进行分析。但是,并不限于此,源代码类似度评价装置10也可以对存在于外部文件数据库110中的软件(项目)进行分析,还可以对存在于文件数据库12中的软件和存在于外部文件数据库110中的软件进行比较而分析。
(b)本实施方式的源代码类似度评价装置10通过指定2个文件夹来对分别存在于指定的2个文件夹中的2个软件(项目)进行分析。但是,并不限于此,源代码类似度评价装置10也可以通过指定2个项目文件,来分析与指定的2个项目文件相关的2个软件(项目)。
(c)本实施方式的源代码类似度评价装置10根据在比较基准源代码Fi(41a)的相对路径中是否存在与比较基准源代码Fi(41a)的文件名具有预定的关联性的文件名的说明书,来判断说明书的存在。但是,并不限于此,源代码类似度评价装置10也可以根据在项目文件中是否存在与比较基准源代码Fi(41a)关联的说明书,来判断说明书的存在。
(d)源代码类似度评价装置10的输出单元15用上色划分的横条形图64的任意一种颜色的面积比来表示比较基准源代码41a和类似源代码之间的类似度。但是,并不限于此,输出单元15也可以通过横条形图64的色彩、黑白的浓淡、图案来表示比较基准源代码41a和类似源代码之间的类似度,进而还可以通过横条形图64以外的任意的图表形式(圆图表、分布图、雷达图、气泡图等)来表示。
(e)也可以将本发明的源代码类似度评价单元20作为计算机的应用程序来实现,将该应用程序记录到计算机可读取的存储介质中,向用户提供。

Claims (9)

1.一种源代码类似度评价装置,其特征在于,具备:
源代码列表提取单元,其提取表示比较基准软件的结构的比较基准源代码列表和表示比较目标软件的结构的比较目标源代码列表;
对应关系分析单元,其比较上述比较基准源代码列表和上述比较目标源代码列表,分析两者的对应关系;
比较对象确定单元,其根据上述对应关系,从上述比较目标源代码列表中确定成为包含在上述比较基准源代码列表中的各比较基准源代码的比较对象的比较目标源代码;
类似度计算单元,其计算上述比较基准源代码和通过上述比较对象确定单元确定的上述比较目标源代码之间的类似度;
类似度评价单元,其判定通过上述比较对象确定单元确定的上述比较目标源代码中的具有最高类似度的类似源代码;以及
输出单元,其将上述比较基准源代码、以及上述比较基准源代码和上述类似源代码之间的类似度对应起来输出。
2.根据权利要求1所述的源代码类似度评价装置,其特征在于,
上述比较对象确定单元,如果判定为上述比较基准源代码与上述比较目标源代码列表的任意一个比较目标源代码具有上述对应关系,则将具有该对应关系的比较目标源代码确定为比较对象,如果判定为上述比较基准源代码与上述比较目标源代码列表的任意一个比较目标源代码都不具有上述对应关系,则将上述比较目标源代码列表的全部比较目标源代码确定为比较对象。
3.根据权利要求2所述的源代码类似度评价装置,其特征在于,
上述源代码列表提取单元还取得构成上述比较基准软件的上述比较基准源代码的相对路径名和文件名,提取上述比较基准源代码列表,并且取得构成上述比较目标软件的比较目标源代码的相对路径名和文件名,提取上述比较目标源代码列表,
上述对应关系分析单元,如果上述比较基准源代码的相对路径名和文件名与上述比较目标源代码列表的任意一个比较目标源代码的相对路径名和文件名一致,则判定出一致的比较目标源代码与该比较基准源代码具有上述对应关系。
4.根据权利要求1所述的源代码类似度评价装置,其特征在于,
在上述比较基准源代码与上述比较目标源代码列表的任意一个比较目标源代码具有上述对应关系的情况下,上述输出单元输出的类似度是与具有上述对应关系的比较目标源代码的类似度。
5.根据权利要求1所述的源代码类似度评价装置,其特征在于,
在上述比较基准源代码与上述比较目标源代码列表的任意一个比较目标源代码都不具有上述对应关系的情况下,上述输出单元输出的类似度是与上述比较目标源代码列表的全部比较目标源代码的类似度中的最高的类似度。
6.根据权利要求1所述的源代码类似度评价装置,其特征在于,
上述输出单元用树形图进行显示,该树形图将上述比较基准软件的根文件夹作为根节点,将位于上述比较基准源代码的相对路径中的各文件夹作为内部节点,将上述比较基准源代码、以及上述比较基准源代码和上述类似源代码之间的类似度作为叶节点。
7.根据权利要求1所述的源代码类似度评价装置,其特征在于,
上述输出单元用进行了颜色标记的柱形图的任意一种颜色的面积比表示上述比较基准源代码和上述类似源代码之间的类似度,并且用上述柱形图的整体面积表示上述比较基准源代码的逻辑行数。
8.根据权利要求1所述的源代码类似度评价装置,其特征在于,
还具备:类似说明书分析单元,其在说明书与上述比较基准源代码不关联的情况下,将上述类似源代码的说明书提示为类似说明书。
9.一种源代码类似度评价方法,其特征在于,包括:
提取表示比较基准软件的结构的比较基准源代码列表和表示比较目标软件的结构的比较目标源代码列表的步骤;
比较上述比较基准源代码列表和上述比较目标源代码列表,分析两者的对应关系的步骤;
根据上述对应关系,从上述比较目标源代码列表中确定成为包含在上述比较基准源代码列表中的各比较基准源代码的比较对象的比较目标源代码的步骤;
计算上述比较基准源代码和所确定的上述比较目标源代码之间的类似度的步骤;
判定所确定的上述比较目标源代码中的具有最高类似度的类似源代码的步骤;以及
将上述比较基准源代码、以及上述比较基准源代码和上述类似源代码之间的类似度对应起来输出的步骤。
CN201310337262.2A 2012-09-18 2013-08-05 源代码类似度评价方法以及源代码类似度评价装置 Expired - Fee Related CN103678111B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012-204545 2012-09-18
JP2012204545A JP5875961B2 (ja) 2012-09-18 2012-09-18 ソースコード類似度評価プログラム、ソースコード類似度評価装置、および、コンピュータ読み取り可能な記憶媒体

Publications (2)

Publication Number Publication Date
CN103678111A true CN103678111A (zh) 2014-03-26
CN103678111B CN103678111B (zh) 2016-06-29

Family

ID=50315751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310337262.2A Expired - Fee Related CN103678111B (zh) 2012-09-18 2013-08-05 源代码类似度评价方法以及源代码类似度评价装置

Country Status (2)

Country Link
JP (1) JP5875961B2 (zh)
CN (1) CN103678111B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036156A (zh) * 2014-06-27 2014-09-10 麦永浩 一种对软件侵权行为的电子数据取证鉴定方法及系统
CN104123493A (zh) * 2014-07-31 2014-10-29 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099842B2 (en) 2019-01-08 2021-08-24 Saudi Arabian Oil Company Source code similarity detection using digital fingerprints
US20230205736A1 (en) * 2021-12-24 2023-06-29 Vast Data Ltd. Finding similarities between files stored in a storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101315599A (zh) * 2007-05-29 2008-12-03 北京航空航天大学 源程序相似度检测方法及装置
JP2010067188A (ja) * 2008-09-12 2010-03-25 Internatl Business Mach Corp <Ibm> プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4560608B2 (ja) * 2006-08-11 2010-10-13 国立大学法人神戸大学 類似度評価プログラム、類似度評価装置及び類似度評価方法
JP2010165082A (ja) * 2009-01-14 2010-07-29 Nomura Research Institute Ltd 開発管理情報収集システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101315599A (zh) * 2007-05-29 2008-12-03 北京航空航天大学 源程序相似度检测方法及装置
JP2010067188A (ja) * 2008-09-12 2010-03-25 Internatl Business Mach Corp <Ibm> プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104036156A (zh) * 2014-06-27 2014-09-10 麦永浩 一种对软件侵权行为的电子数据取证鉴定方法及系统
CN104123493A (zh) * 2014-07-31 2014-10-29 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置
CN104123493B (zh) * 2014-07-31 2017-09-26 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置

Also Published As

Publication number Publication date
CN103678111B (zh) 2016-06-29
JP2014059743A (ja) 2014-04-03
JP5875961B2 (ja) 2016-03-02

Similar Documents

Publication Publication Date Title
Chen et al. Mining likely analogical apis across third-party libraries via large-scale unsupervised api semantics embedding
US11520800B2 (en) Extensible data transformations
US11809442B2 (en) Facilitating data transformations
US9811727B2 (en) Extracting reading order text and semantic entities
KR20070009338A (ko) 이미지 상호간의 유사도를 고려한 이미지 검색 방법 및장치
Skluzacek et al. Skluma: An extensible metadata extraction pipeline for disorganized data
Angelini et al. CLAIRE: A combinatorial visual analytics system for information retrieval evaluation
CN115658080A (zh) 一种软件开源代码成分的识别方法及系统
CN103678111A (zh) 源代码类似度评价方法以及源代码类似度评价装置
CN101529418A (zh) 用于获取、分析和挖掘数据和信息的系统和方法
US20160162539A1 (en) Computer executable method of generating analysis data and apparatus performing the same and storage medium for the same
Paneva-Marinova et al. System architecture and intelligent data curation of virtual museum for ancient history
Agrawal et al. Ruffle: Extracting co-change information from software project repositories
JP7196148B2 (ja) 最適化支援装置および最適化支援方法
Ding et al. KLONOS: Similarity‐based planning tool support for porting scientific applications
JP5826148B2 (ja) 図面管理サーバ及びこれを用いた図面管理システム
JP7275504B2 (ja) 情報処理装置、分析モデル管理方法及び分析モデル管理プログラム
JP6201053B2 (ja) 素性データ管理システム、および素性データ管理方法
JP5020274B2 (ja) 意味ドリフトの発生評価方法及び装置
Paneva-Marinova et al. Intelligent Data Curation in Virtual Museum for Ancient History and Civilization
KR102474329B1 (ko) 전자연구노트 서비스 제공 시스템
Scicluna et al. Toward computing attributions for dimensionality reduction techniques
Dehmer et al. On efficient network similarity measures
US20230297620A1 (en) Information search apparatus, information search method, and computer-readable recording medium
JP5417359B2 (ja) 文書評価支援システム、及び文書評価支援方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160629

Termination date: 20170805