Найти дубликаты имен функций в разных файлах
Я объединял все файлы исходного кода, используемые различными разработчиками / разработчиками САПР в течение последних 15 лет. Похоже, что все работали над одной и той же кодовой базой примерно до 7 лет назад, когда все, кажется, сделали локальную копию всех файлов и использовали / редактировали их локально.
Я успешно / мучительно объединил все их файлы с одинаковыми именами. Однако я обнаружил, что иногда файлы с разными именами содержат функции с одинаковыми именами и параметрами. Инструменты, которые ожидают одну реализацию функции, могут в итоге вызвать другую, в зависимости от того, какие файлы были загружены когда.
Есть ли простой способ поиска во всех файлах повторяющихся имен функций?
Например, функция выглядит так:
(defun MyInStr (SearchIn SearchFor)
...
)
Как я могу искать все файлы для (defun MyInStr (SearchIn SearchFor)
1 ответ
Я бы предложил использовать ctags
генерировать TAGS
файл, затем поиск его на наличие дублирующих строк:
$ ctags -R
$ sort TAGS -o - | uniq -c | grep -v '^ *1 '
Вышеприведенное даст результат, подобный этому:
...
3 defun MyInStr (SearchIn SearchFor)
...
который скажет вам, что MyInStr
переопределяется 3 раза в кодовой базе с идентичной подписью.
Вы также можете извлечь только имя функции, используя sed
или сделать более сложную обработку TAGS
файл с perl
или же lisp
или же python
любой другой скрипт-инструмент.