我正在做一个项目,为一个工程师团队自动化代码审查过程。基本上,每次工程师对文件进行更改时,在这些更改被推送到Github之前,他们需要找出哪些其他文件受到该更改的影响,并添加负责这些文件的工程师来查看和批准该更改。现在,进行更改的人将手动执行以下操作:检查更改发生在哪个函数中,使用IDE的文本搜索功能(例如VS代码)来查看该函数在整个代码库中的使用位置,查看所有这些搜索结果并检查其他文件中的哪些函数正在调用原始函数,然后对这些函数进行搜索。他们会递归地搜索函数,直到一组称为“基本文件”的指定文件中的一个出现在搜索结果中。单独的工程师负责单独的基本文件,因此一旦基本文件出现在搜索过程中,进行更改的人员将需要添加负责该基本文件的工程师以批准更改,因为该文件的功能可能会受到该更改的影响。我们正在尝试找到一种方法来自动执行这些手动步骤。
我想知道是否有任何已知的算法可以用来完成这样的事情。我正在考虑使用图形或树,但我不确定应该使用哪种特定的图形或树算法。
发布于 2021-06-30 06:28:04
嗯,搜索字符串还不够好。
mark all base files
make call graph, directed graph (might not be acyclic)
do a BFS from changed file and log all Base filesgraph可以生成一些调用图,或者可能已经有一些Clang/LLVM调用图构建器。
https://stackoverflow.com/questions/68185636
复制相似问题