CN113467781A - 一种冗余文件的确定方法、装置和设备 - Google Patents
一种冗余文件的确定方法、装置和设备 Download PDFInfo
- Publication number
- CN113467781A CN113467781A CN202110743196.3A CN202110743196A CN113467781A CN 113467781 A CN113467781 A CN 113467781A CN 202110743196 A CN202110743196 A CN 202110743196A CN 113467781 A CN113467781 A CN 113467781A
- Authority
- CN
- China
- Prior art keywords
- files
- file
- detected
- directory
- ignore
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种冗余文件的确定方法、装置和设备,其中,该方法包括:在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;获取待检测目录下的待检测文件集合;根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;将所述无用文件子集中的文件作为冗余文件。在本说明书实施例中,可以高效、准确地确定出目标项目代码中的冗余文件,使得项目更加规范和易于维护,进而有效提升开发和运维效率。
Description
技术领域
本说明书实施例涉及大数据技术领域,特别涉及一种冗余文件的确定方法、装置和设备。
背景技术
随着网站或者系统功能逐渐复杂,网站或者系统的项目代码量越来越大。同时网站或者系统一般都是由多人协作开发,即多人开发个和维护一套项目代码,每个开发者开发行为或者开发规范的不统一,比如开发者在某个阶段引入了某个文件,后期没有使用到这个文件,开发者后期也没有删除这些未使用的文件,导致项目代码中逐渐会有很多冗余的文件,例如:图片资源、字体文件、样式资源文件(CSS文件)、交互资源(JavaScript文件)、组件文件(VUE文件)等,从而使得项目越来越不好维护。
现有技术中,通常是通过开发者手动检索各个文件在项目中是否使用,若某个文件没有使用到可以将这个文件删除。现有技术中规范化代码项目的方法会增加很多人工工作量,耗时较多,并且会存在因检索不充分或者不清楚文件的作用导致误删文件的可能。由此可见,采用现有技术中的技术方案无法高效、准确的识别出项目中的冗余文件。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书实施例提供了一种冗余文件的确定方法、装置和设备,以解决现有技术中无法高效、准确的识别出项目中的冗余文件的问题。
本说明书实施例提供了一种冗余文件的确定方法,包括:在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;获取待检测目录下的待检测文件集合;根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;将所述无用文件子集中的文件作为冗余文件。
本说明书实施例还提供了一种冗余文件的确定装置,包括:第一获取模块,用于在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;第二获取模块,用于获取待检测目录下的待检测文件集合;确定模块,用于根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;处理模块,用于将所述无用文件子集中的文件作为冗余文件。
本说明书实施例还提供了一种冗余文件的确定设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例的步骤。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现本说明书实施例中任意一个方法实施例的步骤。
本说明书实施例提供了一种冗余文件的确定方法,由于在打包构建过程中会分析项目的依赖关系,因此,可以在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合。进一步的,可以通过获取待检测目录下的待检测文件集合,确定出需要检测是否为冗余文件的文件,可以基于依赖文件集合和所述待检测文件集合,确定出未被调用的文件,未被调用的文件可以视为无用的文件,因此,可以将所述无用文件子集中的文件作为冗余文件。从而可以高效、准确地确定出目标项目代码中的冗余文件,使得项目更加规范和易于维护,进而有效提升开发和运维效率。
附图说明
此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,并不构成对本说明书实施例的限定。在附图中:
图1是根据本说明书实施例提供的冗余文件的确定方法的步骤示意图;
图2是根据本说明书实施例提供的冗余文件的确定装置的结构示意图;
图3是根据本说明书实施例提供的冗余文件的确定设备的结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本说明书实施例的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书实施例,而并非以任何方式限制本说明书实施例的范围。相反,提供这些实施方式是为了使本说明书实施例公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本说明书实施例的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本说明书实施例公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
虽然下文描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。
请参阅图1,本实施方式可以提供一种冗余文件的确定方法。该冗余文件的确定方法可以用于高效、准确地确定出目标项目代码中的冗余文件,使得项目更加规范和易于维护,进而有效提升开发和运维效率。上述冗余文件的确定方法可以包括以下步骤。
S101:在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合。
在本实施方式中,由于打包构建是指将项目代码从开发态(源代码)编译为生产环境需要的代码的过程,在打包构建过程中会分析项目的依赖关系。因此,可以在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合。
在本实施方式中,网站或者系统的代码都分为前端代码和后端代码。其中,前端代码主要负责页面的展现、页面交互操作;后端代码主要实现网站或者系统的功能,如增加、删除、修改和查询数据等操作。上述目标项目代码可以为待进行冗余文件识别的代码,在一些实施例中,上述目标项目代码可以为网站或者系统中目标项目的前端代码。当然可以理解的是,可以为其它需要进行冗余分析的代码,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,前端代码工程都需要相应的构建工具对工程进行资源打包编译,打包编译后之后将编译输出的资源文件部署到服务器,完成前端代码工程的上线。常见的构建工具有Webpack、rollup、vite等,构建工具会对前端代码工程中的图片资源文件(png、jpg、svg等)、字体资源文件、样式文件(CSS文件,层叠样式表文件)、JavaScript文件(交互资源文件)进行代码转换操作(例如:ES6转换为ES5)、资源合并、资源压缩等操作,使得前端代码工程编译为可以直接在浏览器上运行的代码,同时也会提升网站或者系统的运行性能。其中,上述ES6、ES5是JavaScript的一个版本标准,JavaScript是一种高级的、多范式、解释型的编程语言,是一门基于原型、函数先行的语言,它支持面向对象编程、命令式编程以及函数式编程。
在本实施方式中,目标项目的开发人员在调用指令对目标项目代码进行打包构建时,可以触发对目标项目代码进行冗余文件识别的流程。因此,可以在对目标项目代码进行打包构建的特定时刻对打包构建文件做依赖分析,从而确定本次打包构建需要哪些文件,得到上述依赖文件集合。上述依赖文件集合的格式可以为数组等,上述依赖文件集合中可以包含多个依赖文件的信息,上述依赖文件的信息可以包括依赖文件的文件名、目录、文件类型等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
S102:获取待检测目录下的待检测文件集合。
在本实施方式中,目标项目的开发人员可以预先配置待检测目录,其中,上述待检测目录可以用于表示需要检测哪个目录有冗余文件。因此,在触发对目标项目代码进行冗余文件识别的流程时,可以获取待检测目录下的待检测文件集合。
在本实施方式中,上述待检测目录可以为一个也可以为多个,在一些实施例中,上述待检测目录也可以为一个集合,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以利用glob插件获取待检测目录下的待检测文件集合,其中,glob插件的作用是匹配目录下文件,主要用来获取某个目录下的文集集合。
在本实施方式中,glob插件可以使用path.resolve函数获取待检测目录,例如:path.resolve(process.cwd(),'./src')的结果就是分析工程目录下的src文件夹,待检测目录的值就是’./src’。使用glob插件的glob.sync(`${待检测目录}/**/*.*`)方法就可以获取待检测目录下的所有文件(包括子目录下文件),待检测目录下的所有文件返回类型为数组(文件列表),从而得到待检测文件集合。
S103:根据依赖文件集合和待检测文件集合,确定待检测文件集合中无用文件子集。
在一个实施方式中,可以根据上述依赖文件集合和待检测文件集合,确定待检测文件集合中无用文件子集。其中,上述无用文件子集中可以包含至少一个冗余文件,当然可以理解的是,在一些情况下上述无用文件子集也可以为空,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以遍历待检测文件集合中的每一个文件,判断这个文件是否在打包构建过程得到依赖文件集合中,如果存在则说明这个文件不是冗余文件,如果不存在则说明这个文件未被调用过,是冗余文件。
S104:将无用文件子集中的文件作为冗余文件。
在本实施方式中,未被调用的文件说明是无用的,因此,可以将无用文件子集中的文件作为冗余文件。在冗余文件为多个的情况下,可以将确定的冗余文件记录为冗余文件数组,数组中的每个元素都是一个冗余文件。
在本实施方式中,可以向目标项目的开发人员反馈识别到的冗余文件,并进行展示。开发者可以根据冗余文件信息,确定冗余文件是否有用,如果无用则可以对冗余文件进行删除操作,如果文件还有用可以进行备份等操作,以保证前端代码的纯净和易于维护。当然可以理解的是,还可以对冗余文件进行其它操作,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
从以上的描述中,可以看出,本说明书实施例实现了如下技术效果:由于在打包构建过程中会分析项目的依赖关系,因此,可以在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合。进一步的,可以通过获取待检测目录下的待检测文件集合,确定出需要检测是否为冗余文件的文件,可以基于依赖文件集合和待检测文件集合,确定出未被调用的文件,未被调用的文件可以视为无用的文件,因此,可以将无用文件子集中的文件作为冗余文件。从而可以高效、准确地确定出目标项目代码中的冗余文件,使得项目更加规范和易于维护,进而有效提升开发和运维效率。
在一个实施方式中,对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合,可以包括:利用Webpack插件对目标项目代码进行打包构建,并在目标时刻获取打包构建所需的依赖文件信息。进一步的,可以将依赖文件信息的数据类型转换为数组,得到依赖文件集合。
在本实施方式中,由于构建工具Webpack在前端代码打包构建中使用率最高,因此,可以利用Webpack插件对目标项目代码进行打包构建。其中,上述Webpack是一个前端资源加载/打包工具,可以根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。当然可以理解的是,还可以采用其他构建工具,例如:rollup和vite等实现相同的功能和效果,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以通过开发Webpack插件,从而可以在Webpack构建流程中的特定时机注入扩展逻辑来改变构建结果或其它期望完成的事情。
在本实施方式中,网站或者系统的构建产物是静态资源文件,静态资源可以包括html文件(浏览器可以打开的文件)、CSS样式文件(网站页面的样式)、JavaScript文件(负责网站交互的文件)、图片资源、字体资源等文件。利用Webpack对目标项目代码进行打包构建的构建时刻主要包括以下阶段:
(1)environment,在编译器准备环境时调用,时机就在配置文件中初始化插件之后;
(2)afterEnvironment,当编译器环境设置完成后,在environment后直接调用;
(3)entryOption,在Webpack选项中的entry被处理过之后调用;
(4)afterPlugins,在初始化内部插件集合完成设置之后调用;
(5)afterResolvers,resolver设置完成之后触发;
(6)initialize,当编译器对象被初始化时调用;
(7)beforeRun,在开始执行一次构建之前调用,compiler.run方法开始执行后立刻进行调用;
(8)run,在开始读取records之前调用;
(9)beforeCompile,在创建compilation parameter之后执行,compilation是一个编译对象,他会存储编译一个entry的所有信息,包括他的依赖,对应的配置等;
(10)compile,beforeCompile之后立即调用,但在一个新的compilation创建之前;
(11)thisCompilation,初始化compilation时调用,在触发compilation事件之前调用;
(12)compilation,compilation创建之后执行;
(13)make,compilation结束之前执行;
(14)afterCompile,compilation结束和封印之后执行;
(15)shouldEmit,在输出asset之前调用,返回一个布尔值,告知是否输出;
(16)emit,输出asset到output目录之前执行;
(17)afterEmit,输出asset到output目录之后执行;
(18)assetEmitted,在asset被输出时执行;此钩子可以访问被输出的asset的相关信息,例如它的输出路径和字节内容;
(19)done,在compilation完成时执行;
(20)failed,在compilation失败时调用。
在本实施方式中,构建过程需要的依赖文件信息在beforeRun阶段就会获得,因此,上述目标时刻可以为beforeRun阶段后的时刻。优选的,上述目标时刻可以为emit时机。
在本实施方式中,Webpack插件可以包含apply函数,apply函数内容为插件执行时机(钩子)函数,每个钩子函数的第二个参数是回调函数(回调函数也是一种函数,回调函数表示在某个事件时执行的函数),其中回调函数的compilation参数含有本次构建信息,compilation的fileDependencies属性包含本次打包构建所需要的所有依赖文件,从而可以得到在目标时刻获取打包构建所需的依赖文件信息。
在本实施方式中,fileDependencies属性返回的数据类型是Set(集合),由于目标项目代码为JavaScript代码,JavaScript代码在做集合操作(如差集)时,需要使用数组的方法实现(JavaScript中没有可以直接使用的集合操作的接口),因此,可以将fileDependencies属性返回的数据(Set类型)转换为数组(array类型),得到依赖文件集合,为后续确定冗余文件做准备。
在一个实施方式中,在获取待检测目录下的待检测文件集合之前,还可以包括:获取待检测目录。确定待检测目录的参数类型是否为字符串。在确定为字符串的情况下,可以确定待检测目录是否满足相对路径或者绝对路径;在确定待检测目录满足相对路径或者绝对路径的情况下,待检测目录的校验通过。
在本实施方式中,目标项目的开发人员可以预先配置directories参数,上述directories参数可以为配置的待检测目录,待检测目录的参数类型为字符串,待检测目录支持相对路径和绝对路径,相对路径以‘.’字符开始,绝对路径以‘/’字符开始。
在本实施方式中,在触发检测冗余文件的流程之后,可以获取待检测目录,并对待检测目录进行校验。具体的,可以确定待检测目录的参数类型是否为字符串,以及是否满足相对路径或绝对路径的格式。如果确定待检测目录的参数类型为字符串并且满足相对路径或绝对路径的格式,则待检测目录的校验通过可以进行下一步操作,获取待检测目录下的待检测文件集合。
在一个实施方式中,在确定待检测目录的参数类型是否为字符串之后,还可以包括:在确定不为字符串的情况下,确定目标处理对象,可以向目标处理对象反馈参数配置错误的提示信息。
在本实施方式中,在确定待检测目录的参数类型不是字符串的情况下,说明获取的待检测目录的参数配置错误,可以确定目标处理对象。其中,上述目标处理对象可以为目标项目的开发人员,当然可以理解的是,也可以为其它用户,例如:运维人员、配置待检测目录的人员等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括待检测目录的具体参数值、校验结果等信息以提示目标处理对象是否需要对待检测目录进行修改。
在一个实施方式中,在确定待检测目录是否满足相对路径或者绝对路径的格式之后,还可以包括:在确定待检测目录不满足相对路径或者绝对路径的格式的情况下,确定目标处理对象,并向目标处理对象反馈参数配置错误的提示信息。
在本实施方式中,在确定待检测目录不满足相对路径或者绝对路径的格式的情况下,说明获取的待检测目录的参数配置错误,可以确定目标处理对象。其中,上述目标处理对象可以为目标项目的开发人员,当然可以理解的是,也可以为其它用户,例如:运维人员、配置待检测目录的人员等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括待检测目录的具体参数值、校验结果等信息以提示目标处理对象是否需要对待检测目录进行修改。
在一个实施方式中,根据依赖文件集合和待检测文件集合,确定待检测文件集合中无用文件子集,可以包括:确定是否配置有忽略文件和/或忽略目录,在确定没有配置有忽略文件和/或忽略目录的情况下,可以将在待检测文件集合但是不在依赖文件集合中的文件作为无用文件,生成无用文件子集。
在本实施方式中,由于一些文件为基础文件或者特殊文件,即使在打包构建过程中未使用也需要保留,因此,可以预先设置忽略目录或者忽略文件,也可以同时设置忽略目录和忽略文件,也可以不设置忽略目录和忽略文件,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以将excludeDirectories参数为配置忽略目录,忽略目录的参数类型为数组,可以配置多个忽略目录。excludeDirectories参数默认为空,为空则表示不设置忽略目录。数组的每一个元素可以是一个具体的忽略目录(类型为字符串),忽略目录可以支持相对路径和绝对路径。
在本实施方式中,可以将excludeFiles参数为配置忽略文件,忽略文件的参数类型为数组,可以配置多个忽略文件。excludeFiles参数默认为空,为空则表示不设置忽略文件。数组的每一个元素可以是一个具体的忽略文件(格式为字符串),文件名可以支持正则表达式,从而可以忽略一类文件,例如:excludeFiles:['test.js','test2.css'],会忽略文件名称为test.js和test2.css文件;excludeFiles:['*test.js','test2*.css'],会忽略文件名称中以test结尾的js文件和test2开始的CSS文件。
在本实施方式中,在确定没有配置有忽略文件和/或忽略目录的情况下,可以对待检测文件集合和依赖文件集合做差集操作,从而可以得到在待检测文件集合但是不在依赖文件集合中的文件的集合,可以将在待检测文件集合但是不在依赖文件集合中的文件作为无用文件,生成无用文件子集。
在一个实施方式中,在确定是否配置有忽略文件和/或忽略目录之后,还可以包括:在确定配置有忽略目录但是没有配置忽略文件的情况下,可以获取忽略目录下的特征文件集合。将在待检测文件集合但是不在依赖文件集合和特征文件集合中的文件作为无用文件,生成无用文件子集。
在本实施方式中,在确定配置有忽略目录但是没有配置忽略文件的情况下,可以获取忽略目录下的特征文件集合。忽略目录的参数类型为数组,数组的每一个元素是一个忽略目录,循环遍历数组的每一个元素,使用glob插件获取每一个忽略目录下的文件集合,将每个忽略目录下的文件存储到一个数组中,可以得到特征文件集合。
在本实施方式中,可以对待检测文件集合、依赖文件集合和特征文件集合进行差集运算,得到在待检测文件集合但是不在依赖文件集合和特征文件集合中的文件,可以将在待检测文件集合但是不在依赖文件集合和特征文件集合中的文件作为无用文件。
在本实施方式中,可以先确定出在待检测文件集合但是不在依赖文件集合中的第一文件集合,再确定出在第一文件集合中但是不在特征文件集合中的第二文件集合,从而可以将第二文件集合作为无用文件子集。
在一个实施方式中,在获取忽略目录下的特征文件集合之前,还可以包括:获取忽略目录,并确定忽略目录的参数类型是否为数组。在确定为数组的情况下,可以确定数组中的每个元素是否为字符串并且符合相对路径或者绝对路径的格式;在确定数组中的每个元素为字符串并且符合相对路径或者绝对路径的格式的情况下,忽略目录的校验通过。
在本实施方式中,为了准确地获取得到特征文件集合,可以先对忽略目录进行校验,可以确定忽略目录的参数类型是否为数组,以及数组的每一个元素是否为字符串并且符合相对路径或者绝对路径的格式。在确定忽略目录的参数类型为数组,以及数组的每一个元素为字符串并且符合相对路径或者绝对路径的格式的情况下,可以确定忽略目录校验通过,可以执行下一步操作,获取忽略目录下的特征文件集合。
在本实施方式中,在确定忽略目录的参数类型不是数组的情况下,说明获取的忽略目录的参数配置错误,可以确定目标处理对象。其中,上述目标处理对象可以为目标项目的开发人员,当然可以理解的是,也可以为其它用户,例如:运维人员、配置忽略目录的人员等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括忽略目录的具体参数值、校验结果等信息以提示目标处理对象是否需要对忽略目录进行修改。
在本实施方式中,在确定数组中不是每个元素都是字符串或者有元素不符合相对路径或者绝对路径的格式的情况下,说明获取的忽略目录的参数配置错误,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括忽略目录的具体参数值、校验结果等信息以提示目标处理对象是否需要对忽略目录进行修改。
在一个实施方式中,在确定是否配置有忽略文件和/或忽略目录之后,还可以包括:在确定配置有忽略文件但是没有配置忽略目录的情况下,可以获取忽略文件集合;将在待检测文件集合但是不在依赖文件集合和忽略文件集合中的文件作为无用文件,生成无用文件子集。
在本实施方式中,在确定配置有忽略文件但是没有配置忽略目录的情况下,可以获取忽略文件集合。由于忽略文件的参数类型为数组,数组的每一个元素是一个忽略文件,循环遍历数组中的每一个元素,使用glob插件可以获取得到每个忽略文件,可以将每个忽略文件的文件存储到数组中,从而可以得到忽略文件集合。
在本实施方式中,由于忽略文件集合中的文件是需要忽略的文件,因此,需要剔除待检测文件集合中在忽略文件集合中的文件,可以对待检测文件集合、依赖文件集合和忽略文件集合进行差集运算,将在待检测文件集合但是不在依赖文件集合和忽略文件集合中的文件作为无用文件,从而生成无用文件子集。
在一个实施方式中,在获取忽略文件集合之前,还可以包括:获取配置的忽略文件,确定忽略文件的参数类型是否为数组。在确定为数组的情况下,可以确定数组中的每个元素是否为字符串。在确定数组中的每个元素为字符串情况下,忽略目录的校验通过。
在本实施方式中,为了准确地获取得到忽略文件集合,可以先对忽略文件进行校验,可以确定忽略文件的参数类型是否为数组,以及数组的每一个元素是否为字符串。在确定忽略文件的参数类型为数组以及数组的每一个元素为字符串的情况下,可以确定忽略文件校验通过,可以执行下一步操作,获取忽略文件集合。
在本实施方式中,在确定忽略文件的参数类型不是数组的情况下,说明获取的待检测目录的参数配置错误,可以确定目标处理对象。其中,上述目标处理对象可以为目标项目的开发人员,当然可以理解的是,也可以为其它用户,例如:运维人员、配置忽略文件的人员等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括忽略文件的具体参数值、校验结果等信息以提示目标处理对象是否需要对忽略文件进行修改。
在本实施方式中,在确定数组中不是每个元素都是字符串的情况下,说明获取的忽略文件的参数配置错误,可以向确定的目标处理对象反馈参数配置错误的提示信息,上述提示信息中可以包括忽略文件的具体参数值、校验结果等信息以提示目标处理对象是否需要对忽略文件进行修改。
在一个实施方式中,在确定是否配置有忽略文件和/或忽略目录之后,还可以包括:在确定配置有忽略文件和忽略目录的情况下,获取忽略目录下的特征文件集合,并获取忽略文件集合。可以将在待检测文件集合但是不在依赖文件集合、忽略文件集合和特征文件集合中的文件作为无用文件,生成无用文件子集。
在本实施方式中,由于忽略目录的参数类型为数组,数组的每一个元素是一个忽略目录,因此,可以循环遍历数组的每一个元素,使用glob插件获取每一个忽略目录下的文件集合,将每个忽略目录下的文件存储到一个数组中,可以得到特征文件集合。
在本实施方式中,由于忽略文件的参数类型为数组,数组的每一个元素是一个忽略文件,因此,可以循环遍历数组中的每一个元素,使用glob插件可以获取得到每个忽略文件,可以将每个忽略文件的文件存储到数组中,从而可以得到忽略文件集合。
在本实施方式中,由于忽略文件集合和特征文件集合中的文件是需要忽略的文件,因此,可以将在待检测文件集合但是不在依赖文件集合、忽略文件集合和特征文件集合中的文件作为无用文件,生成无用文件子集。
在一个实施方式中,在将无用文件子集中的文件作为冗余文件之后,还可以包括:确定目标项目代码对应的目标处理对象。可以将冗余文件在目标处理对象的界面中按照预设格式展示;其中,预设格式可以包括:预设字体颜色、预设背景色、预设下划线要求。
在本实施方式中,上述目标处理对象可以为目标项目的开发人员,当然可以理解的是,也可以为其它用户,例如:运维人员、触发冗余文件识别流程的人员等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,可以循环编译最终的冗余文件数组的每一个元素,使用chalk插件在编辑器控制台输出冗余文件信息。
在本实施方式中,可以利用chalk插件将冗余文件进行个性化的输出,上述chalk插件的作用是个性化输出控制台样式。冗余文件可以在控制台的界面中展示,可以预先配置字符的字体颜色、背景色、下划线等样式,从而可以按照预设格式展示,以给用户良好的体验。
在本实施方式中,展示的冗余文件可以包含冗余文件的文件名、文件目录等信息,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在一个实施方式中,可以将上述实施例即成为一个插件,开发人员可以利用NPM或者yarn安装插件,最终确定的冗余文件可以在代码编辑器(例如:vscode)的控制台展示,开发人员可以根据展示冗余文件进行判断,是否需要删除或者备份,或者是否需要进行其它处理。其中,NPM是JavaScript的包管理工具,通过NPM可以安装、共享、分发代码,管理项目依赖关系。yarn是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。
基于同一发明构思,本说明书实施例中还提供了一种冗余文件的确定装置,如下面的实施例。由于冗余文件的确定装置解决问题的原理与冗余文件的确定方法相似,因此冗余文件的确定装置的实施可以参见冗余文件的确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图2是本说明书实施例的冗余文件的确定装置的一种结构框图,如图2所示,可以包括:第一获取模块201、第二获取模块202、确定模块203、处理模块204,下面对该结构进行说明。
第一获取模块201,可以用于在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;
第二获取模块202,可以用于获取待检测目录下的待检测文件集合;
确定模块203,可以用于根据依赖文件集合和待检测文件集合,确定待检测文件集合中无用文件子集;
处理模块204,可以用于将无用文件子集中的文件作为冗余文件。
在本实施方式中,目标项目的开发人员可以预先配置待检测目录,其中,上述待检测目录可以用于表示需要检测哪个目录有冗余文件。因此,在触发对目标项目代码进行冗余文件识别的流程时,可以获取待检测目录下的待检测文件集合。上述待检测目录可以为一个也可以为多个,在一些实施例中,上述待检测目录也可以为一个集合,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
从以上的描述中,可以看出,本说明书实施例实现了如下技术效果:由于在打包构建过程中会分析项目的依赖关系,因此,可以在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合。进一步的,可以通过获取待检测目录下的待检测文件集合,确定出需要检测是否为冗余文件的文件,可以基于依赖文件集合和待检测文件集合,确定出未被调用的文件,未被调用的文件可以视为无用的文件,因此,可以将无用文件子集中的文件作为冗余文件。从而可以高效、准确地确定出目标项目代码中的冗余文件,使得项目更加规范和易于维护,进而有效提升开发和运维效率。
本说明书实施例实施方式还提供了一种电子设备,具体可以参阅图3所示的基于本说明书实施例提供的冗余文件的确定方法的电子设备组成结构示意图,所述电子设备具体可以包括输入设备31、处理器32、存储器33。其中,所述输入设备31具体可以用于输入目标项目代码。所述处理器32具体可以用于在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;获取待检测目录下的待检测文件集合;根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;将所述无用文件子集中的文件作为冗余文件。所述存储器33具体可以用于存储依赖文件集合等数据。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该电子设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书实施例实施方式中还提供了一种基于冗余文件的确定方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时可以实现:在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;获取待检测目录下的待检测文件集合;根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;将所述无用文件子集中的文件作为冗余文件。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本说明书实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本说明书实施例不限制于任何特定的硬件和软件结合。
虽然本说明书实施例提供了如上述实施例或流程图所述的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本说明书实施例提供的执行顺序。所述的方法的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本说明书实施例的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本说明书实施例的优选实施例而已,并不用于限制本说明书实施例,对于本领域的技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
Claims (16)
1.一种冗余文件的确定方法,其特征在于,包括:
在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;
获取待检测目录下的待检测文件集合;
根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;
将所述无用文件子集中的文件作为冗余文件。
2.根据权利要求1所述的方法,其特征在于,对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合,包括:
利用Webpack插件对目标项目代码进行打包构建,并在目标时刻获取打包构建所需的依赖文件信息;
将所述依赖文件信息的数据类型转换为数组,得到所述依赖文件集合。
3.根据权利要求2所述的方法,其特征在于,所述目标时刻为beforeRun阶段后的时刻。
4.根据权利要求1所述的方法,其特征在于,在获取待检测目录下的待检测文件集合之前,还包括:
获取所述待检测目录;
确定所述待检测目录的参数类型是否为字符串;
在确定为字符串的情况下,确定所述待检测目录是否满足相对路径或者绝对路径的格式;
在确定所述待检测目录满足相对路径或者绝对路径的格式的情况下,所述待检测目录的校验通过。
5.根据权利要求4所述的方法,其特征在于,在确定所述待检测目录的参数类型是否为字符串之后,还包括:
在确定不为字符串的情况下,确定目标处理对象;
向所述目标处理对象反馈参数配置错误的提示信息。
6.根据权利要求4所述的方法,其特征在于,在确定所述待检测目录是否满足相对路径或者绝对路径的格式之后,还包括:
在确定所述待检测目录不满足相对路径或者绝对路径的格式的情况下,确定目标处理对象;
向所述目标处理对象反馈参数配置错误的提示信息。
7.根据权利要求1所述的方法,其特征在于,根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集,包括:
确定是否配置有忽略文件和/或忽略目录;
在确定没有配置有忽略文件和/或忽略目录的情况下,将在所述待检测文件集合但是不在所述依赖文件集合中的文件作为无用文件,生成无用文件子集。
8.根据权利要求7所述的方法,其特征在于,在确定是否配置有忽略文件和/或忽略目录之后,还包括:
在确定配置有忽略目录但是没有配置忽略文件的情况下,获取所述忽略目录下的特征文件集合;
将在所述待检测文件集合但是不在所述依赖文件集合和所述特征文件集合中的文件作为无用文件,生成无用文件子集。
9.根据权利要求8所述的方法,其特征在于,在获取所述忽略目录下的特征文件集合之前,还包括:
获取所述忽略目录;
确定所述忽略目录的参数类型是否为数组;
在确定为数组的情况下,确定数组中的每个元素是否为字符串并且符合相对路径或者绝对路径的格式;
在确定数组中的每个元素为字符串并且符合相对路径或者绝对路径的格式的情况下,所述忽略目录的校验通过。
10.根据权利要求7所述的方法,其特征在于,在确定是否配置有忽略文件和/或忽略目录之后,还包括:
在确定配置有忽略文件但是没有配置忽略目录的情况下,获取忽略文件集合;
将在所述待检测文件集合但是不在所述依赖文件集合和所述忽略文件集合中的文件作为无用文件,生成无用文件子集。
11.根据权利要求10所述的方法,其特征在于,在获取忽略文件集合之前,还包括:
获取配置的忽略文件;
确定所述忽略文件的参数类型是否为数组;
在确定为数组的情况下,确定数组中的每个元素是否为字符串;
在确定数组中的每个元素为字符串情况下,所述忽略目录的校验通过。
12.根据权利要求7所述的方法,其特征在于,在确定是否配置有忽略文件和/或忽略目录之后,还包括:
在确定配置有忽略文件和忽略目录的情况下,获取所述忽略目录下的特征文件集合;
获取忽略文件集合;
将在所述待检测文件集合但是不在所述依赖文件集合、所述忽略文件集合和所述特征文件集合中的文件作为无用文件,生成无用文件子集。
13.根据权利要求1所述的方法,其特征在于,在将所述无用文件子集中的文件作为冗余文件之后,还包括:
确定所述目标项目代码对应的目标处理对象;
将所述冗余文件在所述目标处理对象的界面中按照预设格式展示;其中,所述预设格式包括:预设字体颜色、预设背景色、预设下划线要求。
14.一种冗余文件的确定装置,其特征在于,包括:
第一获取模块,用于在对目标项目代码进行打包构建的过程中获取打包构建所需的依赖文件集合;
第二获取模块,用于获取待检测目录下的待检测文件集合;
确定模块,用于根据所述依赖文件集合和所述待检测文件集合,确定所述待检测文件集合中无用文件子集;
处理模块,用于将所述无用文件子集中的文件作为冗余文件。
15.一种冗余文件的确定设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至13中任一项所述方法的步骤。
16.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现权利要求1至13中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110743196.3A CN113467781B (zh) | 2021-06-30 | 2021-06-30 | 一种冗余文件的确定方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110743196.3A CN113467781B (zh) | 2021-06-30 | 2021-06-30 | 一种冗余文件的确定方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467781A true CN113467781A (zh) | 2021-10-01 |
CN113467781B CN113467781B (zh) | 2023-02-21 |
Family
ID=77877033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110743196.3A Active CN113467781B (zh) | 2021-06-30 | 2021-06-30 | 一种冗余文件的确定方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467781B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017206899A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 信息处理方法及相关设备 |
US20180137282A1 (en) * | 2016-11-15 | 2018-05-17 | F-Secure Corporation | Remote Malware Scanning Capable of Static and Dynamic File Analysis |
US20180139216A1 (en) * | 2016-11-15 | 2018-05-17 | F-Secure Corporation | Remote Malware Scanning Capable of Static and Dynamic File Analysis |
CN108614707A (zh) * | 2018-04-27 | 2018-10-02 | 深圳市腾讯网络信息技术有限公司 | 静态代码检查方法、装置、存储介质和计算机设备 |
CN110147237A (zh) * | 2019-05-20 | 2019-08-20 | 深圳市腾讯网域计算机网络有限公司 | 一种冗余资源去除方法和装置 |
CN110413282A (zh) * | 2019-08-01 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种冗余资源处理方法、装置、设备及存储介质 |
CA3047939A1 (en) * | 2018-06-25 | 2019-12-25 | Tata Consultancy Services Limited | Automated extraction of rules embedded in software application code using machine learning |
CN112230927A (zh) * | 2020-09-17 | 2021-01-15 | 贝壳技术有限公司 | 一种文件重定向方法、代码加载控制方法及装置 |
CN112558980A (zh) * | 2020-12-15 | 2021-03-26 | 建信金融科技有限责任公司 | 多软件包管理方法及装置 |
CN112947992A (zh) * | 2021-03-31 | 2021-06-11 | 建信金融科技有限责任公司 | 代码版本管理的方法和装置 |
-
2021
- 2021-06-30 CN CN202110743196.3A patent/CN113467781B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017206899A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 信息处理方法及相关设备 |
US20180137282A1 (en) * | 2016-11-15 | 2018-05-17 | F-Secure Corporation | Remote Malware Scanning Capable of Static and Dynamic File Analysis |
US20180139216A1 (en) * | 2016-11-15 | 2018-05-17 | F-Secure Corporation | Remote Malware Scanning Capable of Static and Dynamic File Analysis |
CN108614707A (zh) * | 2018-04-27 | 2018-10-02 | 深圳市腾讯网络信息技术有限公司 | 静态代码检查方法、装置、存储介质和计算机设备 |
CA3047939A1 (en) * | 2018-06-25 | 2019-12-25 | Tata Consultancy Services Limited | Automated extraction of rules embedded in software application code using machine learning |
CN110147237A (zh) * | 2019-05-20 | 2019-08-20 | 深圳市腾讯网域计算机网络有限公司 | 一种冗余资源去除方法和装置 |
CN110413282A (zh) * | 2019-08-01 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 一种冗余资源处理方法、装置、设备及存储介质 |
CN112230927A (zh) * | 2020-09-17 | 2021-01-15 | 贝壳技术有限公司 | 一种文件重定向方法、代码加载控制方法及装置 |
CN112558980A (zh) * | 2020-12-15 | 2021-03-26 | 建信金融科技有限责任公司 | 多软件包管理方法及装置 |
CN112947992A (zh) * | 2021-03-31 | 2021-06-11 | 建信金融科技有限责任公司 | 代码版本管理的方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘以争: "打开目录浏览功能实现HFS简单文件共享的一种替代方法", 《信息与电脑(理论版)》 * |
Also Published As
Publication number | Publication date |
---|---|
CN113467781B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8032860B2 (en) | Methods for type-independent source code editing | |
US9996341B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
EP2990942B1 (en) | Service extraction and application composition | |
US8468494B2 (en) | In-line editor | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
CN111176996A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
EP3159798B1 (en) | Method and system for determining user interface usage | |
US7519956B2 (en) | Method for generating document components and managing same | |
US10949175B2 (en) | Method of carrying out modifications to a software application | |
US20080141219A1 (en) | Multiple inheritance facility for java script language | |
CN109189388A (zh) | 页面配置方法、服务器及计算机可读介质 | |
EP1452962B1 (en) | System and method for defining and using subclasses declaratively within markup | |
US7100039B2 (en) | Systems and methods for a bootstrap mechanism for software execution | |
US10956659B1 (en) | System for generating templates from webpages | |
CN110110299B (zh) | 文本变换方法、装置以及服务器 | |
CN111352631B (zh) | 一种接口兼容性检测方法及装置 | |
CN113515303A (zh) | 一种项目转型方法、装置和设备 | |
CN113467781B (zh) | 一种冗余文件的确定方法、装置和设备 | |
Queirós | Kaang: a RESTful API generator for the modern web | |
CN114816364A (zh) | 基于Swagger动态生成范本文件的方法、装置及应用 | |
Le Zou et al. | On synchronizing with web service evolution | |
US11210454B2 (en) | Method for preparing documents written in markup languages while implementing a user interface for dealing with data of an information system | |
CN117348876B (zh) | 基于freeRTOS嵌入式系统的应用开发方法、系统及介质 | |
Boyer | On the Expressive Power of Declarative Constructs in Interactive Document Scripts | |
Abbas et al. | LEARN. NET WITH PROGRAMMING (3-in-1): Covers. NET using C#, Visual Basic ASP. NET |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |