Index: clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp +++ clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp @@ -83,7 +83,9 @@ const char *InitializationString = nullptr; bool AddMathInclude = false; - if (TypePtr->isIntegerType()) + if (TypePtr->isEnumeralType()) + return; + else if (TypePtr->isIntegerType()) InitializationString = " = 0"; else if (TypePtr->isFloatingType()) { InitializationString = " = NAN"; Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-init-variables.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-init-variables.cpp +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-init-variables.cpp @@ -91,3 +91,18 @@ } catch (int X) { } } + +enum Color { Red, Green, Blue }; + +enum Car { Benz, BMW = 20, Audi = BMW + 2 }; + +enum Gender : char { Male, Female }; + +void enum_should_not_be_initialized() { + // Expect no warning given here. + Color color; + // Expect no warning given here. + Car car; + // Expect no warning given here. + Gender gender; +}