1.本公开涉及互联网技术领域,尤其涉及一种代码重复检测方法及装置。
背景技术:
2.在传统的web编程方式中,很多编程人员在撰写相应代码时,可能不会注意到代码库中已经存在了同样功能的方法,这个时候就会出现代码功能重复的问题,打包后的文件体积无疑会增大。
3.基于后续项目的维护问题,如果代码打包后文件体积很大,很难维护,将导致开发人员工作效率低下。
4.公开于本技术背景技术部分的信息仅仅旨在加深对本技术的一般背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。
技术实现要素:
5.本公开实施例提供一种代码重复检测方法及装置,能够至少解决现有技术中的部分问题。
6.本公开实施例的第一方面,提供一种代码重复检测方法,包括:
7.基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;
8.根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
9.若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
10.若无,则保存所述目标代码文件。
11.在一种可选的实施方式中,
12.所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法包括:
13.获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,
14.若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
15.在一种可选的实施方式中,
16.所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法还包括:
17.将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,
18.若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文
件的功能重复。
19.在一种可选的实施方式中,
20.所述给出已有代码的指示文件的方法包括:
21.给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。
22.在一种可选的实施方式中,
23.所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。
24.本公开实施例的第二方面,提供一种代码重复检测装置,包括:
25.第一单元,用于基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;
26.第二单元,用于根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
27.第三单元,用于若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
28.若无,则保存所述目标代码文件。
29.在一种可选的实施方式中,
30.所述第二单元还用于:
31.获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,
32.若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
33.在一种可选的实施方式中,
34.所述第二单元还用于:
35.将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,
36.若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
37.在一种可选的实施方式中,
38.所述第三单元还用于:
39.给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。
40.在一种可选的实施方式中,
41.所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。
42.本公开实施例提供一种代码重复检测方法,所述方法包括:
43.基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;
44.根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
45.若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
46.若无,则保存所述目标代码文件。
47.本公开实施例的代码重复检测方法检测到功能重复代码后,可以删除代码,减少打包后的文件大小,提升前端页面开发的效率。
附图说明
48.图1为本公开实施例提供的一种代码重复检测方法的流程示意图;
49.图2为本公开实施例提供的一种代码重复检测装置的结构示意图。
具体实施方式
50.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
51.本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
52.应当理解,在本公开的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
53.应当理解,在本公开中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
54.应当理解,在本公开中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。
55.应当理解,在本公开中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。
56.取决于语境,如在此所使用的“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。
57.下面以具体地实施例对本公开的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
58.图1示例性地示出本公开实施例提供的一种代码重复检测方法的流程示意图,如图1所示,所述方法包括:
59.步骤s101、基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的
扫描信息;
60.示例性地,当代码重复检测工具配置完成后,可以在接收到代码文件时,对接收到的代码文件进行扫描。扫描的方式可以是实时扫描或定时扫描,具体为,当代码重复检测工具接收到代码文件时,代码重复检测工具实时对接收到的代码文件进行扫描。
61.或者,当代码重复检测工具接收到代码文件时,代码重复检测工具根据预设时长或时刻,在接收到代码文件的时长或时刻满足预设时长或时刻时,对代码文件进行扫描。当代码重复检测工具对代码文件进行扫描时,读取扫描到的代码文件信息。
62.步骤s102、根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
63.在一种可选的实施方式中,
64.所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法包括:
65.获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,
66.若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
67.示例性地,可以获取目标代码文件的功能注释,提取功能注释的关键词,通过功能注释的关键词,可以确定目标代码文件的主要功能;
68.同时,获取已有代码文件的功能注释的关键词,通过将两者的关键词进行匹配,能够获取匹配度,若匹配度超过预设阈值,则判定目标代码文件对应的功能与已有代码文件的功能重复,
69.其中,预设阈值可以是根据用户实际需要进行设定,本公开实施例对其值并不进行限定。
70.在一种可选的实施方式中,
71.所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法还包括:
72.将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,
73.若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
74.示例性地,除了可以获取代码文件的功能注释的关键词以外,还可以直接对比两个代码文件的相似度,其中,比较代码文件的相似度可以是通过比较代码文件中主要代码的相似度,例如整体的代码逻辑、所使用的主要函数等;
75.若相似度超过预设阈值,则判定目标代码文件对应的功能与已有代码文件的功能重复。
76.步骤s103、若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
77.若无,则保存所述目标代码文件。
78.在一种可选的实施方式中,
79.所述给出已有代码的指示文件的方法包括:
80.给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。
81.在一种可选的实施方式中,
82.所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。
83.示例性地,给出已有代码的指示文件可以包括给出已有代码所在数据库的位置,可以直接调用相应的数据库,然后找到对应的代码文件,
84.也可以给出代码文件的存储位置,开发人员直接搜索;
85.还可以给出已有代码的引用函数和/或引用方法,直接引用相应的函数,或者代码文件。
86.需要说明的是,本公开实施例对于给出已有代码的指示文件的方法只是示例性地说明,本公开实施例对此并不进行限定。
87.本公开实施例采用一种通过工具去限制javascript写完方法后必须进行功能检查,如果检查后发现有同样功能的方法,则报错提醒存在相同方法;
88.当编写javascript方法时,会通过工具检测是否跟其他方法存在同样的逻辑功能,如果存在,则报错警告,开发人员获得信息后,可以直接使用已经存在的方法。
89.本公开实施例提供一种代码重复检测方法,所述方法包括:
90.基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;
91.根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
92.若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
93.若无,则保存所述目标代码文件。
94.本公开实施例的代码重复检测方法检测到功能重复代码后,可以删除代码,减少打包后的文件大小,提升前端页面开发的效率。
95.图2示例性地示出本公开实施例提供的一种代码重复检测装置的结构示意图,如图2所示,所述装置包括:
96.第一单元21,用于基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;
97.第二单元22,用于根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,
98.第三单元23,用于若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;
99.若无,则保存所述目标代码文件。
100.在一种可选的实施方式中,
101.所述第二单元22还用于:
102.获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,
103.若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的
功能重复。
104.在一种可选的实施方式中,
105.所述第二单元22还用于:
106.将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,
107.若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。
108.在一种可选的实施方式中,
109.所述第三单元23还用于:
110.给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。
111.在一种可选的实施方式中,
112.所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。
113.本公开还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
114.其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(rom)、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
115.在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
116.最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
技术特征:
1.一种代码重复检测方法,其特征在于,包括:基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;若无,则保存所述目标代码文件。2.根据权利要求1所述的方法,其特征在于,所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法包括:获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。3.根据权利要求1所述的方法,其特征在于,所述判断所述目标代码文件对应的功能是否与已有代码文件的功能重复的方法还包括:将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。4.根据权利要求1所述的方法,其特征在于,所述给出已有代码的指示文件的方法包括:给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。5.根据权利要求1所述的方法,其特征在于,所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。6.一种代码重复检测装置,其特征在于,包括:第一单元,用于基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;第二单元,用于根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,第三单元,用于若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;若无,则保存所述目标代码文件。7.根据权利要求6所述的装置,其特征在于,所述第二单元还用于:获取所述目标代码文件对应的功能注释,提取所述功能注释的关键词,将所述目标代码文件对应的功能注释的关键词与已有代码文件的功能注释的关键词进行匹配,若匹配度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。8.根据权利要求6所述的装置,其特征在于,所述第二单元还用于:
将所述目标代码文件的代码与已有代码进行代码对比,获取所述目标代码与已有代码的相似度,若所述相似度超过预设阈值,则判定所述目标代码文件对应的功能与已有代码文件的功能重复。9.根据权利要求6所述的装置,其特征在于,所述第三单元还用于:给出已有代码所在数据库和/或代码文件中的存储位置,和/或已有代码的引用函数和/或引用方法。10.根据权利要求6所述的装置,其特征在于,所述代码重复检测工具包括nodejs工具,所述代码文件包括javascript文件。
技术总结
本公开提供一种代码重复检测方法及装置,所述方法包括基于预先安装并配置完成的代码重复检测工具,获取目标代码文件的扫描信息;根据所述扫描信息,判断所述目标代码文件对应的功能是否与已有代码文件的功能重复,若有,则进行报警提醒,删除新的功能重复的目标代码文件,并给出已有代码的指示文件;若无,则保存所述目标代码文件。本公开的代码重复检测方法检测到功能重复代码后,可以删除代码,减少打包后的文件大小,提升前端页面开发的效率。包后的文件大小,提升前端页面开发的效率。包后的文件大小,提升前端页面开发的效率。
技术研发人员:高扬
受保护的技术使用者:上海众言网络科技有限公司
技术研发日:2021.11.10
技术公布日:2022/3/8