Я нашел решение для своих нужд, используя ctags .
CTags может анализировать C ++ и выводить информацию в файл.
Использование следующих параметров:
$CTAGS -f $TAGFILE --fields=fkstia --c++-kinds=+p -R $SOURCES
Я могу получить всю необходимую информацию в легко разбираемом формате.
Передав $TAGFILE
с помощью нескольких команд grep
, я могу проверить, что известное имя функции имеет ожидаемую видимость, и в противном случае выдать предупреждение с инкриминированным файлом.
Вот фрагмент кода bash для извлечения информации из вывода ctags:
#!/bin/bash
function check_method {
echo "Checking $1 (should be $2 and is not)"
cat $TAGFILE | grep "^$1 " | grep "access" | grep -v "access:$2" | cut -f 2
echo
}
# will warn anytime a method called ProtectedMethod is not protected
check_method ProtectedMethod protected