[PATCH] D43868: Rename more checks from misc- to bugprone-.
This revision was automatically updated to reflect the committed changes. Closed by commit rCTE326384: Rename more checks from misc- to bugprone-. (authored by alexfh, committed by ). Changed prior to commit: https://reviews.llvm.org/D43868?vs=136277=136412#toc Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D43868 Files: clang-tidy/bugprone/BugproneTidyModule.cpp clang-tidy/bugprone/CMakeLists.txt clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp clang-tidy/bugprone/StringIntegerAssignmentCheck.h clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp clang-tidy/bugprone/SuspiciousEnumUsageCheck.h clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp clang-tidy/bugprone/SuspiciousMissingCommaCheck.h clang-tidy/misc/CMakeLists.txt clang-tidy/misc/MiscTidyModule.cpp clang-tidy/misc/StringIntegerAssignmentCheck.cpp clang-tidy/misc/StringIntegerAssignmentCheck.h clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.cpp clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.h clang-tidy/misc/SuspiciousEnumUsageCheck.cpp clang-tidy/misc/SuspiciousEnumUsageCheck.h clang-tidy/misc/SuspiciousMissingCommaCheck.cpp clang-tidy/misc/SuspiciousMissingCommaCheck.h docs/ReleaseNotes.rst docs/clang-tidy/checks/bugprone-string-integer-assignment.rst docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst docs/clang-tidy/checks/list.rst docs/clang-tidy/checks/misc-string-integer-assignment.rst docs/clang-tidy/checks/misc-string-literal-with-embedded-nul.rst docs/clang-tidy/checks/misc-suspicious-enum-usage.rst docs/clang-tidy/checks/misc-suspicious-missing-comma.rst test/clang-tidy/bugprone-string-integer-assignment.cpp test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp test/clang-tidy/bugprone-suspicious-enum-usage.cpp test/clang-tidy/bugprone-suspicious-missing-comma.cpp test/clang-tidy/misc-string-integer-assignment.cpp test/clang-tidy/misc-string-literal-with-embedded-nul.cpp test/clang-tidy/misc-suspicious-enum-usage-strict.cpp test/clang-tidy/misc-suspicious-enum-usage.cpp test/clang-tidy/misc-suspicious-missing-comma.cpp 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 @@ -0,0 +1,78 @@ +.. title:: clang-tidy - bugprone-suspicious-enum-usage + +bugprone-suspicious-enum-usage +== + +The checker detects various cases when an enum is probably misused (as a bitmask +). + +1. When "ADD" or "bitwise OR" is used between two enum which come from different + types and these types value ranges are not disjoint. + +The following cases will be investigated only using :option:`StrictMode`. We +regard the enum as a (suspicious) +bitmask if the three conditions below are true at the same time: + +* at most half of the elements of the enum are non pow-of-2 numbers (because of + short enumerations) +* there is another non pow-of-2 number than the enum constant representing all + choices (the result "bitwise OR" operation of all enum elements) +* enum type variable/enumconstant is used as an argument of a `+` or "bitwise OR + " operator + +So whenever the non pow-of-2 element is used as a bitmask element we diagnose a +misuse and give a warning. + +2. Investigating the right hand side of `+=` and `|=` operator. +3. Check only the enum value side of a `|` and `+` operator if one of them is not + enum val. +4. Check both side of `|` or `+` operator where the enum values are from the + same enum type. + +Examples: + +.. code-block:: c++ + + enum { A, B, C }; + enum { D, E, F = 5 }; + enum { G = 10, H = 11, I = 12 }; + + unsigned flag; + flag = + A | + H; // OK, disjoint value intervalls in the enum types ->probably good use. + flag = B | F; // Warning, have common values so they are probably misused. + + // Case 2: + enum Bitmask { +A = 0, +B = 1, +C = 2, +D = 4, +E = 8, +F = 16, +G = 31 // OK, real bitmask. + }; + + enum Almostbitmask { +AA = 0, +BB = 1, +CC = 2, +DD = 4, +EE = 8, +FF = 16, +GG // Problem, forgot to initialize. + }; + + unsigned flag = 0; + flag |= E; // OK. + flag |= + EE; // Warning at the decl, and note that it was used here as a bitmask. + +Options +--- +.. option:: StrictMode + + Default value: 0. + When non-null the suspicious bitmask usage will be investigated additionally + to the different enum usage check. Index: docs/clang-tidy/checks/list.rst
[PATCH] D43868: Rename more checks from misc- to bugprone-.
This revision was automatically updated to reflect the committed changes. Closed by commit rL326384: Rename more checks from misc- to bugprone-. (authored by alexfh, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D43868?vs=136277=136411#toc Repository: rL LLVM https://reviews.llvm.org/D43868 Files: clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp clang-tools-extra/trunk/clang-tidy/bugprone/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp clang-tools-extra/trunk/clang-tidy/bugprone/StringIntegerAssignmentCheck.h clang-tools-extra/trunk/clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp clang-tools-extra/trunk/clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h clang-tools-extra/trunk/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp clang-tools-extra/trunk/clang-tidy/bugprone/SuspiciousEnumUsageCheck.h clang-tools-extra/trunk/clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp clang-tools-extra/trunk/clang-tidy/bugprone/SuspiciousMissingCommaCheck.h clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp clang-tools-extra/trunk/clang-tidy/misc/StringIntegerAssignmentCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/StringIntegerAssignmentCheck.h clang-tools-extra/trunk/clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.h clang-tools-extra/trunk/clang-tidy/misc/SuspiciousEnumUsageCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/SuspiciousEnumUsageCheck.h clang-tools-extra/trunk/clang-tidy/misc/SuspiciousMissingCommaCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/SuspiciousMissingCommaCheck.h clang-tools-extra/trunk/docs/ReleaseNotes.rst clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-string-integer-assignment.rst clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst clang-tools-extra/trunk/docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst clang-tools-extra/trunk/docs/clang-tidy/checks/misc-string-integer-assignment.rst clang-tools-extra/trunk/docs/clang-tidy/checks/misc-string-literal-with-embedded-nul.rst clang-tools-extra/trunk/docs/clang-tidy/checks/misc-suspicious-enum-usage.rst clang-tools-extra/trunk/docs/clang-tidy/checks/misc-suspicious-missing-comma.rst clang-tools-extra/trunk/test/clang-tidy/bugprone-string-integer-assignment.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-suspicious-enum-usage.cpp clang-tools-extra/trunk/test/clang-tidy/bugprone-suspicious-missing-comma.cpp clang-tools-extra/trunk/test/clang-tidy/misc-string-integer-assignment.cpp clang-tools-extra/trunk/test/clang-tidy/misc-string-literal-with-embedded-nul.cpp clang-tools-extra/trunk/test/clang-tidy/misc-suspicious-enum-usage-strict.cpp clang-tools-extra/trunk/test/clang-tidy/misc-suspicious-enum-usage.cpp clang-tools-extra/trunk/test/clang-tidy/misc-suspicious-missing-comma.cpp Index: clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp === --- clang-tools-extra/trunk/clang-tidy/bugprone/BugproneTidyModule.cpp +++ clang-tools-extra/trunk/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-tools-extra/trunk/clang-tidy/bugprone/StringIntegerAssignmentCheck.h
[PATCH] D43868: Rename more checks from misc- to bugprone-.
aaron.ballman accepted this revision. aaron.ballman added a comment. This revision is now accepted and ready to land. LGTM! Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D43868 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43868: Rename more checks from misc- to bugprone-.
alexfh created this revision. alexfh added reviewers: hokein, sammccall, aaron.ballman. Herald added subscribers: mgorny, klimek. clang-tidy/rename_check.py {misc,bugprone}-string-integer-assignment clang-tidy/rename_check.py {misc,bugprone}-string-literal-with-embedded-nul clang-tidy/rename_check.py {misc,bugprone}-suspicious-enum-usage clang-tidy/rename_check.py {misc,bugprone}-suspicious-missing-comma Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D43868 Files: clang-tidy/bugprone/BugproneTidyModule.cpp clang-tidy/bugprone/CMakeLists.txt clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp clang-tidy/bugprone/StringIntegerAssignmentCheck.h clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.cpp clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp clang-tidy/bugprone/SuspiciousEnumUsageCheck.h clang-tidy/bugprone/SuspiciousMissingCommaCheck.cpp clang-tidy/bugprone/SuspiciousMissingCommaCheck.h clang-tidy/misc/CMakeLists.txt clang-tidy/misc/MiscTidyModule.cpp clang-tidy/misc/StringIntegerAssignmentCheck.cpp clang-tidy/misc/StringIntegerAssignmentCheck.h clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.cpp clang-tidy/misc/StringLiteralWithEmbeddedNulCheck.h clang-tidy/misc/SuspiciousEnumUsageCheck.cpp clang-tidy/misc/SuspiciousEnumUsageCheck.h clang-tidy/misc/SuspiciousMissingCommaCheck.cpp clang-tidy/misc/SuspiciousMissingCommaCheck.h docs/ReleaseNotes.rst docs/clang-tidy/checks/bugprone-string-integer-assignment.rst docs/clang-tidy/checks/bugprone-string-literal-with-embedded-nul.rst docs/clang-tidy/checks/bugprone-suspicious-enum-usage.rst docs/clang-tidy/checks/bugprone-suspicious-missing-comma.rst docs/clang-tidy/checks/list.rst docs/clang-tidy/checks/misc-string-integer-assignment.rst docs/clang-tidy/checks/misc-string-literal-with-embedded-nul.rst docs/clang-tidy/checks/misc-suspicious-enum-usage.rst docs/clang-tidy/checks/misc-suspicious-missing-comma.rst test/clang-tidy/bugprone-string-integer-assignment.cpp test/clang-tidy/bugprone-string-literal-with-embedded-nul.cpp test/clang-tidy/bugprone-suspicious-enum-usage-strict.cpp test/clang-tidy/bugprone-suspicious-enum-usage.cpp test/clang-tidy/bugprone-suspicious-missing-comma.cpp test/clang-tidy/misc-string-integer-assignment.cpp test/clang-tidy/misc-string-literal-with-embedded-nul.cpp test/clang-tidy/misc-suspicious-enum-usage-strict.cpp test/clang-tidy/misc-suspicious-enum-usage.cpp test/clang-tidy/misc-suspicious-missing-comma.cpp 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", 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-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: