文件评审方法、装置、服务器及计算机可读存储介质与流程

文档序号:13675277阅读:133来源:国知局

本发明涉及计算机技术领域,特别涉及一种文件评审方法、装置、服务器及计算机可读存储介质。



背景技术:

文件评审为对文件进行系统性检查的过程。文件可以包括代码文件和图片文件,在软件开发的过程中,经常会对软件运行所需的文件进行文件评审,以便及时发现文件中的错误,对错误进行改进以提高软件的质量。

以文件为代码文件为例,对代码文件进行评审的过程通常由评审人员人工执行:当开发人员编写了代码文件后后,会向评审人员提交代码文件,评审人员会阅读代码文件中的代码块,按照自己的编程经验,检查代码文件中是否包括错误的代码,当确定代码文件包括错误代码时则通知开发人员,以便开发人员对代码进行改进。

在实现本发明的过程中,发明人发现相关技术至少存在以下问题:

人工进行文件评审的过程繁琐,消耗的时间较长,极大的浪费人力资源,并且很可能会遗漏错误文件,效率很低。



技术实现要素:

本发明实施例提供了一种文件评审方法、装置、服务器及计算机可读存储介质,可以解决相关技术中人工进行文件评审的过程效率低下的问题。所述技术方案如下:

第一方面,提供了一种文件评审方法,应用于服务器中,所述方法包括:

根据更新前的第一文件库与更新后的第二文件库,获取所述第一文件库与所述第二文件库之间的至少一个差异文件;

对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件;

确定所述错误文件对应的用户标识;

按照预设通知方式,通知所述用户标识对应的用户。

可选地,所述差异文件为代码文件,所述对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件,包括:

对于至少一个代码文件中的每个代码文件,获取所述代码文件中的至少一个差异代码行;

对于所述至少一个差异代码行中的每个差异代码行,当所述差异代码行包括与至少一个预设正则表达式中的任一预设正则表达式匹配的字符串时,将所述代码文件作为错误文件,所述至少一个预设正则表达式用于匹配至少一种错误字符串。

可选地,所述差异文件为代码文件,所述对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件,包括:

对于至少一个代码文件中的每个代码文件,读取所述代码文件的第一个代码行;

当所述第一个代码行包括包含预设错误标识时,将所述代码文件作为错误文件,所述预设错误标识用于指示格式为预设错误格式的代码文件。

可选地,所述对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件,包括:

对于所述至少一个差异文件中的每个差异文件,获取所述差异文件的文件大小;

当所述文件大小属于预设文件大小范围时,将所述差异文件作为错误文件。

可选地,所述差异文件为图片文件,所述对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件,包括:

对于至少一个图片文件中的每个图片文件,对所述图片文件进行文字识别;

当所述图片文件包括文字时,将所述图片文件作为错误文件。

可选地,所述根据更新前的第一文件库与更新后的第二文件库,获取所述第一文件库与所述第二文件库之间的至少一个差异文件,包括:

获取所述第一文件库的第一版本号以及所述第二文件库的第二版本号;

根据所述第一版本号和所述第二版本号,执行差异文件获取指令,得到所述至少一个差异文件。

可选地,所述方法还包括:

获取所述第二文件库的第二版本号;

当所述第二版本号与版本号记录信息中的第一版本号不同时,将所述版本号记录信息中的第一版本号更新为所述第二版本号;

确定所述第一版本号对应的第一文件库已经更新为所述第二版本号对应的第二文件库,执行所述根据更新前的第一文件库与更新后的第二文件库,获取所述第一文件库与所述第二文件库之间的至少一个差异文件的步骤。

可选地,所述确定所述错误文件对应的用户标识,包括:

获取所述错误文件的文件名称;

根据所述文件名称,查询历史提交日志,所述历史提交日志包括文件名称和用户标识之间的对应关系;

从所述历史提交日志中获取所述文件名称对应的用户标识。

第二方面,提供了一种文件评审装置,应用于服务器中,所述装置包括:

获取模块,用于根据更新前的第一文件库与更新后的第二文件库,获取所述第一文件库与所述第二文件库之间的至少一个差异文件;

评审模块,用于对于所述至少一个差异文件中的每个差异文件,当所述差异文件符合预设评审规则时,将所述差异文件作为错误文件;

确定模块,用于确定所述错误文件对应的用户标识;

通知模块,用于按照预设通知方式,通知所述用户标识对应的用户。

可选地,所述差异文件为代码文件,所述评审模块,包括:

获取子模块,用于对于至少一个代码文件中的每个代码文件,获取所述代码文件中的至少一个差异代码行;

确定子模块,用于对于所述至少一个差异代码行中的每个差异代码行,当所述差异代码行包括与至少一个预设正则表达式中的任一预设正则表达式匹配的字符串时,将所述代码文件作为错误文件,所述至少一个预设正则表达式用于匹配至少一种错误字符串。

可选地,所述差异文件为代码文件,所述评审模块,包括:

读取子模块,用于对于至少一个代码文件中的每个代码文件,读取所述代码文件的第一个代码行;

确定子模块,用于当所述第一个代码行包括包含预设错误标识时,将所述代码文件作为错误文件,所述预设错误标识用于指示格式为预设错误格式的代码文件。

可选地,所述评审模块,包括:

获取子模块,用于对于所述至少一个差异文件中的每个差异文件,获取所述差异文件的文件大小;

确定子模块,用于当所述文件大小属于预设文件大小范围时,将所述差异文件作为错误文件。

可选地,所述差异文件为图片文件,所述评审模块,包括:

识别子模块,用于对于至少一个图片文件中的每个图片文件,对所述图片文件进行文字识别;

确定子模块,用于当所述图片文件包括文字时,将所述图片文件作为错误文件。

可选地,所述获取模块,包括:

获取子模块,用于获取所述第一文件库的第一版本号以及所述第二文件库的第二版本号;

指令执行子模块,用于根据所述第一版本号和所述第二版本号,执行差异文件获取指令,得到所述至少一个差异文件。

可选地,所述获取模块,还用于获取所述第二文件库的第二版本号;

所述装置还包括:更新模块,用于当所述第二版本号与版本号记录信息中的第一版本号不同时,将所述版本号记录信息中的第一版本号更新为所述第二版本号;

所述获取模块,还用于确定所述第一版本号对应的第一文件库已经更新为所述第二版本号对应的第二文件库,执行所述根据更新前的第一文件库与更新后的第二文件库,获取所述第一文件库与所述第二文件库之间的至少一个差异文件的步骤。

可选地,所述确定模块,包括:

获取子模块,用于获取所述错误文件的文件名称;

查询子模块,用于根据所述文件名称,查询历史提交日志,所述历史提交日志包括文件名称和用户标识之间的对应关系;

所述获取子模块,还用于从所述历史提交日志中获取所述文件名称对应的用户标识。

第三方面,提供了一种服务器,包括处理器和存储器;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的计算机程序,实现第一方面所述的方法步骤。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例提供的方法、装置、服务器及计算机可读存储介质,当文件库发生更新时,服务器会自动获取文件库更新前后的差异文件,对差异文件按照预设评审规则进行自动评审,耗时较少、准确性高,节省了人力资源并提高了效率。并且,当确定差异文件为错误文件时,会自动通知错误文件关联的用户,以便用户及时获知更新的文件发生错误,对错误文件进行更正,以便保证文件库中文件的准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种实施环境的示意图;

图2是本发明实施例提供的一种文件评审方法的流程图;

图3a是本发明实施例提供的一种文件评审方法的流程图;

图3b是本发明实施例提供的一种文件评审方法的操作流程图;

图4是本发明实施例提供的一种文件评审装置的结构示意图;

图5是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例提供的一种实施环境的示意图,该实施环境包括:服务器101和至少一个终端102,服务器101和至少一个终端102可以建立连接,通过建立的连接进行通信。

服务器101和至少一个终端102可以采用分布式管理的架构,管理和控制文件库,该文件库用于存储代码文件、图片文件或者其他类型的文件。其中,服务器101用于存储文件库,终端102可以从服务器101复制文件库,并可以更新本地的文件库,例如向文件库上传文件,对文件库中的文件进行修改,之后,至少一个终端102可以对本端更新的文件库进行合并,再将合并后的文件库提交给服务器101,服务器101可以接收该文件库,作为新版本的文件库进行存储。其中,终端102可以运行文件管理工具,通过文件管理工具更新文件库,服务器101可以与文件管理工具关联,接收至少一个终端102上传的已合并的文件库。另外,已合并的文件库可以称为一个底层分支。

其中,服务器101可以是一台服务器、若干台服务器组成的服务器集群或云计算中心。终端102可以为计算机、手机、平板电脑等。

在一个示例性场景中,文件库可以为git代码仓库,git代码仓库存储了企业中各个开发人员上传的大量代码文件,服务器可以作为git工具的服务端,管理和维护git代码仓库。而终端102可以运行git工具的客户端,通过该客户端接收用户的上传指令,向git代码仓库上传相应的代码文件。其中,终端可以显示gitlab提供的用户界面,用户可以在该用户界面上触发上传指令。或者,用户可以在终端上输入命令行,该命令行包括上传指令。

图2是本发明实施例提供的一种文件评审方法的流程图,应用于服务器中,参见图2,该方法包括:

201、根据更新前的第一文件库与更新后的第二文件库,获取该第一文件库与该第二文件库之间的至少一个差异文件。

202、对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件。

203、确定该错误文件对应的用户标识。

204、按照预设通知方式,通知该用户标识对应的用户。

可选地,该差异文件为代码文件,该对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件,包括:

对于至少一个代码文件中的每个代码文件,获取该代码文件中的至少一个差异代码行;

对于该至少一个差异代码行中的每个差异代码行,当该差异代码行包括与至少一个预设正则表达式中的任一预设正则表达式匹配的字符串时,将该代码文件作为错误文件,该至少一个预设正则表达式用于匹配至少一种错误字符串。

可选地,该差异文件为代码文件,该对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件,包括:

对于至少一个代码文件中的每个代码文件,读取该代码文件的第一个代码行;

当该第一个代码行包括包含预设错误标识时,将该代码文件作为错误文件,该预设错误标识用于指示格式为预设错误格式的代码文件。

可选地,该对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件,包括:

对于该至少一个差异文件中的每个差异文件,获取该差异文件的文件大小;

当该文件大小属于预设文件大小范围时,将该差异文件作为错误文件。

可选地,该差异文件为图片文件,该对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件,包括:

对于至少一个图片文件中的每个图片文件,对该图片文件进行文字识别;

当该图片文件包括文字时,将该图片文件作为错误文件。

可选地,该根据更新前的第一文件库与更新后的第二文件库,获取该第一文件库与该第二文件库之间的至少一个差异文件,包括:

获取该第一文件库的第一版本号以及该第二文件库的第二版本号;

根据该第一版本号和该第二版本号,执行差异文件获取指令,得到该至少一个差异文件。

可选地,该方法还包括:

获取该第二文件库的第二版本号;

当该第二版本号与版本号记录信息中的第一版本号不同时,将该版本号记录信息中的第一版本号更新为该第二版本号;

确定该第一版本号对应的第一文件库已经更新为该第二版本号对应的第二文件库,执行该根据更新前的第一文件库与更新后的第二文件库,获取该第一文件库与该第二文件库之间的至少一个差异文件的步骤。

可选地,该确定该错误文件对应的用户标识,包括:

获取该错误文件的文件名称;

根据该文件名称,查询历史提交日志,该历史提交日志包括文件名称和用户标识之间的对应关系;

从该历史提交日志中获取该文件名称对应的用户标识。

相关技术中,评审人员人工地进行文件评审时,很可能会由于疏忽,遗漏应该评审的点而引起质量问题,并且人工重复地进行评审文件的过程十分浪费人力资源。而本发明中,当开发人员上传了新文件,或者修改了已有文件时,服务器会自动将新文件以及修改后的文件作为差异文件,对差异文件按照预设评审规则进行评审,从而节省人力资源,并且,由服务器按照统一的评审规则评审每个差异文件,避免出现遗漏错误文件的情况,提高了效率。

图3a是本发明实施例提供的一种文件评审方法的流程图。该发明实施例的执行主体为服务器,以更新前的文件库称为第一文件库,更新后的文件库称为第二文件库为例进行说明,参见图3a,该方法包括:

301、服务器获取第二文件库的第二版本号,当该第二版本号与版本号记录信息中的第一版本号不同时,确定该第一版本号对应的第一文件库已经更新为该第二版本号对应的第二文件库。

在实际应用中,每当文件库发生了一次更新,例如新增了某文件、删除了某文件、修改了某文件时,文件库的版本号都会相应地进行迭代,例如从1迭代为2,从a迭代为b。结合该构思,本实施例中,服务器可以通过检测文件库的版本号是否发生变化,判断文件库是否发生更新。其中,版本号用于指示文件库当前的版本,可以为数字、字母或者其他字符串。

针对检测版本号是否发生变化的具体过程,服务器可以存储版本号记录信息,在版本号记录信息中记录每次获取文件库的版本号时得到的版本号。每当获取文件库的版本号,得到版本号时,会读取版本号记录信息中上一次记录的版本号,当两者相同时确定文件库发生更新,更新版本号记录信息中存储的版本号,执行后续获取差异文件的步骤,当两者不同时则确定文件库未发生更新,无需更新版本号记录信息。

以第一文件库的版本号为第一版本号,第二文件库的版本号为第二版本号为例,当第一文件库未发生更新时,服务器获取第一文件库的版本号时和版本号记录信息中记录的版本号时得到的均为第一版本号,两者一致,则确定第一文件库未发生更新。在第一文件库已经更新为第二文件库后,当服务器获取版本号时会得到第二版本号,而从版本号记录信息获取版本号时会得到第一版本号,当确定第一版本号和第二版本号两者不同时,确定文件库已发生更新,则将版本号记录信息中的第二版本号更新为第一版本号,执行下述步骤302。

其中,针对获取当前版本号的具体过程,在一种可能的实现方式中,服务器可以调用文件库提供的api(applicationprogramminginterface,应用程序编程接口),获取文件库对象,提取文件库对象的版本号。以文件库为git代码仓库为例,获取git代码仓库的版本号的代码块可以如下所示:

git=gitlab.gitlab(host="%s://%s:%s"%(url.scheme,url.hostname,url.portifurl.portelse80))//注释:初始化操作,配置服务器的端口号和ip地址等信息。

git.login(user="test",password="123456")//注释:通过用户名和密码进行登录。

gitprj=git.getproject(urlpath)//注释:获取git代码仓库对象。

gitbranch=git.getbranch(gitprj["id"],git_branch)//注释:获取底层分支的标识。

git_version=gitbranch["commit"]["id"]/注释:获取底层分支的版本号。

可选地,为了及时获知文件库已发生更新,服务器可以获取预设时间周期,每隔预设时间周期,获取文件库当前的版本号,以便根据该版本号检测文件库是否发生更新。其中,该预设时间间隔可以由评审人员预先在服务器中进行设置,可以为1小时、1天等。当然,服务器也可以在其他时机获取文件库当前的版本号,例如在当前时间点到达预设时间点时获取版本号、当获取到评审人员触发的获取指令时,获取文件库当前的版本号,对此不作限定。

302、服务器根据更新前的第一文件库与更新后的第二文件库,获取第一文件库与第二文件库之间的至少一个差异文件。

为了节省文件评审的时间,提高文件评审的效率,本实施例中服务器会获取第一文件库与第二文件库之间的差异文件,针对该差异文件进行评审,而无需对第二文件库中的所有文件进行评审。

其中,差异文件为第二文件库中的文件。相对第一文件库来说,差异文件为第二文件库中新增加的文件或者经过修改的文件。例如,假设第一文件库包括文件a、文件b和文件c,第二文件库包括文件a、文件b、文件c’和文件d,其中文件c’为文件c经过修改的文件,文件d为新增加的文件,则差异文件为文件c’和文件d。

针对获取差异文件的具体过程,服务器可以获取第一文件库的第一版本号以及第二文件库的第二版本号,根据第一版本号和第二版本号,确定对应的两个文件库,获取第二文件库的至少一个文件,对于该至少一个文件中的第一文件,当第一文件库中包括与该文件名称相同的第二文件时,比对第一文件和第二文件,当第一文件和第二文件内容不同时,将第一文件作为差异文件。而当第一文件库中不包括与该文件名称相同的文件时,直接将第一文件作为差异文件。

可选地,为了避免评审过程对第二文件库的影响,服务器可以确定第二文件库中的任一文件为差异文件时,可以复制该文件,并对该文件进行格式转换,得到后缀名为.diff的文件,作为差异文件。与上述例子对应,服务器得到的差异文件可以为c’.diff和文件d.diff。

可选地,当差异文件为代码文件时,在执行差异文件获取指令的过程中,服务器可以确定代码文件中的至少一个代码行中的差异代码行,向该差异代码行添加差异标识符,通过差异标识符注明差异代码行,以便后续可以根据差异标识符找到差异代码行,直接对差异代码行进行评审。该差异标识符可以为+,或者为其他符号。

其中,差异代码行是指新增加的或者被修改的代码行。当代码文件为修改了一个或多个行的代码文件时,差异代码行即为该一个或多个行,例如,假设第一文件库包括文件a、文件b和文件c,某员工对第一文件库中代码文件c中的第10行-第12行进行修改,得到修改后的代码文件c’,则生成的第二文件库会包括代码文件c’,服务器会将代码文件c’确定为差异文件,将第10行-第12行作为差异代码行,还可以在第10行-第12行之前添加+,来注明这3行是差异代码行。

另外,当代码文件为新增加的代码文件时,差异代码行即为该新增加的代码文件的所有代码行,例如,假设第一文件库包括文件a、文件b和文件c,某员工编写了共有100个代码行的代码文件d,向第一文件库提交了代码文件d,则得到的第二文件库包括文件a、文件b、文件c和文件d,服务器会将代码文件d确定为差异文件,将代码文件d中的100行均作为差异代码行,还可以在第1行-第100行之前均添加+,来注明这100行是差异代码行。

需要说明的是,上述获取差异文件以及标注差异代码行的具体过程可以封装为差异文件获取指令,差异文件获取指令的传入参数为两个文件库的版本号,传出参数为两个文件库之间的差异文件,则服务器可以获取第一版本号以及第二版本号,根据第一版本号和第二版本号,执行差异文件获取指令,得到至少一个差异文件。其中,该差异文件获取指令可以为gitdiff指令。

303、对于至少一个差异文件中的每个差异文件,当差异文件符合预设评审规则时,服务器将差异文件作为错误文件。

本实施例中预先设置了预设评审规则,该预设评审规则能够指示各种错误文件所具有的特性,对于至少一个差异文件中的每个差异文件,可以根据差异文件是否符合预设评审规则,判断差异文件是否为错误文件。

其中,当差异文件为代码文件时,服务器可以针对代码文件是否符合编写规范、代码文件的格式是否符合要求、代码文件的大小是否符合要求等角度对代码文件进行自动评审,具体参见以下方式1-方式3。当差异文件为图片文件时,服务器可以针对图片文件是否包括文字、图片文件的大小是否符合要求等角度对图片文件进行自动评审,具体参见以下方式3-方式4。

方式1、对于至少一个代码文件中的每个代码文件,获取代码文件中的至少一个差异代码行,对于至少一个差异代码行中的每个差异代码行,当该差异代码行包括与至少一个预设正则表达式中的任一预设正则表达式匹配的字符串时,将代码文件作为错误文件。

本方式为差异文件为代码文件时,评审代码文件是否符合编写规范的方式,对于至少一个代码文件中的每个代码文件,服务器可以将代码行为基本的评审单位,采用正则匹配的方式,从代码文件中获取每个差异代码行,按照预设正则表达式对该差异代码行进行评审。

针对获取差异代码行的方式,服务器可以预先存储差异标识符,逐行读取差异文件中的每一代码行,当任一代码行中包括差异标识符时,确定该代码行为差异代码行,即用户本次新添加的代码行或者经过修改的代码行,则提取该代码行并进行评审。而当代码行不包括差异标识符时,确定该代码行不为差异代码行,即用户未修改的代码行,可能之前已经评审过,则无需提取该代码行并进行评审。

针对采用正则匹配的方式评审差异代码行的过程,服务器可以获取至少一个预设正则表达式,该至少一个预设正则表达式用于匹配至少一种错误字符串,该预设正则表达式可以为按照一定顺序排列组合的字符串。对于每个差异代码行,服务器可以判断该差异代码行是否包括与预设正则表达式匹配的字符串,当差异代码行包括与预设正则表达式匹配的字符串时,认为该差异代码行与错误字符串匹配,即差异代码行中出现编写错误的代码,则确定代码文件为错误文件。当差异代码行不包括与预设正则表达式匹配的字符串时,则继续读取下一个差异代码行,当读取到最后一个差异代码行,而最后一个差异代码行也不包括与预设正则表达式匹配的字符串时,可以确定代码文件为正常文件。

进一步地,当服务器确定某个差异代码行包括与预设正则表达式匹配的字符串时,可以获取该差异代码行的行号,记录该行号,以便后续根据该行号找到编写这一代码行的用户。

针对获取预设正则表达式的方式,可以由评审人员预先对开发人员编写过程中常见的错误代码进行归纳总结,根据错误代码中的错误字符串的特点,设置相应的预设正则表达式,在服务器中存储预设正则表达式,以便根据该预设正则表达式验证差异代码行是否与错误字符串匹配。

方式2、对于至少一个代码文件中的每个代码文件,读取代码文件的第一个代码行,当第一个代码行包括包含预设错误标识时,将代码文件作为错误文件。

本方式为差异文件为代码文件时,评审代码文件的格式是否错误的方式。在实际应用中,当代码文件的格式出现错误时,可能会导致运行该代码文件时终端出现崩溃的情况,为此,可以预先确定预设错误格式,当代码文件的格式为预设错误格式时,确定代码文件为错误文件。其中,该预设错误格式可以为bomutf-8(byteordermark8-bitunicodetransformationformat,带有字节序标记的针对unicode的可变长度字符编码)格式。

针对确定代码文件的格式是否为预设错误格式的方式,由于实际应用中,代码文件的第一个代码行通常会包括一些字符串来标识自身的编写格式,结合该构思,本实施例中会预先确定错误格式对应的预设错误标识,当通过获取差异文件得到代码文件时,会读取代码文件的第一个代码行,如果该第一个代码行包含预设错误标识时,可以确定代码文件的格式错误,则将代码文件作为错误文件,其中,该预设错误标识可以为0xef0xbb0xbf,或者为其他标识。

方式3、对于至少一个差异文件中的每个差异文件,获取差异文件的文件大小,当文件大小属于预设文件大小范围时,将差异文件作为错误文件。

本方式为差异文件为代码文件或图片文件时,评审代码文件或图片文件的大小是否符合要求的方式。以图片文件为例,实际应用中,经常要求图片文件的大小不能超过一定范围,以保证能够正常存储和使用该图片文件,或者要求图片文件的大小不能小于一定范围,以保证图片文件足够清晰。

为此,可以预先设置预设文件大小范围,对于至少一个差异文件中的每个差异文件,当该差异文件的文件大小属于预设文件大小范围时,可以获知差异文件过大或过小,则会将差异文件作为错误文件。其中,该预设文件大小范围可以为根据正常的文件大小范围取非得到,或者由评审人员人工设置。

方式4、对于至少一个图片文件中的每个图片文件,对图片文件进行文字识别,当图片文件包括文字时,将图片文件作为错误文件。

本方式为差异文件为图片文件时,评审图片文件是否包括文字的方式。结合实际应用场景,例如当用户配置终端的某一应用皮肤的显示样式时、配置终端壁纸的显示样式时、配置浏览器的显示样式时,经常需要图片文件和文字作为两种独立的组件,并进行分别显示。那么,当用户切换显示样式时,图片文件和文字的样式都能分别进行调整。当文字本身属于图片文件的一部分时,当用户切换显示样式时,图片文件的样式会进行调整,而文字本身不会调整,视觉效果较差。

结合该构思,为了避免文件库向用户提供的图片文件携带文字,本实施例中,会对文件库中更新的图片文件进行文字识别,当图片文件包括文字时,会将图片文件为错误文件,以便后续通知用户将图片文件中的文字过滤掉。

针对对图片文件进行文字识别的方式,服务器可以安装文字识别工具,在运行文字识别工具的过程中对图片文件进行识别,当从图片文件中识别出汉字、字母、数字或者其他字符串时,确定图片文件为错误文件。该文字识别工具可以为tesseract工具,或者为其他ocr(opticalcharacterrecognition,光学字符识别)工具。

需要说明的是,上述方式1-方式4可以采用任意组合的方式形成评审代码文件的方式,即,服务器可以采用方式1-方式4中的任一种方式评审代码文件,当通过任一种方式确定代码文件为错误文件时,即可将代码文件为错误文件。当然,服务器可以采用方式1-方式4中的任意多种方式评审代码文件,当通过任意多种方式均确定代码文件为错误文件时,才可将代码文件为错误文件。另外,上述方式3-方式4可以采用任意组合的方式形成评审图片文件的方式,即,服务器可以采用方式3或者方式4评审图片文件,当通过某一种方式确定图片文件为错误文件时,将图片文件作为错误文件,也可当通过方式3和方式4均确定图片文件为错误文件时,将图片文件作为错误文件。

304、服务器按照预设通知方式,通知错误文件对应的用户。

通过上述步骤303,服务器可以获知至少一个差异文件中哪一个或多个文件为错误文件。为了及时更正错误文件,保证文件库中文件的准确性,当服务器从差异文件中识别出错误文件时,可以确定错误文件对应的用户标识,按照预设通知方式通知该用户标识对应的用户,以便用户更正错误文件。

针对确定用户标识的方式,在实际应用中,服务器可以存储历史提交日志,该历史提交日志包括文件名称和用户标识之间的对应关系,用于记录提交每个文件的用户。当某个用户通过终端向文件库提交某个文件时,服务器会获取该用户的用户标识和该文件的文件名称,向历史提交日志中添加两者的对应关系。那么,当确定错误文件后,服务器可以获取该错误文件的文件名称,根据该文件名称,查询历史提交日志,从该历史提交日志中获取该文件名称对应的用户标识。

在一种可能的实现方式中,查询历史提交日志来获取用户标识的过程可以封装为gitblame指令,gitblame指令的传入参数可以为文件名称,传出参数可以为对应的用户标识,当服务器确定文件名称后,可以根据文件名称执行gitblame指令,从而得到gitblame指令传出的用户标识。

针对按照预设通知方式通知用户的方式,预设通知方式可以为向用户发送通知邮件,服务器可以查询用户标识对应的邮箱地址,生成通知邮件,向该邮箱地址发送该通知邮件,该通知邮件用于通知用户其提交的文件发生错误,可以携带错误文件的文件名称,用户查看该通知邮件时,可以及时获知提交的文件出现了错误。其中,服务器可以预先存储用户标识和邮箱地址之间的对应关系,以便当确定用户标识后,可以基于该对应关系确定邮箱地址。

又如,预设通知方式还可以为向用户发送通知短信,例如服务器可以查阅该用户标识对应的手机号码,生成通知短信,该通知短信用于通知用户其提交的文件发生错误,可以携带错误文件的文件名称。服务器可以向该手机号码发送该通知短信,用户的终端会接收该通知短信,用户查看该通知短信时,可以及时获知提交的文件出现了错误。其中,服务器可以预先存储用户标识和手机号码之间的对应关系,以便当确定用户标识后,可以基于该对应关系确定手机号码。

再如,预设通知方式可以为向用户标识登录的客户端发送即时会话通知消息,例如服务器可以和具有即时会话功能的客户端关联,服务器可以生成即时会话通知消息,该即时会话通知消息用于通知用户其提交的文件发生错误,可以携带错误文件的文件名称。服务器可以向该用户标识登录的客户端发送该即时会话通知消息,用户基于用户标识登录客户端时,可以显示会话页面,在该会话页面查看即时会话通知消息,从而可以及时获知提交的文件出现了错误。

需要说明的是,上述各种预设通知方式可以采用任意结合的方式形成通知用户的方式,即,服务器可以采用任意一种预设通知方式通知用户,也可以采用任意多种预设通知方式通知用户,例如,服务器可以向用户发送通知邮件并向用户发送通知短信。另外,该预设通知方式还可以包括其他方式,例如向用户发送通知语音等,本实施例对此不做限定。

可选地,当文件库中的文件为代码文件时,由于实际应用中,任一个代码文件可以由多个用户协同工作完成,每个用户只负责编写代码文件中的某几行。针对这种场景,当确定代码文件的某一代码行出现错误时,可以只确定该代码行关联的用户标识,通知该用户标识对应的用户,而无需确定该代码文件关联的所有用户标识,使得通知过程更有针对性,并且避免打扰到其他用户。

结合该构思,服务器可以预先在历史提交日志中存储文件名称、行号和用户标识这三者之间的对应关系,以便记录提交每个代码文件的每一行的用户。在上述步骤303中确定代码文件中的某一代码行出现错误时,可以记录该代码行在该代码文件的行号,则可以根据该代码文件的文件名称和行号,查询对应关系,确定与该文件名称和行号均对应的用户标识,通知该用户标识对应的用户,并可以向该用户发送该文件名称和行号,以便用户及时更正这一行代码。

在一个示例性场景中,针对某个新上传的代码文件x,用户标识1编写了该代码文件的前10行,用户标识2编写了该代码文件的第10行-第20行,用户标识3编写了该代码文件的第20行-第30行,服务器将该代码文件作为差异文件进行评审时,若确定代码文件中的第4行包括错误字符串,则可以根据文件名称x和行号4查询到用户标识1,通知用户标识1对应的用户。

以文件库为代码仓库为例,参见图3b,其示出了一种文件评审方法的操作流程图,服务器可以定时检查代码仓库的版本号,当确定版本号更新时,获取存在差异的代码文件,按照预设评审规则对代码文件进行自动评审,当代码文件符合预设评审规则时,获取错误文件的文件名称和错误的代码行的行号,回溯历史提交日志,找出提交错误的代码行的用户,通过邮件告警该用户,以便用户修复该代码行。

本发明实施例提供的方法,当文件库发生更新时,服务器会自动获取文件库更新前后的差异文件,对差异文件按照预设评审规则进行自动评审,耗时较少、准确性高,节省了人力资源并提高了效率。并且,当确定差异文件为错误文件时,会自动通知错误文件关联的用户,以便用户及时获知更新的文件发生错误,对错误文件进行更正,以便保证文件库中文件的准确性。

进一步地,当差异文件为代码文件时,服务器可以采用正则匹配的方式,检验代码文件中的差异代码行是否包括与预设正则表达式匹配的字符串,从而对代码文件的编写规范和书写格式进行校验,避免文件库中包括出现错误代码的代码文件,扩展了应用范围,提高了灵活性。

进一步地,当差异文件为代码文件时,服务器可以通过检验代码文件中的第一行是否包括预设错误标识,从而对代码文件的格式进行校验,避免文件库中包括格式错误的文件,步骤简单有效,扩展了应用范围,提高了灵活性。

进一步地,服务器可以通过预设文件大小范围,检验差异文件的文件大小是否符合要求,避免文件库中包括大小错误的文件,步骤简单有效,扩展了应用范围,提高了灵活性。

进一步地,当差异文件为图片文件时,服务器可以通过对图片文件进行文字识别,将包括文字的图片文件识别为错误文件,避免文件库中包括含有文字的图片文件,保证不会出现用户使用图片文件更新显示样式时,由于图片文件中包括文字导致视觉效果差的情况,步骤简单有效,扩展了应用范围,提高了灵活性。

进一步地,服务器可以根据文件库更新前后的版本号,执行差异文件获取来得到差异文件,步骤简单有效。

进一步地,服务器可以通过比对文件库当前的版本号与上一次的版本号是否相同,检测文件库是否已经发生更新,步骤简单有效。

进一步地,服务器可以通过错误文件的文件名称,查询历史提交日志得到对应的用户标识,保证能够准确地通知错误文件关联的用户,使得通知过程具有针对性,避免打扰无关用户。

图4是本发明实施例提供的一种文件评审装置的结构示意图。参见图4,该装置应用于服务器中,包括:获取模块401、评审模块402、确定模块403和通知模块404。

获取模块401,用于根据更新前的第一文件库与更新后的第二文件库,获取该第一文件库与该第二文件库之间的至少一个差异文件;

评审模块402,用于对于该至少一个差异文件中的每个差异文件,当该差异文件符合预设评审规则时,将该差异文件作为错误文件;

确定模块403,用于确定该错误文件对应的用户标识;

通知模块404,用于按照预设通知方式,通知该用户标识对应的用户。

本发明实施例提供的装置,当文件库发生更新时,服务器会自动获取文件库更新前后的差异文件,对差异文件按照预设评审规则进行自动评审,耗时较少、准确性高,节省了人力资源并提高了效率。并且,当确定差异文件为错误文件时,会自动通知错误文件关联的用户,以便用户及时获知更新的文件发生错误,对错误文件进行更正,以便保证文件库中文件的准确性。

可选地,该差异文件为代码文件,该评审模块402,包括:

获取子模块,用于对于至少一个代码文件中的每个代码文件,获取该代码文件中的至少一个差异代码行;

确定子模块,用于对于该至少一个差异代码行中的每个差异代码行,当该差异代码行包括与至少一个预设正则表达式中的任一预设正则表达式匹配的字符串时,将该代码文件作为错误文件,该至少一个预设正则表达式用于匹配至少一种错误字符串。

可选地,该差异文件为代码文件,该评审模块402,包括:

读取子模块,用于对于至少一个代码文件中的每个代码文件,读取该代码文件的第一个代码行;

确定子模块,用于当该第一个代码行包括包含预设错误标识时,将该代码文件作为错误文件,该预设错误标识用于指示格式为预设错误格式的代码文件。

可选地,该评审模块402,包括:

获取子模块,用于对于该至少一个差异文件中的每个差异文件,获取该差异文件的文件大小;

确定子模块,用于当该文件大小属于预设文件大小范围时,将该差异文件作为错误文件。

可选地,该差异文件为图片文件,该评审模块402,包括:

识别子模块,用于对于至少一个图片文件中的每个图片文件,对该图片文件进行文字识别;

确定子模块,用于当该图片文件包括文字时,将该图片文件作为错误文件。

可选地,该获取模块401,包括:

获取子模块,用于获取该第一文件库的第一版本号以及该第二文件库的第二版本号;

指令执行子模块,用于根据该第一版本号和该第二版本号,执行差异文件获取指令,得到该至少一个差异文件。

可选地,该获取模块401,还用于获取第二文件库的第二版本号;

该装置还包括:更新模块,用于当该第二版本号与版本号记录信息中的第一版本号不同时,将该版本号记录信息中的第一版本号更新为该第二版本号;

该获取模块401,还用于确定该第一版本号对应的第一文件库已经更新为该第二版本号对应的第二文件库,执行该根据更新前的第一文件库与更新后的第二文件库,获取该第一文件库与该第二文件库之间的至少一个差异文件的步骤。

可选地,该确定模块403,包括:

获取子模块,用于获取该错误文件的文件名称;

查询子模块,用于根据该文件名称,查询历史提交日志,该历史提交日志包括文件名称和用户标识之间的对应关系;

该获取子模块,还用于从该历史提交日志中获取该文件名称对应的用户标识。

上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。

需要说明的是:上述实施例提供的文件评审装置在评审文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的文件评审装置与文件评审方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图5是本发明实施例提供的一种服务器的结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。

服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,一个或一个以上键盘556,和/或,一个或一个以上操作系统541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

该服务器500可以用于执行上述实施例提供的文件评审方法中服务器所执行的步骤。

在示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,例如存储有计算机程序的存储器,上述计算机程序被处理器执行时实现上述实施例中服务器所执行的文件评审方法。例如,该计算机可读存储介质可以是只读内存(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、只读光盘(compactdiscread-onlymemory,cd-rom)、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1