diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp index f78953feb4ce..aec2d98a2f7d 100644 --- a/clang-tools-extra/clang-tidy/ClangTidy.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -71,7 +71,8 @@ public: E = Diags.end(); I != E; ++I) { const ento::PathDiagnostic *PD = *I; - StringRef CheckName(AnalyzerCheckNamePrefix); + SmallString<64> CheckName(AnalyzerCheckNamePrefix); + CheckName += PD->getCheckName(); addRanges(Context.diag(CheckName, PD->getLocation().asLocation(), PD->getShortDescription()), PD->path.back()->getRanges()); diff --git a/clang-tools-extra/test/clang-tidy/static-analyzer.cpp b/clang-tools-extra/test/clang-tidy/static-analyzer.cpp index 8e14773847a4..66f56c758cef 100644 --- a/clang-tools-extra/test/clang-tidy/static-analyzer.cpp +++ b/clang-tools-extra/test/clang-tidy/static-analyzer.cpp @@ -1,8 +1,17 @@ -// RUN: clang-tidy %s -checks='clang-analyzer-cplusplus' -- | FileCheck %s +// RUN: clang-tidy %s -checks='clang-analyzer-' -- | FileCheck %s +extern void *malloc(unsigned long); +extern void free(void *); void f() { int *p = new int(42); delete p; delete p; - // CHECK: warning: Attempt to free released memory + // CHECK: warning: Attempt to free released memory [clang-analyzer-cplusplus.NewDelete] +} + +void g() { + void *q = malloc(132); + free(q); + free(q); + // CHECK: warning: Attempt to free released memory [clang-analyzer-unix.Malloc] }