Одним из вариантов будет использование статического анализатора кода (вы можете гуглить, их много). Обычно они предлагают такие оптимизации.
Другая опция использует Doxygen . Он может разобрать код и перечислить все функции в стандартном формате, который легко найти. Для этого установите максимальные параметры вывода в файле конфигурации (возможно, он будет работать даже с параметрами по умолчанию, но на всякий случай)
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
и включить вывод XML
GENERATE_XML = YES
Затем запустите doxygen
над вашим проектом и найдите все string
аргументы без последующих &
или *
в выходных XML. Например. используя grep
:
grep -B 1 -E '<argsstring>.*string [^&*].*</argsstring>' *.xml > result.txt
Это должно получить что-то вроде
classMyClass.xml- <definition>void MyClass::myMethod</definition>
classMyClass.xml: <argsstring>(std::string x)</argsstring>
Doxygen имеет много других интересных функций анализа кода, которые могут быть полезны при рефакторинге: он может включать в себя диаграммы, диаграммы классов, графики вызовов и т. Д.