递归搜索 Git 存储库以查找字符串的算法

问题描述

我正在从事一个项目,旨在为工程师团队自动代码审查过程。基本上,工程师每次对文件进行更改时,在将这些更改推送到 Github 之前,他们需要弄清楚哪些其他文件受到该更改的影响,并添加负责这些文件的工程师进行查看和批准该更改。现在,进行更改的人将手动执行以下操作:检查更改发生在哪个函数中,使用 IDE(例如 VS 代码)的文本搜索功能查看该函数在整个 repo 中的哪个位置使用,浏览所有这些搜索结果并检查其他文件中的哪些函数正在调用原始函数,然后搜索这些函数。他们将递归搜索函数,直到一组称为“基本文件”的指定文件中的一个出现在搜索结果中。单独的工程师负责单独的基本文件,因此一旦基本文件出现在搜索过程中,进行更改的人需要添加负责该基本文件的工程师以批准更改,因为该文件功能是可能会受到这种变化的影响。我们正在努力寻找一种方法自动执行这些手动步骤。

我想知道是否有任何已知的算法可以用来完成这样的事情。我正在考虑使用图形或树,但我不确定应该使用哪种特定的图形或树算法。

解决方法

嗯,搜索字符串还不够好。

mark all base files
make call graph,directed graph (might not be acyclic)
do a BFS from changed file and log all Base files

Doxygen 可以生成一些调用图,或者可能已经有一些 Clang/LLVM 调用图构建器。