Модуль clang-tidy readability-identifier-naming не может правильно обрабатывать атрибуты класса и методы класса
Я хотел бы использовать модуль clang-tidy 'readability-identifier-naming' для очистки моего кода, но мне не удалось его правильно использовать на коротком примере с атрибутом класса и методом.
Я использовал следующий файл.clang-tidy:
Checks: '-*,readability-identifier-naming'
CheckOptions:
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
- { key: readability-identifier-naming.VariableCase, value: lower_case }
- { key: readability-identifier-naming.FunctionCase, value: lower_case }
- { key: readability-identifier-naming.MemberPrefix, value: m_ }
- { key: readability-identifier-naming.ParameterCase, value: lower_case }
по этому коду:
class one_class
{
public:
int OneMethod(int OneArgument);
int OneAttribute;
};
int one_class::OneMethod(int OneArgument)
{
OneAttribute = 42;
return OneArgument + 1;
}
int main(void)
{
int OneVariable = 0;
one_class c;
OneVariable = c.OneMethod(OneVariable);
c.OneAttribute = 21;
return 0;
}
В результате получается такой код:
class OneClass
{
public:
int one_method(int one_argument);
int m_OneAttribute;
};
int OneClass::one_method(int one_argument)
{
OneAttribute = 42; // must be m_OneAttribute =
return one_argument + 1;
}
int main(void)
{
int one_variable = 0;
OneClass c;
one_variable = c.OneMethod(one_variable); // must be c.one_method(...)
c.OneAttribute = 21; // must be c.m_OneAttribute = ...
return 0;
}
Объявление и определение метода класса OneMethod() были правильно преобразованы, НО вызов метода в функции main() НЕ имеет. То же самое для атрибута класса OneAttribute. Полученный код больше не компилируется.
Я вызвал clang-tidy с этой командной строкой:
clang-tidy-5.0 -checks='readability-identifier-naming' -fix test.cpp --
У меня clang 5.0 и clang 3.8 установлены из пакетов на Ubuntu 16.04.
Что я делаю неправильно?
0 ответов
Вы не делаете ничего плохого. clang-tidy
просто не охватывает этот случай по какой-то причине. Это может быть просто ошибка, хотя, если это так, она кажется довольно явной.
что интересно clang-rename
может сделать такие переименования правильно, и показывает, что отказ Clang-Tidy не из-за технической осуществимости.
Возможно, стоит сообщить об ошибке здесь: https://bugs.llvm.org/enter_bug.cgi?product=clang-tools-extra
Хотя есть связанная ошибка, на которую вы должны обратить внимание, чтобы уделить больше внимания этой проблеме.