r358720 - [analyzer] NFC: Make reusable unittest mocks reusable.
Artem Dergachev via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 18 16:24:50 PDT 2019
Author: dergachev
Date: Thu Apr 18 16:24:50 2019
New Revision: 358720
URL: http://llvm.org/viewvc/llvm-project?rev=358720&view=rev
Log:
[analyzer] NFC: Make reusable unittest mocks reusable.
Put them in a header for other Analyzer unittests to include.
Differential Revision: https://reviews.llvm.org/D60739
Added:
cfe/trunk/unittests/StaticAnalyzer/Reusables.h
Modified:
cfe/trunk/unittests/StaticAnalyzer/SymbolReaperTest.cpp
Added: cfe/trunk/unittests/StaticAnalyzer/Reusables.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/StaticAnalyzer/Reusables.h?rev=358720&view=auto
==============================================================================
--- cfe/trunk/unittests/StaticAnalyzer/Reusables.h (added)
+++ cfe/trunk/unittests/StaticAnalyzer/Reusables.h Thu Apr 18 16:24:50 2019
@@ -0,0 +1,58 @@
+//===- unittests/StaticAnalyzer/Reusables.h -------------------------------===//
+//
+// 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 "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/Frontend/CompilerInstance.h"
+#include "clang/CrossTU/CrossTranslationUnit.h"
+#include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
+
+namespace clang {
+namespace ento {
+
+// Find a declaration in the current AST by name.
+template <typename T>
+const T *findDeclByName(const Decl *Where, StringRef Name) {
+ using namespace ast_matchers;
+ auto Matcher = decl(hasDescendant(namedDecl(hasName(Name)).bind("d")));
+ auto Matches = match(Matcher, *Where, Where->getASTContext());
+ assert(Matches.size() == 1 && "Ambiguous name!");
+ const T *Node = selectFirst<T>("d", Matches);
+ assert(Node && "Name not found!");
+ return Node;
+}
+
+// A re-usable consumer that constructs ExprEngine out of CompilerInvocation.
+class ExprEngineConsumer : public ASTConsumer {
+protected:
+ CompilerInstance &C;
+
+private:
+ // We need to construct all of these in order to construct ExprEngine.
+ CheckerManager ChkMgr;
+ cross_tu::CrossTranslationUnitContext CTU;
+ PathDiagnosticConsumers Consumers;
+ AnalysisManager AMgr;
+ SetOfConstDecls VisitedCallees;
+ FunctionSummariesTy FS;
+
+protected:
+ ExprEngine Eng;
+
+public:
+ ExprEngineConsumer(CompilerInstance &C)
+ : C(C), ChkMgr(C.getASTContext(), *C.getAnalyzerOpts()), CTU(C),
+ Consumers(),
+ AMgr(C.getASTContext(), C.getDiagnostics(), Consumers,
+ CreateRegionStoreManager, CreateRangeConstraintManager, &ChkMgr,
+ *C.getAnalyzerOpts()),
+ VisitedCallees(), FS(),
+ Eng(CTU, AMgr, &VisitedCallees, &FS, ExprEngine::Inline_Regular) {}
+};
+
+} // namespace ento
+} // namespace clang
Modified: cfe/trunk/unittests/StaticAnalyzer/SymbolReaperTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/StaticAnalyzer/SymbolReaperTest.cpp?rev=358720&r1=358719&r2=358720&view=diff
==============================================================================
--- cfe/trunk/unittests/StaticAnalyzer/SymbolReaperTest.cpp (original)
+++ cfe/trunk/unittests/StaticAnalyzer/SymbolReaperTest.cpp Thu Apr 18 16:24:50 2019
@@ -6,13 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h"
-#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
-#include "clang/CrossTU/CrossTranslationUnit.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
-#include "clang/StaticAnalyzer/Frontend/AnalysisConsumer.h"
+#include "Reusables.h"
+
#include "clang/Tooling/Tooling.h"
#include "gtest/gtest.h"
@@ -20,50 +15,6 @@ namespace clang {
namespace ento {
namespace {
-using namespace ast_matchers;
-
-// A re-usable consumer that constructs ExprEngine out of CompilerInvocation.
-// TODO: Actually re-use it when we write our second test.
-class ExprEngineConsumer : public ASTConsumer {
-protected:
- CompilerInstance &C;
-
-private:
- // We need to construct all of these in order to construct ExprEngine.
- CheckerManager ChkMgr;
- cross_tu::CrossTranslationUnitContext CTU;
- PathDiagnosticConsumers Consumers;
- AnalysisManager AMgr;
- SetOfConstDecls VisitedCallees;
- FunctionSummariesTy FS;
-
-protected:
- ExprEngine Eng;
-
- // Find a declaration in the current AST by name. This has nothing to do
- // with ExprEngine but turns out to be handy.
- // TODO: There's probably a better place for it.
- template <typename T>
- const T *findDeclByName(const Decl *Where, StringRef Name) {
- auto Matcher = decl(hasDescendant(namedDecl(hasName(Name)).bind("d")));
- auto Matches = match(Matcher, *Where, Eng.getContext());
- assert(Matches.size() == 1 && "Ambiguous name!");
- const T *Node = selectFirst<T>("d", Matches);
- assert(Node && "Name not found!");
- return Node;
- }
-
-public:
- ExprEngineConsumer(CompilerInstance &C)
- : C(C), ChkMgr(C.getASTContext(), *C.getAnalyzerOpts()), CTU(C),
- Consumers(),
- AMgr(C.getASTContext(), C.getDiagnostics(), Consumers,
- CreateRegionStoreManager, CreateRangeConstraintManager, &ChkMgr,
- *C.getAnalyzerOpts()),
- VisitedCallees(), FS(),
- Eng(CTU, AMgr, &VisitedCallees, &FS, ExprEngine::Inline_Regular) {}
-};
-
class SuperRegionLivenessConsumer : public ExprEngineConsumer {
void performTest(const Decl *D) {
const auto *FD = findDeclByName<FieldDecl>(D, "x");
@@ -99,7 +50,7 @@ public:
}
};
-class SuperRegionLivenessAction: public ASTFrontendAction {
+class SuperRegionLivenessAction : public ASTFrontendAction {
public:
SuperRegionLivenessAction() {}
std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &Compiler,
More information about the cfe-commits
mailing list