Index: clang-tidy/modernize/DeprecatedHeadersCheck.cpp =================================================================== --- clang-tidy/modernize/DeprecatedHeadersCheck.cpp +++ clang-tidy/modernize/DeprecatedHeadersCheck.cpp @@ -51,16 +51,25 @@ : Check(Check), LangOpts(LangOpts) { for (const auto &KeyValue : std::vector>( - {{"assert.h", "cassert"}, {"complex.h", "ccomplex"}, - {"ctype.h", "cctype"}, {"errno.h", "cerrno"}, - {"float.h", "cfloat"}, {"inttypes.h", "cinttypes"}, - {"iso646.h", "ciso646"}, {"limits.h", "climits"}, - {"locale.h", "clocale"}, {"math.h", "cmath"}, - {"setjmp.h", "csetjmp"}, {"signal.h", "csignal"}, - {"stdarg.h", "cstdarg"}, {"stddef.h", "cstddef"}, - {"stdint.h", "cstdint"}, {"stdio.h", "cstdio"}, - {"stdlib.h", "cstdlib"}, {"string.h", "cstring"}, - {"time.h", "ctime"}, {"wchar.h", "cwchar"}, + {{"assert.h", "cassert"}, + {"complex.h", "complex"}, + {"ctype.h", "cctype"}, + {"errno.h", "cerrno"}, + {"float.h", "cfloat"}, + {"inttypes.h", "cinttypes"}, + {"limits.h", "climits"}, + {"locale.h", "clocale"}, + {"math.h", "cmath"}, + {"setjmp.h", "csetjmp"}, + {"signal.h", "csignal"}, + {"stdarg.h", "cstdarg"}, + {"stddef.h", "cstddef"}, + {"stdint.h", "cstdint"}, + {"stdio.h", "cstdio"}, + {"stdlib.h", "cstdlib"}, + {"string.h", "cstring"}, + {"time.h", "ctime"}, + {"wchar.h", "cwchar"}, {"wctype.h", "cwctype"}})) { CStyledHeaderToCxx.insert(KeyValue); } @@ -69,8 +78,6 @@ for (const auto &KeyValue : std::vector>( {{"fenv.h", "cfenv"}, - {"stdalign.h", "cstdalign"}, - {"stdbool.h", "cstdbool"}, {"tgmath.h", "ctgmath"}, {"uchar.h", "cuchar"}})) { CStyledHeaderToCxx.insert(KeyValue); @@ -92,8 +99,9 @@ if (CStyledHeaderToCxx.count(FileName) != 0) { std::string Replacement = (llvm::Twine("<") + CStyledHeaderToCxx[FileName] + ">").str(); - Check.diag(FilenameRange.getBegin(), - "inclusion of deprecated C++ header '%0'; consider using '%1' instead") + Check.diag( + FilenameRange.getBegin(), + "inclusion of deprecated C++ header '%0'; consider using '%1' instead") << FileName << CStyledHeaderToCxx[FileName] << FixItHint::CreateReplacement(FilenameRange.getAsRange(), Replacement); Index: docs/clang-tidy/checks/modernize-deprecated-headers.rst =================================================================== --- docs/clang-tidy/checks/modernize-deprecated-headers.rst +++ docs/clang-tidy/checks/modernize-deprecated-headers.rst @@ -7,38 +7,40 @@ C++ codebases. For more details refer to the C++ 14 Standard [depr.c.headers] section. -This check replaces C standard library headers with their C++ alternatives. +This check replaces most of the C standard library headers with their C++ +alternatives. Improtant note: the Standard doesn't guarantee that the C++ headers declare all the same functions in the global namespace. The check in its current form can break the code that uses library symbols from the global namespace. -* `` -* `` -* `` -* `` -* `` // deprecated since C++11 -* `` -* `` -* `` -* `` -* `` -* `` -* `` -* `` -* `` // deprecated since C++11 -* `` -* `` // deprecated since C++11 -* `` -* `` -* `` -* `` -* `` -* `` // deprecated since C++11 -* `` -* `` // deprecated since C++11 -* `` -* `` +The following list contains all replacements the check aims to perform. + +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` // deprecated since C++11 +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` // deprecated since C++11 +* `` -> `` +* `` -> `` // deprecated since C++11 +* `` -> `` +* `` -> ` +* `` -> `` +* `` -> `` +* `` -> `` +* `` -> `` // deprecated since C++11 +* `` -> `` +* `` -> `` // deprecated since C++11 +* `` -> `` +* `` -> `` If the specified standard is older than C++11 the check will only replace headers deprecated before C++11, otherwise -- every header that appeared in Index: test/clang-tidy/modernize-deprecated-headers-cxx03.cpp =================================================================== --- test/clang-tidy/modernize-deprecated-headers-cxx03.cpp +++ test/clang-tidy/modernize-deprecated-headers-cxx03.cpp @@ -30,12 +30,12 @@ #include // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers] -// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead -// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead + // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead @@ -52,12 +52,11 @@ // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead // CHECK-FIXES: #include -// CHECK-FIXES: #include +// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include @@ -103,12 +102,12 @@ #include "uchar.h" // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead -// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead -// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead + // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead @@ -125,12 +124,11 @@ // CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead // CHECK-FIXES: #include -// CHECK-FIXES: #include +// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include Index: test/clang-tidy/modernize-deprecated-headers-cxx11.cpp =================================================================== --- test/clang-tidy/modernize-deprecated-headers-cxx11.cpp +++ test/clang-tidy/modernize-deprecated-headers-cxx11.cpp @@ -28,21 +28,21 @@ #include // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers] -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'fenv.h'; consider using 'cfenv' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdalign.h'; consider using 'cstdalign' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdbool.h'; consider using 'cstdbool' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead @@ -55,21 +55,18 @@ // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead // CHECK-FIXES: #include -// CHECK-FIXES: #include +// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include @@ -109,21 +106,21 @@ #include "wctype.h" // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'ccomplex' instead +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'fenv.h'; consider using 'cfenv' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'inttypes.h'; consider using 'cinttypes' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'iso646.h'; consider using 'ciso646' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdalign.h'; consider using 'cstdalign' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead -// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdbool.h'; consider using 'cstdbool' instead + // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdint.h'; consider using 'cstdint' instead // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead @@ -136,21 +133,18 @@ // CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead // CHECK-FIXES: #include -// CHECK-FIXES: #include +// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include -// CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include // CHECK-FIXES: #include