Найти дубликаты имен функций в разных файлах

Я объединял все файлы исходного кода, используемые различными разработчиками / разработчиками САПР в течение последних 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 любой другой скрипт-инструмент.

Другие вопросы по тегам