summaryrefslogtreecommitdiffstats
path: root/reflect.py
diff options
context:
space:
mode:
Diffstat (limited to 'reflect.py')
-rw-r--r--reflect.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/reflect.py b/reflect.py
index 90fa5b6..0ce886f 100644
--- a/reflect.py
+++ b/reflect.py
@@ -76,7 +76,8 @@ class Reflect:
i[0]: (
i[1],
{"comments": inspect.getcomments(i[1]), "doc": inspect.getdoc(i[1])},
- str(inspect.signature(i[1]))
+ str(inspect.signature(i[1])),
+ inspect.getsource(i[1])
)
for i in inspect.getmembers(
self.get_classes(module_name)[class_name][0],
@@ -89,7 +90,8 @@ class Reflect:
i[0]: (
i[1],
{"comments": inspect.getcomments(i[1]), "doc": inspect.getdoc(i[1])},
- str(inspect.signature(i[1]))
+ str(inspect.signature(i[1])),
+ inspect.getsource(i[1])
)
for i in inspect.getmembers(self.imported_modules[module_name])
if inspect.isfunction(i[1])
@@ -141,6 +143,10 @@ class Reflect:
# return inspect.getclasstree(classes)
return tree
+ def get_source_code(self, file_, line_start, line_end):
+ with open(file=file_, mode="r") as f:
+ return f.readlines()[line_start:line_end]
+
def gen_reflection_report(client_code_path, assessment_struct):
reflection = Reflect(client_code_path)
present_module_names = [i.name for i in reflection.client_modules]
@@ -195,8 +201,10 @@ def gen_reflection_report(client_code_path, assessment_struct):
out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["present"] = False
continue
- out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["arguments"] = present_methods[method_name][-1]
- out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["documentation"] = present_methods[method_name][-2]
+ out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["arguments"] = present_methods[method_name][-2]
+ out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["minimum_arguments"] = present_methods[method_name][-2].count(",") + 1
+ out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["documentation"] = present_methods[method_name][-3]
+ out["files"][i][required_file]["classes"][j][class_name]["methods"][k][required_method]["source_code"] = present_methods[method_name][-1]
if "functions" in required_files_features.keys():
present_functions = reflection.get_functions(module_name)
@@ -210,8 +218,10 @@ def gen_reflection_report(client_code_path, assessment_struct):
out["files"][i][required_file]["functions"][j][required_function]["present"] = False
continue
- out["files"][i][required_file]["functions"][j][required_function]["documentation"] = present_functions[function_name][-2]
- out["files"][i][required_file]["functions"][j][required_function]["arguments"] = present_functions[function_name][-1]
+ out["files"][i][required_file]["functions"][j][required_function]["documentation"] = present_functions[function_name][-3]
+ out["files"][i][required_file]["functions"][j][required_function]["arguments"] = present_functions[function_name][-2]
+ out["files"][i][required_file]["functions"][j][required_function]["minimum_arguments"] = present_functions[function_name][-2].count(",") + 1
+ out["files"][i][required_file]["functions"][j][required_function]["source_code"] = present_functions[function_name][-2]
out["class_tree"] = reflection.get_class_tree()
return out
@@ -221,5 +231,7 @@ if __name__ == "__main__":
reflect = Reflect(user_code_path)
reflect.import_module("pjtool")
- for c, v in reflect.get_classes(("pjtool")).items():
- print(c, v)
+ # for c, v in reflect.get_classes(("pjtool")).items():
+ # print(c, v)
+ for k, v in reflect.get_functions("pjtool").items():
+ print(k, v) \ No newline at end of file