diff options
author | Gabor Horvath <xazax.hun@gmail.com> | 2015-12-15 08:47:20 +0000 |
---|---|---|
committer | Gabor Horvath <xazax.hun@gmail.com> | 2015-12-15 08:47:20 +0000 |
commit | 454564a2d940e28577ef110474b026c568e60f46 (patch) | |
tree | ce5e40ba1ac16818229d4ad181522d156e6d9951 /clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp | |
parent | 6015f5c8237c259ac04c539d55d200baa885a807 (diff) | |
download | bcm5719-llvm-454564a2d940e28577ef110474b026c568e60f46.tar.gz bcm5719-llvm-454564a2d940e28577ef110474b026c568e60f46.zip |
[clang-tidy] Check for suspicious string assignments.
It is possible to assign arbitrary integer types to strings.
Sometimes it is the result of missing to_string call or apostrophes.
Reviewers: alexfh
Differential Revision: http://reviews.llvm.org/D15411
llvm-svn: 255630
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp b/clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp new file mode 100644 index 00000000000..cb823410777 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/misc-string-integer-assignment.cpp @@ -0,0 +1,53 @@ +// RUN: %check_clang_tidy %s misc-string-integer-assignment %t + +namespace std { +template<typename T> +struct basic_string { + basic_string& operator=(T); + basic_string& operator=(basic_string); + basic_string& operator+=(T); + basic_string& operator+=(basic_string); +}; + +typedef basic_string<char> string; +typedef basic_string<wchar_t> wstring; +} + +typedef int MyArcaneChar; + +int main() { + std::string s; + std::wstring ws; + 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-FIXES: {{^}} s = '6';{{$}} + s = 66; +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} s = "66";{{$}} + s = x; +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} s = std::to_string(x);{{$}} + s = 'c'; + s = static_cast<char>(6); + +// += + ws += 6; +// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} ws += L'6';{{$}} + ws += 66; +// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} ws += L"66";{{$}} + ws += x; +// CHECK-MESSAGES: :[[@LINE-1]]:9: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} ws += std::to_wstring(x);{{$}} + ws += L'c'; + ws += (wchar_t)6; + + std::basic_string<MyArcaneChar> as; + as = 6; +// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: an integer is interpreted as a chara +// CHECK-FIXES: {{^}} as = 6;{{$}} + +} |