================ @@ -0,0 +1,106 @@ +//===- unittests/StaticAnalyzer/CheckLifetimeEndTest.cpp ------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "CheckerRegistration.h" +#include "Reusables.h" +#include "clang/Frontend/CompilerInstance.h" +#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" +#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" +#include "clang/StaticAnalyzer/Core/Checker.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CallDescription.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" +#include "clang/StaticAnalyzer/Frontend/AnalysisConsumer.h" +#include "clang/StaticAnalyzer/Frontend/CheckerRegistry.h" +#include "llvm/Config/llvm-config.h" +#include "gtest/gtest.h" + +namespace { +using namespace clang; +using namespace ento; + +class LifetimeEndReporter : public Checker<check::LifetimeEnd> { + const BugType LifetimeEndNode{this, "LifetimeEndReporter"}; + + bool report(CheckerContext &C, Twine Description) const { + ExplodedNode *Node = C.generateNonFatalErrorNode(C.getState()); + if (!Node) + return false; + + auto Report = std::make_unique<PathSensitiveBugReport>( + LifetimeEndNode, Description.str(), Node); + C.emitReport(std::move(Report)); + return true; + } + +public: + void checkLifetimeEnd(const VarDecl *D, CheckerContext &C) const { + auto II = D->getIdentifier(); + ASSERT_TRUE(II != nullptr); ---------------- steakhal wrote:
FYI if the identifier comes from a trigraph, it can't be represented by an identifier. This is why I suggested to use the `D->getDeclName().getAsString()` because that will work all the time - albeit a bit more expensive because we need to allocate. But this is just test. It doesn't really matter. We don't usually write trigraps in declaration names and we also don't care about extra allocations in unittests. https://github.com/llvm/llvm-project/pull/201123 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
