[PATCH] D20196: [clang-tidy] Inefficient string operation
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Fri May 20 02:37:36 PDT 2016
alexfh requested changes to this revision.
This revision now requires changes to proceed.
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.cpp:28
@@ +27,3 @@
+ : ClangTidyCheck(Name, Context),
+ IsStrictMode(Options.get("isStrictMode", 0)) {}
+
----------------
s/IsStrictMode/StrictMode/
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.cpp:31
@@ +30,3 @@
+void InefficientStringAdditionCheck::registerMatchers(MatchFinder *Finder) {
+ const auto BasicStringType =
+ hasType(cxxRecordDecl(hasName("::std::basic_string")));
----------------
This check is only useful for C++. Please add
```
if (!getLangOpts().CPlusPlus)
return;
```
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.cpp:84
@@ +83,3 @@
+ const auto DiagMsg =
+ "inefficient string concatenation; use operator+= or "
+ "string::append() instead";
----------------
The root of inefficiency is in unnecessary allocations of temporary strings, so maybe we should note this in the warning message, e.g. "string concatenation results in allocation of unnecessary temporary strings; consider using 'operator+=' or 'string::append()' instead".
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.h:24
@@ +23,3 @@
+/// http://clang.llvm.org/extra/clang-tidy/checks/performance-inefficient-string-addition.html
+
+class InefficientStringAdditionCheck : public ClangTidyCheck {
----------------
Please remove the empty line.
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.h:25
@@ +24,3 @@
+
+class InefficientStringAdditionCheck : public ClangTidyCheck {
+ public:
----------------
s/Addition/Concatenation/?
================
Comment at: clang-tidy/performance/InefficientStringAdditionCheck.h:33
@@ +32,3 @@
+ private:
+ int IsStrictMode;
+};
----------------
`const bool StrictMode;`
================
Comment at: docs/clang-tidy/checks/performance-inefficient-string-addition.rst:15
@@ +14,3 @@
+
+Instead of this structure you should use ``operator+=`` or std::string's (std::basic_string) class member function ``append``. For instance:
+
----------------
Please enclose `std::string`, `std::basic_string` and other inline code snippets in double backquotes.
http://reviews.llvm.org/D20196
More information about the cfe-commits
mailing list