在过去15年左右的时间里,我一直在合并各种开发人员/CAD起草人使用的所有源代码文件。似乎每个人都使用相同的代码库,直到大约7年前,当每个人似乎都在本地复制所有文件并在本地使用/编辑它们时。
我已经成功/痛苦地合并了所有具有相同名称的文件。然而,我发现有时,不同名称的文件包含具有相同名称和参数的函数。期望函数的一种实现的工具可能最终调用不同的实现,这取决于加载的文件。
是否有一个简单的方法来搜索所有的文件重复的函数名?
例如,函数看起来像这样:
(defun MyInStr (SearchIn SearchFor)
...
)
如何在所有文件中搜索(defun MyInStr (SearchIn SearchFor)
我建议使用ctags
来生成TAGS
文件,然后在其中搜索重复的行:
$ ctags -R
$ sort TAGS -o - | uniq -c | grep -v '^ *1 '
上面的命令将产生如下输出:
...
3 defun MyInStr (SearchIn SearchFor)
...
,它将告诉您MyInStr
在代码库中以相同的签名重新定义了3次。
您还可以使用sed
提取函数名称,或者使用perl
或lisp
或python
任何其他脚本工具对TAGS
文件进行更复杂的处理。