diff --git a/src/lib/CFGGenerator.py b/src/lib/CFGGenerator.py
index 21f11b94725c295ac36de10ef4f753871d24807d..d0fbfb1deca3b676b7f498df613bb2fd0f3f74a3 100644
--- a/src/lib/CFGGenerator.py
+++ b/src/lib/CFGGenerator.py
@@ -3,8 +3,8 @@ from lib.ASTGenerator import ASTGenerator
 from lib.utils import format_log
 from tree_sitter import Node,TreeCursor
 from typing import Optional
-import copy
-import re
+from .DependencyManager import FileInformation
+from sys import platform
 
 class CFGGenerator():
   def __init__(self):
@@ -17,7 +17,9 @@ class CFGGenerator():
     ast,cursor,source_code = self.ast_parser.generate(ctx)
     method_list = self.ast_parser.get_all_function_info(source_code,ctx.location)
     deps_list = self.ast_parser.get_dependency_list(source_code,method_list)
-    return CFG(ast,ctx,cursor,method_list,deps_list,source_code)
+    replacement = "\\" if platform.startswith("win") else "/"
+    dependency = FileInformation(ctx.location.split(replacement)[-1],ctx.location,deps_list,method_list)
+    return CFG(ast,ctx,cursor,method_list,deps_list,source_code),dependency
 
 
 class CFG():
diff --git a/src/lib/DependencyManager.py b/src/lib/DependencyManager.py
index a81d7e1bcb27e979023268d885e183ce74f6dcd0..24dc27c638a0f2876b65b3ae11fcfe0a11aaf813 100644
--- a/src/lib/DependencyManager.py
+++ b/src/lib/DependencyManager.py
@@ -2,18 +2,34 @@ class DependencyManager():
   def __init__(self) -> None:
     self.informations = []
 
-  def add(self,info):
-    self.informations.append(info)
+  def add(self,information):
+    for info in self.informations:
+      if info.name == information.name and info.path == information.path:
+        return 
+    # Belum ada
+    self.informations.append(information)
 
   def get(self,name,path):
     for info in self.informations:
       if info.name == name and info.path == path:
         return info
     return None
+  
+  def __repr__(self) -> str:
+    return self.__str__()
+  
+  def __str__(self) -> str:
+    return f"DependencyManager(informations={self.informations})"
 
 class FileInformation():
-  def __call__(self,name,path,dependency_list,method_list):
+  def __init__(self,name,path,dependency_list,method_list):
     self.name:str = name
     self.path:str = path
     self.dependency_list:list = dependency_list
-    self.method_list:list = method_list
\ No newline at end of file
+    self.method_list:list = method_list
+
+  def __repr__(self) -> str:
+    return self.__str__()
+  
+  def __str__(self) -> str:
+    return f"FileInformation(name={self.name},path={self.path},dependency_list=[{len(self.dependency_list)} item],method_list=[{len(self.method_list)} item])"
\ No newline at end of file
diff --git a/src/lib/FileReader.py b/src/lib/FileReader.py
index cbd8445b646f9ae0f625485b8c55b9fa53c45c80..7bdaa783dbae4281b65d0ae99c7cc62d695182be 100644
--- a/src/lib/FileReader.py
+++ b/src/lib/FileReader.py
@@ -5,6 +5,7 @@ from typing import Optional
 from lib.CFGGenerator import CFGGenerator,CFG
 from lib.custom_class import ElementContext
 from sys import platform
+from .DependencyManager import DependencyManager,FileInformation
 class FileReader:
     ANNOTATION_PATTERN = "\S*@.+"
     def __init__(self, project_path:str)->None:
@@ -56,7 +57,8 @@ class FileReader:
                 else:
                   continue
                 # Tentukan parent node ini
-                parent = self.cfg_generator.generate(curr_node).ast.parent
+                tmp,_= self.cfg_generator.generate(curr_node)
+                parent = tmp.ast.parent
                 if parent.type=='decorated_definition':
                   parent = parent.parent
                 if parent.type=='block':
@@ -94,7 +96,11 @@ class FileReader:
                   # Ini kelas biasa
                   continue
                 # Generate CFG jika ini  acl
-                project_info.acl_class[-1].set_cfg(self.cfg_generator.generate(project_info.acl_class[-1]))
+                cfg,deps = self.cfg_generator.generate(project_info.acl_class[-1])
+                project_info.acl_class[-1].set_cfg(cfg)
+                #Daftarkan dependency
+                project_info.dependency_manager.add(deps)
+                # project_info.dependency_manager.add(FileInformation("","",))
                 # Cek jika ini fungsi dalam kelas
                 if(project_info.acl_class[-1].type=='function'):
                   parent = project_info.acl_class[-1].cfg.ast.parent.parent
@@ -132,7 +138,9 @@ class FileReader:
                   replacement = "\\" if platform.startswith("win") else "/"
                   project_info.route_class.append(ElementContext(".".join(file.split(replacement)[-1].split(".")[:-1]),'module',file,additional_context))
                 # Generate CFG jika ini rute
-                project_info.route_class[-1].set_cfg(self.cfg_generator.generate(project_info.route_class[-1]))
+                cfg,deps = self.cfg_generator.generate(project_info.route_class[-1])
+                project_info.route_class[-1].set_cfg(cfg)
+                project_info.dependency_manager.add(deps)
                 # Cek jika ini fungsi dalam kelas
                 if(project_info.route_class[-1].type=='function'):
                   parent = project_info.route_class[-1].cfg.ast.parent.parent
@@ -167,10 +175,11 @@ class ProjectInfo():
   def __init__(self) -> None:
       self.acl_class:list[ElementContext] = []
       self.route_class:list[ElementContext] = []
+      self.dependency_manager:DependencyManager= DependencyManager()
   
   def __repr__(self) -> str:
     return self.__str__()
   
   def __str__(self) -> str:
-    return f"ProjectInfo(acl_class={self.acl_class},route_class={self.route_class})"
+    return f"ProjectInfo(acl_class={self.acl_class},route_class={self.route_class},dependency_manager={self.dependency_manager})"
   
\ No newline at end of file