================
@@ -7,36 +7,111 @@
 
//===----------------------------------------------------------------------===//
 
 #include 
"clang/Analysis/Scalable/Analyses/UnsafeBufferUsage/UnsafeBufferUsage.h"
+#include "clang/AST/DynamicRecursiveASTVisitor.h"
+#include "clang/Analysis/Scalable/ASTEntityMapping.h"
 #include 
"clang/Analysis/Scalable/Analyses/UnsafeBufferUsage/UnsafeBufferUsageBuilder.h"
+#include 
"clang/Analysis/Scalable/Analyses/UnsafeBufferUsage/UnsafeBufferUsageExtractor.h"
 #include "clang/Analysis/Scalable/Model/EntityId.h"
-#include "clang/Analysis/Scalable/Model/EntityIdTable.h"
+#include "clang/Analysis/Scalable/Model/EntityName.h"
+#include "clang/Analysis/Scalable/TUSummary/TUSummary.h"
+#include "clang/Frontend/ASTUnit.h"
+#include "clang/Tooling/Tooling.h"
+#include "gmock/gmock.h"
 #include "gtest/gtest.h"
 
 using namespace clang;
 using namespace ssaf;
 
 namespace {
 
-constexpr inline auto buildEntityPointerLevel =
-    UnsafeBufferUsageTUSummaryBuilder::buildEntityPointerLevel;
-constexpr inline auto buildUnsafeBufferUsageEntitySummary =
-    UnsafeBufferUsageTUSummaryBuilder::buildUnsafeBufferUsageEntitySummary;
+template <typename SomeDecl = NamedDecl>
+const SomeDecl *findDeclByName(StringRef Name, ASTContext &Ctx) {
+  class NamedDeclFinder : public DynamicRecursiveASTVisitor {
+  public:
+    StringRef SearchingName;
+    const NamedDecl *FoundDecl = nullptr;
+
+    NamedDeclFinder(StringRef SearchingName) : SearchingName(SearchingName) {}
+
+    bool VisitDecl(Decl *D) override {
+      if (const auto *ND = dyn_cast<NamedDecl>(D)) {
+        if (ND->getNameAsString() == SearchingName) {
+          FoundDecl = ND;
+          return false;
+        }
+      }
+      return true;
+    }
+  };
+
+  NamedDeclFinder Finder(Name);
+
+  Finder.TraverseDecl(Ctx.getTranslationUnitDecl());
+  return dyn_cast_or_null<SomeDecl>(Finder.FoundDecl);
+}
+
+const FunctionDecl *findFnByName(StringRef Name, ASTContext &Ctx) {
+  return findDeclByName<FunctionDecl>(Name, Ctx);
+}
 
 class UnsafeBufferUsageTest : public testing::Test {
 protected:
-  EntityIdTable Table;
+  TUSummary TUSummary;
+  UnsafeBufferUsageTUSummaryBuilder Builder;
+  UnsafeBufferUsageTUSummaryExtractor Extractor;
+  std::unique_ptr<ASTUnit> AST;
+
+  UnsafeBufferUsageTest()
+      : TUSummary(
+            BuildNamespace(BuildNamespaceKind::CompilationUnit, "Mock.cpp")),
+        Builder(TUSummary),
+        Extractor(UnsafeBufferUsageTUSummaryExtractor(Builder)) {}
+
+  std::unique_ptr<UnsafeBufferUsageEntitySummary>
+  setUpTest(StringRef Code, StringRef ContributorName) {
+    AST = tooling::buildASTFromCodeWithArgs(Code, {});
----------------
steakhal wrote:

Now that we no longer need the args, we can use the simpler API.
```suggestion
    AST = tooling::buildASTFromCode(Code);
```

https://github.com/llvm/llvm-project/pull/182941
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to