diff options
| author | Alexander Kornienko <alexfh@google.com> | 2017-11-23 13:49:14 +0000 |
|---|---|---|
| committer | Alexander Kornienko <alexfh@google.com> | 2017-11-23 13:49:14 +0000 |
| commit | a3251bf24c8bc0ebe8fb09e0d59dbc70fa706859 (patch) | |
| tree | 2fa661b80c864922a761b60d6ba32ab86736f1d4 /clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp | |
| parent | c01f7f131bd82659fa484cfd6fc9b8a495b2e5ae (diff) | |
| download | bcm5719-llvm-a3251bf24c8bc0ebe8fb09e0d59dbc70fa706859.tar.gz bcm5719-llvm-a3251bf24c8bc0ebe8fb09e0d59dbc70fa706859.zip | |
[clang-tidy] rename_check.py misc-string-constructor bugprone-string-constructor
Summary:
Rename misc-string-constructor to bugprone-string-constructor +
manually update the lenght of '==='s in the doc file.
Reviewers: hokein, xazax.hun
Reviewed By: hokein, xazax.hun
Subscribers: mgorny, xazax.hun, cfe-commits
Differential Revision: https://reviews.llvm.org/D40388
llvm-svn: 318916
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp')
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp b/clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp new file mode 100644 index 00000000000..51d91305882 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/bugprone-string-constructor.cpp @@ -0,0 +1,56 @@ +// RUN: %check_clang_tidy %s bugprone-string-constructor %t + +namespace std { +template <typename T> +class allocator {}; +template <typename T> +class char_traits {}; +template <typename C, typename T = std::char_traits<C>, typename A = std::allocator<C> > +struct basic_string { + basic_string(); + basic_string(const C*, unsigned int size); + basic_string(unsigned int size, C c); +}; +typedef basic_string<char> string; +typedef basic_string<wchar_t> wstring; +} + +const char* kText = ""; +const char kText2[] = ""; +extern const char kText3[]; + +void Test() { + std::string str('x', 4); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: string constructor parameters are probably swapped; expecting string(count, character) [bugprone-string-constructor] + // CHECK-FIXES: std::string str(4, 'x'); + std::wstring wstr(L'x', 4); + // CHECK-MESSAGES: [[@LINE-1]]:16: warning: string constructor parameters are probably swapped + // CHECK-FIXES: std::wstring wstr(4, L'x'); + std::string s0(0, 'x'); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: constructor creating an empty string + std::string s1(-4, 'x'); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: negative value used as length parameter + std::string s2(0x1000000, 'x'); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: suspicious large length parameter + + std::string q0("test", 0); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: constructor creating an empty string + std::string q1(kText, -4); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: negative value used as length parameter + std::string q2("test", 200); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: length is bigger then string literal size + std::string q3(kText, 200); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: length is bigger then string literal size + std::string q4(kText2, 200); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: length is bigger then string literal size + std::string q5(kText3, 0x1000000); + // CHECK-MESSAGES: [[@LINE-1]]:15: warning: suspicious large length parameter +} + +void Valid() { + std::string empty(); + std::string str(4, 'x'); + std::wstring wstr(4, L'x'); + std::string s1("test", 4); + std::string s2("test", 3); +} |

