Я использую регулярное выражение для автоматического применения стиля кодирования в базе кода во время проверки кода.У меня возникли проблемы с поиском регулярного выражения для сканирования статических переменных и имен функций, которые начинаются с заглавной буквы в файлах .c, поскольку шаблоны сканирования довольно сложные и динамические, то есть между «статическим» и именем переменной, тамможет быть тип данных, например, int, и ключевое слово, например, const.
Мое текущее решение выглядит следующим образом:
^\s*static\s((const|inline|volatile)\s)?(unsigned\s)?[a-zA-Z0-9_]+\s\*?[A-Z].*$
Оно работает довольно хорошо для многих шаблонов, но имеет ложные срабатывания, когда тип данных также начинается с заглавной буквы.Например, это было бы положительно для 'static volatile Data_type variableName', даже если 'variableName' начинается со строчной буквы.
Также здесь приведены некоторые примеры:
/* positives */
static void ZVar_Able(void)
static void Variable
static const int_64 Variable
static MyDataType_t DefinedVariable =
static const unsigned int INIT_VARIABLE = someValue;
static void GivenVariable(uint32_t para)
static __attribute__ ((naked)) void Function(int_64 param)
static void Var_Var_var_var(void)
/* negatives */
static const char hex[] = "000000"
static uint8_t variableHandler(uint32_t argc, char **argv)
static volatile Data_type variable
static void variable
static int *variable
static char *variablename = "just a name";
static inline void variable_enable(void)
static volatile bool_t variableIsVariable;
static const Variabletype_t definedVariable =
Любые идеи или альтернативы будут очень полезны!Заранее спасибо!