[PATCH] D18136: boost-use-to-string check

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 1 19:22:24 PDT 2016


alexfh requested changes to this revision.
This revision now requires changes to proceed.

================
Comment at: clang-tidy/boost/UseToStringCheck.cpp:55
@@ +54,3 @@
+void UseToStringCheck::check(const MatchFinder::MatchResult &Result) {
+  const auto *MatchedToString = Result.Nodes.getNodeAs<CallExpr>("to_string");
+  auto CharType =
----------------
"Matched" isn't useful here and "ToString" is misleading. I'd name this `LexicalCastCall` or just `Call`.

================
Comment at: clang-tidy/boost/UseToStringCheck.cpp:59
@@ +58,3 @@
+
+  if (CharType.isNull())
+    return;
----------------
When can `CharType` be `isNull()`? Do you have a test case for this?

================
Comment at: clang-tidy/boost/UseToStringCheck.cpp:64
@@ +63,3 @@
+      CharType->isSpecificBuiltinType(BuiltinType::Char_U)) {
+    apply(MatchedToString,
+          "use std::to_string instead of boost::lexical_cast<std::string>",
----------------
I'd rewrite this code as:

  StringRef StringType;
  if (CharType->isSpecificBuiltinType(BuiltinType::Char_S) ||
      CharType->isSpecificBuiltinType(BuiltinType::Char_U))
    StringType = "string";
  else if (CharType->isSpecificBuiltinType(BuiltinType::WChar_S) ||
           CharType->isSpecificBuiltinType(BuiltinType::WChar_U))
    StringType = "wstring";
  else
    return;

  diag(Call->getLocStart(), "use std::to_%0 instead of boost::lexical_cast<std::%0>")
      << StringType << FixItHint::CreateReplacement(
          CharSourceRange::getCharRange(Call->getLocStart(),
                             Call->getArg(0)->getExprLoc()),
          (llvm::Twine("std::to_") + StringType).str());

================
Comment at: clang-tidy/boost/UseToStringCheck.cpp:68
@@ +67,3 @@
+  }
+  // Is CharType 'wchar_t'.
+  else if (CharType->isSpecificBuiltinType(BuiltinType::WChar_S) ||
----------------
Please move this comment inside the `if` body. As it is now, it breaks the formatting.

================
Comment at: docs/clang-tidy/checks/boost-use-to-string.rst:6
@@ +5,3 @@
+
+This check finds conversion from integer type like int to std::string or
+std::wstring using boost::lexical_cast, and replace it to calls of
----------------
Please enclose inline code snippets in double backquotes (`int`, `std::string`, etc.).


http://reviews.llvm.org/D18136





More information about the cfe-commits mailing list