Index: clang-tidy/bugprone/BugproneTidyModule.cpp =================================================================== --- clang-tidy/bugprone/BugproneTidyModule.cpp +++ clang-tidy/bugprone/BugproneTidyModule.cpp @@ -28,7 +28,11 @@ #include "MoveForwardingReferenceCheck.h" #include "MultipleStatementMacroCheck.h" #include "StringConstructorCheck.h" +#include "StringIntegerAssignmentCheck.h" +#include "StringLiteralWithEmbeddedNulCheck.h" +#include "SuspiciousEnumUsageCheck.h" #include "SuspiciousMemsetUsageCheck.h" +#include "SuspiciousMissingCommaCheck.h" #include "ThrowKeywordMissingCheck.h" #include "UndefinedMemoryManipulationCheck.h" #include "UseAfterMoveCheck.h" @@ -77,8 +81,16 @@ "bugprone-multiple-statement-macro"); CheckFactories.registerCheck( "bugprone-string-constructor"); + CheckFactories.registerCheck( + "bugprone-string-integer-assignment"); + CheckFactories.registerCheck( + "bugprone-string-literal-with-embedded-nul"); + CheckFactories.registerCheck( + "bugprone-suspicious-enum-usage"); CheckFactories.registerCheck( "bugprone-suspicious-memset-usage"); + CheckFactories.registerCheck( + "bugprone-suspicious-missing-comma"); CheckFactories.registerCheck( "bugprone-throw-keyword-missing"); CheckFactories.registerCheck( Index: clang-tidy/bugprone/CMakeLists.txt =================================================================== --- clang-tidy/bugprone/CMakeLists.txt +++ clang-tidy/bugprone/CMakeLists.txt @@ -20,7 +20,11 @@ MoveForwardingReferenceCheck.cpp MultipleStatementMacroCheck.cpp StringConstructorCheck.cpp + StringIntegerAssignmentCheck.cpp + StringLiteralWithEmbeddedNulCheck.cpp + SuspiciousEnumUsageCheck.cpp SuspiciousMemsetUsageCheck.cpp + SuspiciousMissingCommaCheck.cpp ThrowKeywordMissingCheck.cpp UndefinedMemoryManipulationCheck.cpp UseAfterMoveCheck.cpp Index: clang-tidy/bugprone/StringIntegerAssignmentCheck.h =================================================================== --- clang-tidy/bugprone/StringIntegerAssignmentCheck.h +++ clang-tidy/bugprone/StringIntegerAssignmentCheck.h @@ -7,14 +7,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_INTEGER_ASSIGNMENT_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_INTEGER_ASSIGNMENT_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGINTEGERASSIGNMENTCHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGINTEGERASSIGNMENTCHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace misc { +namespace bugprone { /// Finds instances where an integer is assigned to a string. /// @@ -28,8 +28,8 @@ void check(const ast_matchers::MatchFinder::MatchResult &Result) override; }; -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_INTEGER_ASSIGNMENT_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGINTEGERASSIGNMENTCHECK_H Index: clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp =================================================================== --- clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp +++ clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp @@ -16,7 +16,7 @@ namespace clang { namespace tidy { -namespace misc { +namespace bugprone { void StringIntegerAssignmentCheck::registerMatchers(MatchFinder *Finder) { if (!getLangOpts().CPlusPlus) @@ -81,6 +81,6 @@ } } -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang Index: clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h =================================================================== --- clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h +++ clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h @@ -7,19 +7,19 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_LITERAL_WITH_EMBEDDED_NUL_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_LITERAL_WITH_EMBEDDED_NUL_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGLITERALWITHEMBEDDEDNULCHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGLITERALWITHEMBEDDEDNULCHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace misc { +namespace bugprone { /// Find suspicious string literals with embedded NUL characters. /// /// For the user-facing documentation see: -/// http://clang.llvm.org/extra/clang-tidy/checks/misc-string-literal-with-embedded-nul.html +/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.html class StringLiteralWithEmbeddedNulCheck : public ClangTidyCheck { public: StringLiteralWithEmbeddedNulCheck(StringRef Name, ClangTidyContext *Context) @@ -28,8 +28,8 @@ void check(const ast_matchers::MatchFinder::MatchResult &Result) override; }; -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_STRING_LITERAL_WITH_EMBEDDED_NUL_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_STRINGLITERALWITHEMBEDDEDNULCHECK_H Index: clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp =================================================================== --- clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp +++ clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp @@ -15,7 +15,7 @@ namespace clang { namespace tidy { -namespace misc { +namespace bugprone { namespace { AST_MATCHER(StringLiteral, containsNul) { @@ -80,6 +80,6 @@ } } -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang Index: clang-tidy/bugprone/SuspiciousEnumUsageCheck.h =================================================================== --- clang-tidy/bugprone/SuspiciousEnumUsageCheck.h +++ clang-tidy/bugprone/SuspiciousEnumUsageCheck.h @@ -7,19 +7,19 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_ENUM_USAGE_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_ENUM_USAGE_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSENUMUSAGECHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSENUMUSAGECHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace misc { +namespace bugprone { /// The checker detects various cases when an enum is probably misused (as a /// bitmask). /// For the user-facing documentation see: -/// http://clang.llvm.org/extra/clang-tidy/checks/misc-suspicious-enum-usage.html +/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-suspicious-enum-usage.html class SuspiciousEnumUsageCheck : public ClangTidyCheck { public: SuspiciousEnumUsageCheck(StringRef Name, ClangTidyContext *Context); @@ -32,8 +32,8 @@ const bool StrictMode; }; -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_ENUM_USAGE_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSENUMUSAGECHECK_H Index: clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp =================================================================== --- clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp +++ clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp @@ -16,7 +16,7 @@ namespace clang { namespace tidy { -namespace misc { +namespace bugprone { static const char DifferentEnumErrorMessage[] = "enum values are from different enum types"; @@ -214,6 +214,6 @@ checkSuspiciousBitmaskUsage(RhsExpr, EnumDec); } -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang Index: clang-tidy/bugprone/SuspiciousMissingCommaCheck.h =================================================================== --- clang-tidy/bugprone/SuspiciousMissingCommaCheck.h +++ clang-tidy/bugprone/SuspiciousMissingCommaCheck.h @@ -7,20 +7,20 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_MISSING_COMMA_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_MISSING_COMMA_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSMISSINGCOMMACHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSMISSINGCOMMACHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace misc { +namespace bugprone { /// This check finds string literals which are probably concatenated /// accidentally. /// /// For the user-facing documentation see: -/// http://clang.llvm.org/extra/clang-tidy/checks/misc-suspicious-missing-comma.html +/// http://clang.llvm.org/extra/clang-tidy/checks/bugprone-suspicious-missing-comma.html class SuspiciousMissingCommaCheck : public ClangTidyCheck { public: SuspiciousMissingCommaCheck(StringRef Name, ClangTidyContext *Context); @@ -37,8 +37,8 @@ const unsigned MaxConcatenatedTokens; }; -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_SUSPICIOUS_MISSING_COMMA_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_BUGPRONE_SUSPICIOUSMISSINGCOMMACHECK_H Index: clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp =================================================================== --- clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp +++ clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp @@ -15,7 +15,7 @@ namespace clang { namespace tidy { -namespace misc { +namespace bugprone { namespace { @@ -124,6 +124,6 @@ "suspicious string literal, probably missing a comma"); } -} // namespace misc +} // namespace bugprone } // namespace tidy } // namespace clang Index: clang-tidy/misc/CMakeLists.txt =================================================================== --- clang-tidy/misc/CMakeLists.txt +++ clang-tidy/misc/CMakeLists.txt @@ -12,10 +12,6 @@ SizeofContainerCheck.cpp SizeofExpressionCheck.cpp StaticAssertCheck.cpp - StringIntegerAssignmentCheck.cpp - StringLiteralWithEmbeddedNulCheck.cpp - SuspiciousEnumUsageCheck.cpp - SuspiciousMissingCommaCheck.cpp SuspiciousSemicolonCheck.cpp SuspiciousStringCompareCheck.cpp SwappedArgumentsCheck.cpp Index: clang-tidy/misc/MiscTidyModule.cpp =================================================================== --- clang-tidy/misc/MiscTidyModule.cpp +++ clang-tidy/misc/MiscTidyModule.cpp @@ -19,10 +19,6 @@ #include "SizeofContainerCheck.h" #include "SizeofExpressionCheck.h" #include "StaticAssertCheck.h" -#include "StringIntegerAssignmentCheck.h" -#include "StringLiteralWithEmbeddedNulCheck.h" -#include "SuspiciousEnumUsageCheck.h" -#include "SuspiciousMissingCommaCheck.h" #include "SuspiciousSemicolonCheck.h" #include "SuspiciousStringCompareCheck.h" #include "SwappedArgumentsCheck.h" @@ -59,14 +55,6 @@ CheckFactories.registerCheck( "misc-sizeof-expression"); CheckFactories.registerCheck("misc-static-assert"); - CheckFactories.registerCheck( - "misc-string-integer-assignment"); - CheckFactories.registerCheck( - "misc-string-literal-with-embedded-nul"); - CheckFactories.registerCheck( - "misc-suspicious-enum-usage"); - CheckFactories.registerCheck( - "misc-suspicious-missing-comma"); CheckFactories.registerCheck( "misc-suspicious-semicolon"); CheckFactories.registerCheck( Index: docs/ReleaseNotes.rst =================================================================== --- docs/ReleaseNotes.rst +++ docs/ReleaseNotes.rst @@ -57,6 +57,18 @@ Improvements to clang-tidy -------------------------- +- The 'misc-suspicious-missing-comma' check was renamed to `bugprone-suspicious-missing-comma + `_ + +- The 'misc-suspicious-enum-usage' check was renamed to `bugprone-suspicious-enum-usage + `_ + +- The 'misc-string-literal-with-embedded-nul' check was renamed to `bugprone-string-literal-with-embedded-nul + `_ + +- The 'misc-string-integer-assignment' check was renamed to `bugprone-string-integer-assignment + `_ + - The 'misc-misplaced-widening-cast' check was renamed to `bugprone-misplaced-widening-cast `_ Index: docs/clang-tidy/checks/bugprone-string-integer-assignment.rst =================================================================== --- docs/clang-tidy/checks/bugprone-string-integer-assignment.rst +++ docs/clang-tidy/checks/bugprone-string-integer-assignment.rst @@ -1,7 +1,7 @@ -.. title:: clang-tidy - misc-string-integer-assignment +.. title:: clang-tidy - bugprone-string-integer-assignment -misc-string-integer-assignment -============================== +bugprone-string-integer-assignment +================================== The check finds assignments of an integer to ``std::basic_string`` (``std::string``, ``std::wstring``, etc.). The source of the problem is the Index: docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst =================================================================== --- docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst +++ docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst @@ -1,7 +1,7 @@ -.. title:: clang-tidy - misc-string-literal-with-embedded-nul +.. title:: clang-tidy - bugprone-string-literal-with-embedded-nul -misc-string-literal-with-embedded-nul -===================================== +bugprone-string-literal-with-embedded-nul +========================================= Finds occurrences of string literal with embedded NUL character and validates their usage. Index: docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst =================================================================== --- docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst +++ docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst @@ -1,7 +1,7 @@ -.. title:: clang-tidy - misc-suspicious-enum-usage +.. title:: clang-tidy - bugprone-suspicious-enum-usage -misc-suspicious-enum-usage -========================== +bugprone-suspicious-enum-usage +============================== The checker detects various cases when an enum is probably misused (as a bitmask ). Index: docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst =================================================================== --- docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst +++ docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst @@ -1,7 +1,7 @@ -.. title:: clang-tidy - misc-suspicious-missing-comma +.. title:: clang-tidy - bugprone-suspicious-missing-comma -misc-suspicious-missing-comma -============================= +bugprone-suspicious-missing-comma +================================= String literals placed side-by-side are concatenated at translation phase 6 (after the preprocessor). This feature is used to represent long string Index: docs/clang-tidy/checks/list.rst =================================================================== --- docs/clang-tidy/checks/list.rst +++ docs/clang-tidy/checks/list.rst @@ -35,7 +35,11 @@ bugprone-move-forwarding-reference bugprone-multiple-statement-macro bugprone-string-constructor + bugprone-string-integer-assignment + bugprone-string-literal-with-embedded-nul + bugprone-suspicious-enum-usage bugprone-suspicious-memset-usage + bugprone-suspicious-missing-comma bugprone-throw-keyword-missing bugprone-undefined-memory-manipulation bugprone-use-after-move @@ -139,10 +143,6 @@ misc-sizeof-container misc-sizeof-expression misc-static-assert - misc-string-integer-assignment - misc-string-literal-with-embedded-nul - misc-suspicious-enum-usage - misc-suspicious-missing-comma misc-suspicious-semicolon misc-suspicious-string-compare misc-swapped-arguments Index: test/clang-tidy/bugprone-string-integer-assignment.cpp =================================================================== --- test/clang-tidy/bugprone-string-integer-assignment.cpp +++ test/clang-tidy/bugprone-string-integer-assignment.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s misc-string-integer-assignment %t +// RUN: %check_clang_tidy %s bugprone-string-integer-assignment %t namespace std { template @@ -21,7 +21,7 @@ int x = 5; s = 6; -// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: an integer is interpreted as a character code when assigning {{.*}} [misc-string-integer-assignment] +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: an integer is interpreted as a character code when assigning {{.*}} [bugprone-string-integer-assignment] // CHECK-FIXES: {{^}} s = '6';{{$}} s = 66; // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: an integer is interpreted as a chara Index: test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp =================================================================== --- test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp +++ test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s misc-string-literal-with-embedded-nul %t +// RUN: %check_clang_tidy %s bugprone-string-literal-with-embedded-nul %t namespace std { template @@ -25,7 +25,7 @@ const char Valid[] = "This is valid \x12."; const char Strange[] = "This is strange \0x12 and must be fixed"; -// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: suspicious embedded NUL character [misc-string-literal-with-embedded-nul] +// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: suspicious embedded NUL character [bugprone-string-literal-with-embedded-nul] const char textA[] = "\0x01\0x02\0x03\0x04"; // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: suspicious embedded NUL character Index: test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp =================================================================== --- test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp +++ test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s misc-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: misc-suspicious-enum-usage.StrictMode, value: 1}]}" -- +// RUN: %check_clang_tidy %s bugprone-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: bugprone-suspicious-enum-usage.StrictMode, value: 1}]}" -- enum A { A = 1, @@ -17,7 +17,7 @@ Y = 16, Z = 4, ZZ = 3 - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: enum type seems like a bitmask (contains mostly power-of-2 literals), but this literal is not a power-of-2 [misc-suspicious-enum-usage] + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: enum type seems like a bitmask (contains mostly power-of-2 literals), but this literal is not a power-of-2 [bugprone-suspicious-enum-usage] // CHECK-MESSAGES: :70:13: note: used here as a bitmask }; // CHECK-MESSAGES: :[[@LINE+2]]:1: warning: enum type seems like a bitmask (contains mostly power-of-2 literals) but some literals are not power-of-2 Index: test/clang-tidy/bugprone-suspicious-enum-usage.cpp =================================================================== --- test/clang-tidy/bugprone-suspicious-enum-usage.cpp +++ test/clang-tidy/bugprone-suspicious-enum-usage.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s misc-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: misc-suspicious-enum-usage.StrictMode, value: 0}]}" -- +// RUN: %check_clang_tidy %s bugprone-suspicious-enum-usage %t -- -config="{CheckOptions: [{key: bugprone-suspicious-enum-usage.StrictMode, value: 0}]}" -- enum Empty { }; Index: test/clang-tidy/bugprone-suspicious-missing-comma.cpp =================================================================== --- test/clang-tidy/bugprone-suspicious-missing-comma.cpp +++ test/clang-tidy/bugprone-suspicious-missing-comma.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy %s misc-suspicious-missing-comma %t +// RUN: %check_clang_tidy %s bugprone-suspicious-missing-comma %t const char* Cartoons[] = { "Bugs Bunny", @@ -9,7 +9,7 @@ "Fred Flintstone", "Popeye", }; -// CHECK-MESSAGES: :[[@LINE-4]]:3: warning: suspicious string literal, probably missing a comma [misc-suspicious-missing-comma] +// CHECK-MESSAGES: :[[@LINE-4]]:3: warning: suspicious string literal, probably missing a comma [bugprone-suspicious-missing-comma] const wchar_t* Colors[] = { L"Red", L"Yellow", L"Blue", L"Green", L"Purple", L"Rose", L"White", L"Black" @@ -68,7 +68,7 @@ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" }; -// CHECK-MESSAGES: :[[@LINE-6]]:3: warning: suspicious string literal, probably missing a comma [misc-suspicious-missing-comma] +// CHECK-MESSAGES: :[[@LINE-6]]:3: warning: suspicious string literal, probably missing a comma [bugprone-suspicious-missing-comma] const char* TooManyConcatenatedTokensArray[] = { "Dummy line",