Предполагая, что файл действителен (т.е. компилируется), вы можете начать с чтения всего файла в строку.
Я понял из вашего вопроса, что вас интересуют только имена методов, а не имена классов. Затем вам нужно регулярное выражение, которое дает вам все экземпляры public | protected | private , дополнительные ключевые слова virtual / override и т. Д., MethodName , (, дополнительные параметры, ) .
Было бы полезно, если бы существовали соглашения о кодировании, поэтому вы могли бы предположить , что все определения методов всегда были в одной строке, а не разбиты на несколько строк.
Если у вас есть это, нужно лишь посчитать {и}, чтобы получить тело функции.
И последний совет: Остерегайтесь предположений . У них отвратительная привычка кусать тебя в зад.
РЕДАКТИРОВАТЬ: Ой, забыл о комментариях! если в теле метода есть скобки в комментариях, ваш подсчет может пойти не так. Так что вам нужно убрать все комментарии из источника в качестве самого первого шага.