import os def get_loc_filebug_id perfect dirname = ospathdirname__file__ if perfect loc_file = locationgroundtruthss bug_idsplit-0lower bug_idsplit-1 else loc_file = loc
这段代码主要实现了从给定的 bug_id 中获取代码的位置信息。具体来说,代码分为两个部分:
get_loc_file函数
这个函数根据传入的 bug_id 和 perfect 参数,返回对应的位置文件的路径。如果 perfect 为 True,则返回 groundtruth 文件夹下对应 bug_id 的位置文件路径;否则,返回 ochiai 文件夹下对应 bug_id 的位置文件路径。最后,将路径进行合并并返回。
get_location函数
这个函数首先根据 bug_id 获取源代码目录的路径,然后调用 get_loc_file 函数获取位置文件的路径。如果返回的路径为空,则直接返回空的位置信息列表。
如果 perfect 为 True,则从位置文件中读取每个缺陷的位置信息,并将其转换为 (file, line) 的形式,并添加到 location 列表中。如果 perfect 为 False,则读取位置文件中的前 top_n 行,并将其添加到 location 列表中。在这里,为了避免重复添加相同的位置信息,使用了 location_dict 字典来记录已经添加的位置信息。
最后,将 location 列表的前 top_n 个位置信息返回。
原文地址: http://www.cveoy.top/t/topic/bsv6 著作权归作者所有。请勿转载和采集!