[PATCH] D43868: Rename more checks from misc- to bugprone-.

2018-02-28 Thread Alexander Kornienko via Phabricator via cfe-commits
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-.

2018-02-28 Thread Alexander Kornienko via Phabricator via cfe-commits
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-.

2018-02-28 Thread Aaron Ballman via Phabricator via cfe-commits
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-.

2018-02-28 Thread Alexander Kornienko via Phabricator via cfe-commits
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: