Я хочу написать скрипт, который получает папку проекта и имя функции в качестве параметров и возвращает все объявления и реализации, найденные во всех файлах во всех подпапках. Код в проекте - C ++. Я могу использовать такие инструменты, как grep и bash scripting.
Так, например:
./search.sh Project1 multiply
Возвращает:
Definition:
int Multiply(bool b, string s); found in file /include/file1.h on line 53
Implementation:
int Multiply(bool b, string s) {
int xx = 10;
functionCall(xx);
for (int i = 0; i < 10; i++) {
somethingElse();
blabla = blabla;
}
}
Это будет работать для нескольких реализаций / определения, а не только первый найденный.
То, что я пробовал до сих пор:
Я пытался использовать grep для поиска всех файлов и поиска различных шаблонов. , Мне удалось извлечь определения функции, но я понятия не имею, как найти реализацию (которая находится в файле с тем же именем, что и файл, в котором было найдено определение, за исключением того, что файл .cpp
не a .h
).
Кроме того, как узнать, до какой строки я хочу искать в блоке кода реализации? Я не могу просто искать до первого }
, потому что внутри реализации могут быть другие блоки кода.