forked from OSchip/llvm-project
[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:
parent
d261e98f3d
commit
ee58721875
|
@ -11,7 +11,6 @@
|
||||||
#include "clang/AST/ASTContext.h"
|
#include "clang/AST/ASTContext.h"
|
||||||
#include "clang/ASTMatchers/ASTMatchers.h"
|
#include "clang/ASTMatchers/ASTMatchers.h"
|
||||||
#include "clang/Lex/Lexer.h"
|
#include "clang/Lex/Lexer.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
|
||||||
|
|
||||||
using namespace clang::ast_matchers;
|
using namespace clang::ast_matchers;
|
||||||
|
|
||||||
|
@ -29,7 +28,7 @@ void TwineLocalCheck::registerMatchers(MatchFinder *Finder) {
|
||||||
void TwineLocalCheck::check(const MatchFinder::MatchResult &Result) {
|
void TwineLocalCheck::check(const MatchFinder::MatchResult &Result) {
|
||||||
const VarDecl *VD = Result.Nodes.getNodeAs<VarDecl>("variable");
|
const VarDecl *VD = Result.Nodes.getNodeAs<VarDecl>("variable");
|
||||||
auto Diag = diag(VD->getLocation(),
|
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 this VarDecl has an initializer try to fix it.
|
||||||
if (VD->hasInit()) {
|
if (VD->hasInit()) {
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_TWINE_LOCAL_CHECK_H
|
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_LLVM_TWINE_LOCAL_CHECK_H
|
||||||
|
|
||||||
#include "../ClangTidy.h"
|
#include "../ClangTidy.h"
|
||||||
#include "llvm/Support/Regex.h"
|
|
||||||
|
|
||||||
namespace clang {
|
namespace clang {
|
||||||
namespace tidy {
|
namespace tidy {
|
||||||
|
|
|
@ -7,5 +7,6 @@ CHECK_TO_RUN=$2
|
||||||
TEMPORARY_FILE=$3.cpp
|
TEMPORARY_FILE=$3.cpp
|
||||||
|
|
||||||
grep -Ev "// *[A-Z-]+:" ${INPUT_FILE} > ${TEMPORARY_FILE}
|
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
|
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
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
|
// RUN: $(dirname %s)/check_clang_tidy_fix.sh %s llvm-twine-local %t
|
||||||
// RUN: clang-tidy %t.cpp -checks='-*,llvm-twine-local' -fix -- > %t.msg 2>&1
|
// REQUIRES: shell
|
||||||
// RUN: FileCheck -input-file=%t.cpp %s
|
|
||||||
// RUN: FileCheck -input-file=%t.msg -check-prefix=CHECK-MESSAGES %s
|
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
class Twine {
|
class Twine {
|
||||||
|
@ -17,19 +15,19 @@ using namespace llvm;
|
||||||
void foo(const Twine &x);
|
void foo(const Twine &x);
|
||||||
|
|
||||||
static Twine Moo = Twine("bark") + "bah";
|
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-MESSAGES: note: FIX-IT applied suggested code changes
|
||||||
// CHECK: static std::string Moo = (Twine("bark") + "bah").str();
|
// CHECK: static std::string Moo = (Twine("bark") + "bah").str();
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
const Twine t = Twine("a") + "b" + Twine(42);
|
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-MESSAGES: note: FIX-IT applied suggested code changes
|
||||||
// CHECK: std::string t = (Twine("a") + "b" + Twine(42)).str();
|
// CHECK: std::string t = (Twine("a") + "b" + Twine(42)).str();
|
||||||
foo(Twine("a") + "b");
|
foo(Twine("a") + "b");
|
||||||
|
|
||||||
Twine Prefix = false ? "__INT_FAST" : "__UINT_FAST";
|
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-MESSAGES: note: FIX-IT applied suggested code changes
|
||||||
// CHECK: const char * Prefix = false ? "__INT_FAST" : "__UINT_FAST";
|
// CHECK: const char * Prefix = false ? "__INT_FAST" : "__UINT_FAST";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue