1.一种定位代码缺陷生产者的方法,其特征在于,所述方法包括:
扫描被测代码,获得代码缺陷相关信息存入代码缺陷数据库中,并生成本次扫描的任务记录存入任务数据库中,所述代码缺陷相关信息中包括每个代码缺陷的缺陷标识ID、以及所述代码缺陷所在的文件和行号信息;
根据所述本次扫描的任务记录查询所述任务数据库,判断本次扫描是否为针对所述被测代码的首次扫描,得到第一判断结果;
根据所述代码缺陷的缺陷ID查询所述代码缺陷数据库,判断所述代码缺陷是否为新增代码缺陷,得到第二判断结果;
在所述第一判断结果表示所述本次扫描为针对所述被测代码的首次扫描时,确定所述代码缺陷生产者为对应代码缺陷所在行的最新提交者;
在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,确定所述代码缺陷生产者为触发本次扫描的代码提交者。
2.根据权利要求1所述定位代码缺陷生产者的方法,其特征在于,所述方法还包括:在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为非新增代码缺陷时,确定本次扫描与针对所述被测代码的前一次扫描的所述代码缺陷生产者相同。
3.根据权利要求1至2任一项所述定位代码缺陷生产者的方法,其特征在于,所述任务记录中包括被测代码对应的模块ID;
所述根据本次扫描的任务记录查询任务数据库,判断本次扫描是否为针对被测代码的首次扫描,包括:如果所述任务数据库中不存在与本次扫描具有相同模块ID的历史任务记录,则确定本次扫描为针对被测代码的首次扫描;否则,确定本次扫描为针对被测代码所属代码库的非首次扫描。
4.根据权利要求1至2任一项所述定位代码缺陷生产者的方法,其特征在于,所述任务记录中包括被测代码对应的模块ID和扫描路径;
所述根据本次扫描的任务记录查询任务数据库,判断本次扫描是否为针对被测代码的首次扫描,包括:如果所述任务数据库中不存在与本次扫描具有相同模块ID和扫描路径的历史任务记录,则确定本次扫描为针对被测代码的首次扫描;否则,确定本次扫描为针对被测代码的非首次扫描。
5.根据权利要求1至2任一项所述定位代码缺陷生产者的方法,其特征在于,所述根据代码缺陷的缺陷ID查询代码缺陷数据库,判断代码缺陷是否为新增代码缺陷,包括:查找所述代码缺陷数据库中是否存在具有相同缺陷ID的历史代码缺陷相关信息,如不存在,则确定所述代码缺陷为新增代码缺陷;如存在,则确定所述代码缺陷为非新增代码缺陷。
6.根据权利要求1所述定位代码缺陷生产者的方法,其特征在于,在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,所述方法还包括:判断针对所述被测代码的本次扫描的等级是否低于前一次扫描的等级,得到第三判断结果;
如所述第三判断结果表示所述被测代码的本次扫描的等级低于前一次扫描的等级,则确定所述代码缺陷生产者为所述对应代码缺陷所在行的最新提交者;否则,确定所述代码缺陷生产者为所述触发本次扫描的代码提交者。
7.根据权利要求1所述定位代码缺陷生产者的方法,其特征在于,在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,所述方法还包括:判断针对所述被测代码的本次扫描的扫描路径相比前一次扫描的扫描路径是否发生变化,得到第四判断结果;
如所述第四判断结果表示所述扫描路径发生变化,且本次扫描有新增的扫描路径,而所述代码缺陷位于新增的扫描路径,则确定所述代码缺陷生产者为所述对应代码缺陷所在行的最新提交者;否则,确定所述代码缺陷生产者为所述触发本次扫描的代码提交者。
8.根据权利要求6所述定位代码缺陷生产者的方法,其特征在于,所述判断针对被测代码的本次扫描的等级是否低于前一次扫描的等级,包括:将本次扫描的任务记录中的扫描等级与任务数据库中记录的针对相同模块ID的前一次扫描的任务记录中的扫描等级进行比较,判断两者扫描等级的高低。
9.根据权利要求7所述定位代码缺陷生产者的方法,其特征在于,所述判断针对所述被测代码的本次扫描的扫描路径相比前一次扫描的扫描路径是否发生变化,包括:将本次扫描的任务记录中的扫描路径与任务数据库中记录的针对相同模块ID的前一次扫描的任务记录中的扫描路径进行比较,判断两者是否相同,如不相同,则确定发生变化;如相同,则确定未发生变化。
10.一种定位代码缺陷生产者的装置,其特征在于,包括:
代码扫描单元,用于扫描被测代码,获得代码缺陷相关信息存入代码缺陷数据库中,并生成本次扫描的任务记录存入任务数据库中,所述代码缺陷相关信息中包括每个代码缺陷的缺陷标识ID、以及所述代码缺陷所在的文件和行号信息;
第一判断单元,用于根据所述本次扫描的任务记录查询所述任务数据库,判断本次扫描是否为针对所述被测代码的首次扫描,得到第一判断结果;
第二判断单元,用于根据所述代码缺陷的缺陷ID查询所述代码缺陷数据库,判断所述代码缺陷是否为新增代码缺陷,得到第二判断结果;
确定单元,用于,
在所述第一判断结果表示所述本次扫描为针对所述被测代码的首次扫描时,确定所述代码缺陷生产者为对应代码缺陷所在行的最新提交者;
在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,确定所述代码缺陷生产者为触发本次扫描的代码提交者。
11.根据权利要求10所述定位代码缺陷生产者的装置,其特征在于,所述确定单元还用于,在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为非新增代码缺陷时,确定本次扫描与针对所述被测代码的前一次扫描的所述代码缺陷生产者相同。
12.根据权利要求10所述定位代码缺陷生产者的装置,其特征在于,
所述装置还包括:第三判断单元,用于在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,进一步判断针对所述被测代码的本次扫描的等级是否低于前一次扫描的等级,得到第三判断结果;
相应的,所述确定单元进一步用于,在所述第三判断结果表示所述被测代码的本次扫描的等级低于前一次扫描的等级时,确定所述代码缺陷生产者为所述对应代码缺陷所在行的最新提交者;否则,确定所述代码缺陷生产者为所述触发本次扫描的代码提交者。
13.根据权利要求10所述定位代码缺陷生产者的装置,其特征在于,所述装置还包括:第四判断单元,用于在所述第一判断结果表示所述本次扫描为针对所述被测代码的非首次扫描,以及所述第二判断结果表示所述代码缺陷为新增代码缺陷时,进一步判断针对所述被测代码的本次扫描的扫描路径相比前一次扫描的扫描路径是否发生变化,得到第四判断结果;
相应的,所述确定单元进一步用于,在所述第四判断结果表示所述扫描路径发生变化,且本次扫描有新增的扫描路径,而所述代码缺陷位于新增的扫描路径时,确定所述代码缺陷生产者为所述对应代码缺陷所在行的最新提交者;否则,确定所述代码缺陷生产者为所述触发本次扫描的代码提交者。
14.一种定位代码缺陷生产者的设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
15.一种计算机可读介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的方法。