Parcourir la source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	.idea/.gitignore
#	.idea/PrivacyScan.iml
#	.idea/misc.xml
刘凡 il y a 3 ans
Parent
commit
675ec90cf0
35 fichiers modifiés avec 194 ajouts et 93 suppressions
  1. 5 0
      .idea/.gitignore
  2. 7 2
      .idea/PrivacyScan.iml
  3. 13 0
      .idea/inspectionProfiles/Project_Default.xml
  4. 1 1
      .idea/misc.xml
  5. BIN
      __pycache__/interface.cpython-38.pyc
  6. BIN
      accuracy/__pycache__/__init__.cpython-38.pyc
  7. BIN
      accuracy/__pycache__/accuracytest.cpython-38.pyc
  8. BIN
      algorithm/__pycache__/__init__.cpython-38.pyc
  9. BIN
      algorithm/__pycache__/charactermatch.cpython-38.pyc
  10. BIN
      analyze/__pycache__/__init__.cpython-38.pyc
  11. BIN
      analyze/__pycache__/outanalyze.cpython-38.pyc
  12. BIN
      analyze/output2/src.xls
  13. 8 17
      flaskBack.py
  14. 3 3
      interface.py
  15. BIN
      lattices/__pycache__/__init__.cpython-38.pyc
  16. BIN
      lattices/__pycache__/asttype.cpython-38.pyc
  17. BIN
      lattices/__pycache__/buildtree.cpython-38.pyc
  18. BIN
      models/__pycache__/__init__.cpython-38.pyc
  19. BIN
      models/__pycache__/funcnode.cpython-38.pyc
  20. BIN
      models/__pycache__/sentencenode.cpython-38.pyc
  21. BIN
      parse/__pycache__/__init__.cpython-38.pyc
  22. BIN
      parse/__pycache__/parse.cpython-38.pyc
  23. BIN
      parse/__pycache__/parse2nd.cpython-38.pyc
  24. 6 3
      parse/parse.py
  25. 1 1
      parse/parse2nd.py
  26. 1 0
      requirements.txt
  27. 112 59
      tmp.gv
  28. BIN
      utils/__pycache__/ERRORLIST.cpython-38.pyc
  29. BIN
      utils/__pycache__/__init__.cpython-38.pyc
  30. BIN
      utils/__pycache__/fileio.cpython-38.pyc
  31. BIN
      utils/__pycache__/funclink.cpython-38.pyc
  32. BIN
      utils/__pycache__/log.cpython-38.pyc
  33. BIN
      utils/__pycache__/source.cpython-38.pyc
  34. 6 7
      utils/funclink.py
  35. 31 0
      utils/tmp.gv

+ 5 - 0
.idea/.gitignore

@@ -1,3 +1,8 @@
 # Default ignored files
 /shelf/
 /workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 7 - 2
.idea/PrivacyScan.iml

@@ -1,12 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="PYTHON_MODULE" version="4">
   <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 3.9 (base)" jdkType="Python SDK" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="PyDocumentationSettings">
     <option name="format" value="GOOGLE" />
     <option name="myDocStringFormat" value="Google" />
   </component>
+  <component name="TemplatesService">
+    <option name="TEMPLATE_CONFIGURATION" value="Jinja2" />
+  </component>
 </module>

+ 13 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,13 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
+      <option name="ignoredErrors">
+        <list>
+          <option value="N806" />
+          <option value="N802" />
+        </list>
+      </option>
+    </inspection_tool>
+  </profile>
+</component>

+ 1 - 1
.idea/misc.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (base)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (PrivacyScan)" project-jdk-type="Python SDK" />
   <component name="PyCharmProfessionalAdvertiser">
     <option name="shown" value="true" />
   </component>

BIN
__pycache__/interface.cpython-38.pyc


BIN
accuracy/__pycache__/__init__.cpython-38.pyc


BIN
accuracy/__pycache__/accuracytest.cpython-38.pyc


BIN
algorithm/__pycache__/__init__.cpython-38.pyc


BIN
algorithm/__pycache__/charactermatch.cpython-38.pyc


BIN
analyze/__pycache__/__init__.cpython-38.pyc


BIN
analyze/__pycache__/outanalyze.cpython-38.pyc


BIN
analyze/output2/src.xls


+ 8 - 17
flaskBack.py

@@ -11,28 +11,19 @@ cors = CORS(app, resources={r"/scan": {"origins": "*"}})
 
 @app.route("/scan", methods=['POST'])
 def scan():
-    source = request.get_json()['source']
     print(request.get_json())
-    data_type = load_json('lattices/datatype_dictionary.json')
-    purpose_dict = load_json('lattices/purpose_dictionary.json')
+    source = request.get_json()['source']
+    entire = request.get_json()['entire']
+    data_type = request.get_json()['dataType']
+    purpose_dict = request.get_json()['purpose']
+    data_type = load_json(data_type)
+    purpose_dict = load_json(purpose_dict)
     lattice = {'dataType': data_type, 'purpose': purpose_dict}
-
     result = annotate(source, lattice,
-             False)
-    # result = {
-    #     'accuracy': {
-    #         'recall_accurate': 10,
-    #         'recall_location': 128,
-    #         'location_num': 158
-    #     },
-    #     'missed': {
-    #         'suspected_node_list': ["第一个文件 第一行", "第一个文件 第二行"],
-    #         'missed': ["命中:第一个文件 第一行", "未命中:第二个文件第三行"]
-    #     }
-    # }
+             entire)
     print(source)
     return jsonify(result)
 
 
 if __name__ == '__main__':
-    app.run()
+    app.run(host="0.0.0.0",post=5000,debug=True)

+ 3 - 3
interface.py

@@ -172,9 +172,9 @@ if __name__ == '__main__':
     purpose_dict = load_json('lattices/purpose.json')
     lattice = {'dataType': data_type, 'purpose': purpose_dict}
 
-    # res = annotate("D:\\Download\\azure-storage-blob-master\\sdk\\storage\\azure-storage-file-share\\samples", lattice,
-    #                False)
-    res = annotate("/Users/liufan/Documents/实验室/隐私扫描项目/SAP检测项目/cms/test", lattice, False)
+    res = annotate("D:\\study\\python\\SAP检测项目\\hana-my-thai-star-data-generator\\src", lattice,
+                   False)
+    # res = annotate("/Users/liufan/Documents/实验室/隐私扫描项目/SAP检测项目/cms/test", lattice, False)
     print('----------------annotation-------------------')
     for key, value in res['result']['annotation'].items():
         print(key, value)

BIN
lattices/__pycache__/__init__.cpython-38.pyc


BIN
lattices/__pycache__/asttype.cpython-38.pyc


BIN
lattices/__pycache__/buildtree.cpython-38.pyc


BIN
models/__pycache__/__init__.cpython-38.pyc


BIN
models/__pycache__/funcnode.cpython-38.pyc


BIN
models/__pycache__/sentencenode.cpython-38.pyc


BIN
parse/__pycache__/__init__.cpython-38.pyc


BIN
parse/__pycache__/parse.cpython-38.pyc


BIN
parse/__pycache__/parse2nd.cpython-38.pyc


+ 6 - 3
parse/parse.py

@@ -5,6 +5,7 @@ from models.funcnode import FuncNode, get_script, match_data_type, \
 from models.sentencenode import SuspectedSentenceNode
 from utils import log
 from utils.ERRORLIST import error_list
+
 logging = log.getlogger()
 
 
@@ -30,7 +31,7 @@ def parse_tree(source, lattices, file_name, tree_node, code_lines, node_list=Non
         node_list = []
     data_type = lattices["dataType"]
     purpose_dict = lattices["purpose"]
-    if isinstance(tree_node, ast.FunctionDef):
+    if isinstance(tree_node, ast.FunctionDef) or isinstance(tree_node, ast.AsyncFunctionDef):
         func_node = FuncNode(tree_node, file_name, lattices, code_lines)
         try:
             all_nodes = func_node.get_sentence_nodes()
@@ -55,7 +56,7 @@ def parse_tree(source, lattices, file_name, tree_node, code_lines, node_list=Non
     elif isinstance(tree_node, ast.ClassDef):
         class_name = tree_node.name
         for node_son in tree_node.body:
-            if isinstance(node_son, ast.FunctionDef):
+            if isinstance(node_son, ast.FunctionDef) or isinstance(tree_node, ast.AsyncFunctionDef):
                 node_list, func_dict = parse_tree(source, lattices, file_name, node_son, code_lines, node_list,
                                                   func_dict, class_name)
 
@@ -139,7 +140,9 @@ def add_code(lattices, file_name, tree_node, code_lines, node_list):
     """
     data_type = lattices["dataType"]
     purpose_dict = lattices["purpose"]
-    if not isinstance(tree_node, ast.FunctionDef) and not isinstance(tree_node, ast.ClassDef) and not isinstance(
+    if not isinstance(tree_node, ast.FunctionDef) and not isinstance(tree_node,
+                                                                     ast.AsyncFunctionDef) and not isinstance(tree_node,
+                                                                                                              ast.ClassDef) and not isinstance(
             tree_node, ast.Import) and not isinstance(tree_node, ast.Module):
         line_no = tree_node.lineno
         script_ori, script = get_script(tree_node, code_lines)

+ 1 - 1
parse/parse2nd.py

@@ -158,7 +158,7 @@ def parse_tree2nd(source_dir, p, node, lines, func_node_dict, node_list_1st, fil
             node_list = parse_tree2nd(source_dir, p, node_son, lines, func_node_dict, node_list_1st,
                                       file_name, node_list, func_name=node.name,
                                       class_name=node.name)
-    elif isinstance(node, ast.FunctionDef):
+    elif isinstance(node, ast.FunctionDef) or isinstance(node, ast.AsyncFunctionDef):
         for node_son in node.body:
             node_list = parse_tree2nd(source_dir, p, node_son, lines, func_node_dict, node_list_1st,
                                       file_name, node_list, func_name=node.name,

+ 1 - 0
requirements.txt

@@ -17,4 +17,5 @@ qrcode==6.1
 requests==2.26.0
 
 xlrd==1.2.0
+xlwt==1.3.0
 

+ 112 - 59
tmp.gv

@@ -3,74 +3,127 @@ digraph G {
     subgraph cluster_G {
 
         graph [style="filled,rounded", fillcolor="#80808018", label=""];
-        AddAdmin [label="AddAdmin", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="0"];
-        AddUser [label="AddUser", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="1"];
-        ImportUser [label="ImportUser", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="2"];
-        RemoveUser [label="RemoveUser", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="3"];
-        subgraph cluster_AddAdmin {
+        address_generator [label="address_generator", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="0"];
+        holiday [label="holiday", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="1"];
+        main [label="main", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="2"];
+        math_utils [label="math_utils", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="3"];
+        model_generator-backup [label="model_generator-backup", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="4"];
+        users [label="users", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="5"];
+        weather [label="weather", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="6"];
+        subgraph cluster_address_generator {
 
-            graph [style="filled,rounded", fillcolor="#80808018", label="AddAdmin"];
-            AddAdmin__add_admin [label="add_admin", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
-            AddAdmin__main [label="main", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
+            graph [style="filled,rounded", fillcolor="#80808018", label="address_generator"];
+            address_generator__address_generate [label="address_generate", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
+            address_generator__find_coordinates [label="find_coordinates", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
+            address_generator__find_plz [label="find_plz", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
         }
-        subgraph cluster_AddUser {
+        subgraph cluster_holiday {
 
-            graph [style="filled,rounded", fillcolor="#80808018", label="AddUser"];
-            AddUser__add_user [label="add_user", style="filled", fillcolor="#f4feccb2", fontcolor="#000000", group="1"];
-            AddUser__main [label="main", style="filled", fillcolor="#f4feccb2", fontcolor="#000000", group="1"];
+            graph [style="filled,rounded", fillcolor="#80808018", label="holiday"];
+            holiday__get_holiday_data [label="get_holiday_data", style="filled", fillcolor="#fef2ccb2", fontcolor="#000000", group="1"];
         }
-        subgraph cluster_ImportUser {
+        subgraph cluster_main {
 
-            graph [style="filled,rounded", fillcolor="#80808018", label="ImportUser"];
-            ImportUser__UserImporter [label="UserImporter", style="filled", fillcolor="#ccfee0b2", fontcolor="#000000", group="2"];
-            ImportUser__main [label="main", style="filled", fillcolor="#ccfee0b2", fontcolor="#000000", group="2"];
-            subgraph cluster_ImportUser__UserImporter {
+            graph [style="filled,rounded", fillcolor="#80808018", label="main"];
+            main__clean_up [label="clean_up", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__create_connection [label="create_connection", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__generate_orders [label="generate_orders", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__get_dish_users [label="get_dish_users", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__get_geo_weights [label="get_geo_weights", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__insert_date_info [label="insert_date_info", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__insert_orders [label="insert_orders", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__insert_users [label="insert_users", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+            main__main [label="main", style="filled", fillcolor="#e5feccb2", fontcolor="#000000", group="2"];
+        }
+        subgraph cluster_math_utils {
+
+            graph [style="filled,rounded", fillcolor="#80808018", label="math_utils"];
+            math_utils__characteristic_function [label="characteristic_function", style="filled", fillcolor="#ccfed8b2", fontcolor="#000000", group="3"];
+            math_utils__gauss_bell [label="gauss_bell", style="filled", fillcolor="#ccfed8b2", fontcolor="#000000", group="3"];
+            math_utils__integer_partition [label="integer_partition", style="filled", fillcolor="#ccfed8b2", fontcolor="#000000", group="3"];
+            math_utils__plateaued_gauss_bell [label="plateaued_gauss_bell", style="filled", fillcolor="#ccfed8b2", fontcolor="#000000", group="3"];
+        }
+        subgraph cluster_model_generator-backup {
 
-                graph [style="filled,rounded", fillcolor="#80808018", label="ImportUser.UserImporter"];
-                ImportUser__UserImporter____init__ [label="__init__", style="filled", fillcolor="#99ffc1b2", fontcolor="#000000", group="2"];
-                ImportUser__UserImporter___user_to_db [label="_user_to_db", style="filled", fillcolor="#99ffc1b2", fontcolor="#000000", group="2"];
-                ImportUser__UserImporter__do_import [label="do_import", style="filled", fillcolor="#99ffc1b2", fontcolor="#000000", group="2"];
-                ImportUser__UserImporter__do_import_all [label="do_import_all", style="filled", fillcolor="#99ffc1b2", fontcolor="#000000", group="2"];
-            }
-            subgraph cluster_ImportUser__main {
+            graph [style="filled,rounded", fillcolor="#80808018", label="model_generator-backup"];
+            model_generator-backup__generate_data [label="generate_data", style="filled", fillcolor="#ccfefeb2", fontcolor="#000000", group="4"];
+            model_generator-backup__get_model [label="get_model", style="filled", fillcolor="#ccfefeb2", fontcolor="#000000", group="4"];
+        }
+        subgraph cluster_users {
 
-                graph [style="filled,rounded", fillcolor="#80808018", label="ImportUser.main"];
-                ImportUser__main__get_loader [label="get_loader", style="filled", fillcolor="#99ffc1b2", fontcolor="#000000", group="2"];
-            }
+            graph [style="filled,rounded", fillcolor="#80808018", label="users"];
+            users__generate_data [label="generate_data", style="filled", fillcolor="#ccd8feb2", fontcolor="#000000", group="5"];
+            users__generate_record [label="generate_record", style="filled", fillcolor="#ccd8feb2", fontcolor="#000000", group="5"];
         }
-        subgraph cluster_RemoveUser {
+        subgraph cluster_weather {
 
-            graph [style="filled,rounded", fillcolor="#80808018", label="RemoveUser"];
-            RemoveUser__main [label="main", style="filled", fillcolor="#cce0feb2", fontcolor="#000000", group="3"];
-            RemoveUser__remove_user [label="remove_user", style="filled", fillcolor="#cce0feb2", fontcolor="#000000", group="3"];
+            graph [style="filled,rounded", fillcolor="#80808018", label="weather"];
+            weather__get_weather_data [label="get_weather_data", style="filled", fillcolor="#e5ccfeb2", fontcolor="#000000", group="6"];
         }
     }
-        AddAdmin -> AddAdmin__main [style="dashed",  color="#838b8b"];
-        AddAdmin -> AddAdmin__add_admin [style="dashed",  color="#838b8b"];
-        ImportUser -> ImportUser__main [style="dashed",  color="#838b8b"];
-        ImportUser -> ImportUser__UserImporter [style="dashed",  color="#838b8b"];
-        ImportUser__UserImporter -> ImportUser__UserImporter__do_import_all [style="dashed",  color="#838b8b"];
-        ImportUser__UserImporter -> ImportUser__UserImporter___user_to_db [style="dashed",  color="#838b8b"];
-        ImportUser__UserImporter -> ImportUser__UserImporter____init__ [style="dashed",  color="#838b8b"];
-        ImportUser__UserImporter -> ImportUser__UserImporter__do_import [style="dashed",  color="#838b8b"];
-        ImportUser__main -> ImportUser__main__get_loader [style="dashed",  color="#838b8b"];
-        RemoveUser -> RemoveUser__main [style="dashed",  color="#838b8b"];
-        RemoveUser -> RemoveUser__remove_user [style="dashed",  color="#838b8b"];
-        AddUser -> AddUser__main [style="dashed",  color="#838b8b"];
-        AddUser -> AddUser__add_user [style="dashed",  color="#838b8b"];
-        AddAdmin -> AddAdmin__main [style="solid",  color="#000000"];
-        AddAdmin__main -> AddAdmin__add_admin [style="solid",  color="#000000"];
-        ImportUser -> ImportUser__main [style="solid",  color="#000000"];
-        ImportUser__UserImporter__do_import -> ImportUser__UserImporter___user_to_db [style="solid",  color="#000000"];
-        ImportUser__UserImporter__do_import_all -> ImportUser__UserImporter__do_import [style="solid",  color="#000000"];
-        ImportUser__UserImporter__do_import_all -> ImportUser__UserImporter____init__ [style="solid",  color="#000000"];
-        ImportUser__main -> ImportUser__UserImporter__do_import [style="solid",  color="#000000"];
-        ImportUser__main -> ImportUser__UserImporter__do_import_all [style="solid",  color="#000000"];
-        ImportUser__main -> ImportUser__UserImporter [style="solid",  color="#000000"];
-        ImportUser__main -> ImportUser__main__get_loader [style="solid",  color="#000000"];
-        ImportUser__main -> ImportUser__UserImporter____init__ [style="solid",  color="#000000"];
-        RemoveUser -> RemoveUser__main [style="solid",  color="#000000"];
-        RemoveUser__main -> RemoveUser__remove_user [style="solid",  color="#000000"];
-        AddUser -> AddUser__main [style="solid",  color="#000000"];
-        AddUser__main -> AddUser__add_user [style="solid",  color="#000000"];
+        address_generator -> address_generator__find_plz [style="dashed",  color="#838b8b"];
+        address_generator -> address_generator__find_coordinates [style="dashed",  color="#838b8b"];
+        address_generator -> address_generator__address_generate [style="dashed",  color="#838b8b"];
+        holiday -> holiday__get_holiday_data [style="dashed",  color="#838b8b"];
+        main -> main__generate_orders [style="dashed",  color="#838b8b"];
+        main -> main__insert_users [style="dashed",  color="#838b8b"];
+        main -> main__get_dish_users [style="dashed",  color="#838b8b"];
+        main -> main__main [style="dashed",  color="#838b8b"];
+        main -> main__clean_up [style="dashed",  color="#838b8b"];
+        main -> main__insert_orders [style="dashed",  color="#838b8b"];
+        main -> main__insert_date_info [style="dashed",  color="#838b8b"];
+        main -> main__get_geo_weights [style="dashed",  color="#838b8b"];
+        main -> main__create_connection [style="dashed",  color="#838b8b"];
+        math_utils -> math_utils__integer_partition [style="dashed",  color="#838b8b"];
+        math_utils -> math_utils__characteristic_function [style="dashed",  color="#838b8b"];
+        math_utils -> math_utils__gauss_bell [style="dashed",  color="#838b8b"];
+        math_utils -> math_utils__plateaued_gauss_bell [style="dashed",  color="#838b8b"];
+        users -> users__generate_data [style="dashed",  color="#838b8b"];
+        users -> users__generate_record [style="dashed",  color="#838b8b"];
+        weather -> weather__get_weather_data [style="dashed",  color="#838b8b"];
+        model_generator-backup -> model_generator-backup__get_model [style="dashed",  color="#838b8b"];
+        model_generator-backup -> model_generator-backup__generate_data [style="dashed",  color="#838b8b"];
+        address_generator -> address_generator__address_generate [style="solid",  color="#000000"];
+        address_generator__address_generate -> address_generator__find_coordinates [style="solid",  color="#000000"];
+        address_generator__address_generate -> address_generator__find_plz [style="solid",  color="#000000"];
+        main -> main__main [style="solid",  color="#000000"];
+        main -> weather [style="solid",  color="#000000"];
+        main -> users [style="solid",  color="#000000"];
+        main -> holiday [style="solid",  color="#000000"];
+        main -> math_utils [style="solid",  color="#000000"];
+        main -> users__generate_data [style="solid",  color="#000000"];
+        main -> holiday__get_holiday_data [style="solid",  color="#000000"];
+        main -> weather__get_weather_data [style="solid",  color="#000000"];
+        main -> main__generate_orders [style="solid",  color="#000000"];
+        main__generate_orders -> holiday__get_holiday_data [style="solid",  color="#000000"];
+        main__clean_up -> main__create_connection [style="solid",  color="#000000"];
+        main__insert_users -> users__generate_data [style="solid",  color="#000000"];
+        main__insert_users -> main__create_connection [style="solid",  color="#000000"];
+        main__insert_date_info -> holiday__get_holiday_data [style="solid",  color="#000000"];
+        main__insert_date_info -> main__create_connection [style="solid",  color="#000000"];
+        main__get_dish_users -> main__generate_orders [style="solid",  color="#000000"];
+        main__get_dish_users -> math_utils__integer_partition [style="solid",  color="#000000"];
+        main__get_dish_users -> users__generate_data [style="solid",  color="#000000"];
+        main__get_dish_users -> main__get_geo_weights [style="solid",  color="#000000"];
+        main__insert_orders -> main__get_dish_users [style="solid",  color="#000000"];
+        main__insert_orders -> main__create_connection [style="solid",  color="#000000"];
+        main__insert_orders -> main__generate_orders [style="solid",  color="#000000"];
+        main__main -> main__insert_users [style="solid",  color="#000000"];
+        main__main -> main__clean_up [style="solid",  color="#000000"];
+        main__main -> main__insert_orders [style="solid",  color="#000000"];
+        main__main -> main__insert_date_info [style="solid",  color="#000000"];
+        math_utils__plateaued_gauss_bell -> math_utils__gauss_bell [style="solid",  color="#000000"];
+        math_utils__integer_partition -> math_utils__integer_partition [style="solid",  color="#000000"];
+        users -> users__generate_data [style="solid",  color="#000000"];
+        users__generate_data -> users__generate_record [style="solid",  color="#000000"];
+        model_generator-backup -> weather [style="solid",  color="#000000"];
+        model_generator-backup -> holiday [style="solid",  color="#000000"];
+        model_generator-backup -> math_utils [style="solid",  color="#000000"];
+        model_generator-backup -> holiday__get_holiday_data [style="solid",  color="#000000"];
+        model_generator-backup -> weather__get_weather_data [style="solid",  color="#000000"];
+        model_generator-backup -> model_generator-backup__generate_data [style="solid",  color="#000000"];
+        model_generator-backup__get_model -> math_utils__gauss_bell [style="solid",  color="#000000"];
+        model_generator-backup__get_model -> math_utils__plateaued_gauss_bell [style="solid",  color="#000000"];
+        model_generator-backup__get_model -> math_utils__characteristic_function [style="solid",  color="#000000"];
+        model_generator-backup__generate_data -> model_generator-backup__get_model [style="solid",  color="#000000"];
     }

BIN
utils/__pycache__/ERRORLIST.cpython-38.pyc


BIN
utils/__pycache__/__init__.cpython-38.pyc


BIN
utils/__pycache__/fileio.cpython-38.pyc


BIN
utils/__pycache__/funclink.cpython-38.pyc


BIN
utils/__pycache__/log.cpython-38.pyc


BIN
utils/__pycache__/source.cpython-38.pyc


+ 6 - 7
utils/funclink.py

@@ -313,12 +313,11 @@ def get_call_flow(source_dir, file_list):
 
 
 if __name__ == '__main__':
-    project = "/Users/liufan/Documents/实验室/隐私扫描项目/SAP检测项目/mini"
-    file_list = walk_files_path(project)
-
-    p = ProjectAnalyzer(project, file_list)
-    for method in p.get_methods():
-        print(method, p.find_all_call_func(method))
-    print(p.get_methods())
+    p = ProjectAnalyzer("D:\\study\\python\\test",
+                        ["D:\\study\\python\\test\\die.py", "D:\\study\\python\\test\\live.py"])
+    print(p.find_all_call_func("live.getup"))
+    print(p.find_direct_callee_func("live.getup"))
+    print(p.find_direct_call_func("live.getup"))
+    print("s")
 
     # graghviz("program.gv", ["D:\\study\\python\\test\\main.py","D:\\study\\python\\test\\live.py"])

+ 31 - 0
utils/tmp.gv

@@ -0,0 +1,31 @@
+digraph G {
+    graph [rankdir=LR, clusterrank="local"];
+    subgraph cluster_G {
+
+        graph [style="filled,rounded", fillcolor="#80808018", label=""];
+        die [label="die", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="0"];
+        live [label="live", style="filled", fillcolor="#ffffffb2", fontcolor="#000000", group="1"];
+        subgraph cluster_die {
+
+            graph [style="filled,rounded", fillcolor="#80808018", label="die"];
+            die__play [label="play", style="filled", fillcolor="#feccccb2", fontcolor="#000000", group="0"];
+        }
+        subgraph cluster_live {
+
+            graph [style="filled,rounded", fillcolor="#80808018", label="live"];
+            live__eat [label="eat", style="filled", fillcolor="#ccfeccb2", fontcolor="#000000", group="1"];
+            live__getup [label="getup", style="filled", fillcolor="#ccfeccb2", fontcolor="#000000", group="1"];
+            live__test [label="test", style="filled", fillcolor="#ccfeccb2", fontcolor="#000000", group="1"];
+        }
+    }
+        die -> die__play [style="dashed",  color="#838b8b"];
+        live -> live__test [style="dashed",  color="#838b8b"];
+        live -> live__eat [style="dashed",  color="#838b8b"];
+        live -> live__getup [style="dashed",  color="#838b8b"];
+        die -> die__play [style="solid",  color="#000000"];
+        die -> live__getup [style="solid",  color="#000000"];
+        die__play -> live__getup [style="solid",  color="#000000"];
+        live__eat -> live__test [style="solid",  color="#000000"];
+        live__getup -> live__eat [style="solid",  color="#000000"];
+        live -> live__getup [style="solid",  color="#000000"];
+    }