Есть ли способ поиска с помощью сценария bash (используя grep
, awk
, sed
, ... тоже) для классов (или структур), наследующих данный базовый класс?Поиск классов C++, наследующих другой класс
я вызов, как в виду следующее:
./get_classes.sh 'CBaseClass' src/
Edit 1:
То, что я уже пробовал:
grep -r ':.*CBaseClass' src/
Это решение работает , но только при отсутствии новой строки между :
и CBaseClass
. Другая проблема заключается в том, что когда у вас есть два класса в том же заголовке, что и наследует CBaseClass, grep по умолчанию будет жадным совпадением (от кулака :
до второго CBaseClass
).
Это своеобразный вопрос, я признаю ... почему бы не расширить свой SearchQuery на ': public' и сделать он выглядит только в файлах заголовков? Таким образом, вы сможете найти все классы, которые наследуются от этого, без фактического нахождения самого класса. –
Да, это то, что я думал/пытался первым, но что вы делаете, если между ':' и 'public/protected/private CBaseClass' есть новые строки или другие классы? – Uroc327
Вы можете изучить [libclang и Python] (http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang/), чтобы на самом деле выполнить семантический поиск. – Angew