[clang-tidy] Address review comments for the Twine checker.

- Remove unused includes.
- Minor wording fix.
- Added support to check for clang-tidy messages to check_clang_tidy_fix.sh
= Updated test case.

llvm-svn: 212540
This commit is contained in:
Benjamin Kramer 2014-07-08 15:41:20 +00:00
parent d261e98f3d
commit ee58721875
4 changed files with 8 additions and 11 deletions

View File

@ -11,7 +11,6 @@
#include "clang/AST/ASTContext.h"
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Lex/Lexer.h"
#include "llvm/Support/raw_ostream.h"
using namespace clang::ast_matchers;
@ -29,7 +28,7 @@ void TwineLocalCheck::registerMatchers(MatchFinder *Finder) {
void TwineLocalCheck::check(const MatchFinder::MatchResult &Result) {
const VarDecl *VD = Result.Nodes.getNodeAs<VarDecl>("variable");
auto Diag = diag(VD->getLocation(),
"twine variables are prone to use after free bugs");
"twine variables are prone to use-after-free bugs");
// If this VarDecl has an initializer try to fix it.
if (VD->hasInit()) {

View File

@ -11,7 +11,6 @@
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_TWINE_LOCAL_CHECK_H
#include "../ClangTidy.h"
#include "llvm/Support/Regex.h"
namespace clang {
namespace tidy {

View File

@ -7,5 +7,6 @@ CHECK_TO_RUN=$2
TEMPORARY_FILE=$3.cpp
grep -Ev "// *[A-Z-]+:" ${INPUT_FILE} > ${TEMPORARY_FILE}
clang-tidy ${TEMPORARY_FILE} -fix --checks="-*,${CHECK_TO_RUN}" -- --std=c++11
clang-tidy ${TEMPORARY_FILE} -fix --checks="-*,${CHECK_TO_RUN}" -- --std=c++11 > ${TEMPORARY_FILE}.msg 2>&1
FileCheck -input-file=${TEMPORARY_FILE} ${INPUT_FILE} -strict-whitespace
not grep CHECK-MESSAGES ${INPUT_FILE} || FileCheck -input-file=${TEMPORARY_FILE}.msg ${INPUT_FILE} -check-prefix=CHECK-MESSAGES

View File

@ -1,7 +1,5 @@
// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
// RUN: clang-tidy %t.cpp -checks='-*,llvm-twine-local' -fix -- > %t.msg 2>&1
// RUN: FileCheck -input-file=%t.cpp %s
// RUN: FileCheck -input-file=%t.msg -check-prefix=CHECK-MESSAGES %s
// RUN: $(dirname %s)/check_clang_tidy_fix.sh %s llvm-twine-local %t
// REQUIRES: shell
namespace llvm {
class Twine {
@ -17,19 +15,19 @@ using namespace llvm;
void foo(const Twine &x);
static Twine Moo = Twine("bark") + "bah";
// CHECK-MASSAGES: twine variables are prone to use after free bugs
// CHECK-MASSAGES: twine variables are prone to use-after-free bugs
// CHECK-MESSAGES: note: FIX-IT applied suggested code changes
// CHECK: static std::string Moo = (Twine("bark") + "bah").str();
int main() {
const Twine t = Twine("a") + "b" + Twine(42);
// CHECK-MASSAGES: twine variables are prone to use after free bugs
// CHECK-MASSAGES: twine variables are prone to use-after-free bugs
// CHECK-MESSAGES: note: FIX-IT applied suggested code changes
// CHECK: std::string t = (Twine("a") + "b" + Twine(42)).str();
foo(Twine("a") + "b");
Twine Prefix = false ? "__INT_FAST" : "__UINT_FAST";
// CHECK-MASSAGES: twine variables are prone to use after free bugs
// CHECK-MASSAGES: twine variables are prone to use-after-free bugs
// CHECK-MESSAGES: note: FIX-IT applied suggested code changes
// CHECK: const char * Prefix = false ? "__INT_FAST" : "__UINT_FAST";
}