[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