91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.61MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-11-06
  • 語言: Python
  • 標簽: Python??控制流圖??

資源簡介

Python開發的生成Python代碼控制流圖的小工具。 原理:將源代碼解析為AST,遍歷AST生成結構化字符串,最后解析結構化字符串得到控制流圖。 使用:python CFG.py src [-o dir] 工具掃描src文件所有函數并在dir目錄下生成控制流圖,缺省為當前工作目錄。

資源截圖

代碼片段和文件信息

import?codecs
import?pydot
import?ast
import?astunparse
import?os
import?argparse
import?time

class?FunctionVisitor(ast.NodeVisitor):
????def?__init__(self):
????????self.number?=?0?#?節點編號
????????self.s?=?‘‘?#?簡化ast串
????????self.n2title?=?{}?#?編號?->?標題

????def?print(self?v):
????????self.s?+=?str(v)

????def?generic_visit(self?node):
????????ast.NodeVisitor.generic_visit(self?node)

????def?visit_FunctionDef(self?node):
????????self.print(‘(‘)
????????siz?=?len(node.body)
????????for?i?in?range(siz):
????????????fun_name?=?‘visit_‘?+?type(node.body[i]).__name__
????????????if?hasattr(self?fun_name):
????????????????getattr(self?fun_name)(node.body[i])
????????????else:
????????????????self.number?+=?1
????????????????self.print(self.number)
????????????????self.n2title[str(self.number)]?=?astunparse.unparse(node.body[i]).lstrip().rstrip()
????????????if?i?!=?siz?-?1:
????????????????self.print(‘‘)
????????self.print(‘)‘)

????#?忽略掉import等語句
????def?visit_Import(self?node):
????????ast.NodeVisitor.generic_visit(self?node)

????def?visit_ImportFrom(self?node):
????????ast.NodeVisitor.generic_visit(self?node)

????def?visit_alias(self?node):
????????ast.NodeVisitor.generic_visit(self?node)

????#?if語句
????def?visit_If(self?node):
????????#?條件
????????self.print(‘i(‘)
????????self.number?+=?1
????????self.print(self.number)
????????self.n2title[str(self.number)]?=?astunparse.unparse(node.test).lstrip().rstrip()
????????#?true分支
????????self.print(‘(‘)
????????siz?=?len(node.body)
????????for?i?in?range(siz):
????????????fun_name?=?‘visit_‘?+?type(node.body[i]).__name__
????????????if?hasattr(self?fun_name):
????????????????getattr(self?fun_name)(node.body[i])
????????????else:
????????????????self.number?+=?1
????????????????self.print(self.number)
????????????????self.n2title[str(self.number)]?=?astunparse.unparse(node.body[i]).lstrip().rstrip()
????????????if?i?!=?siz?-?1:
????????????????self.print(‘‘)
????????#?else分支
????????self.print(‘)(‘)
????????siz?=?len(node.orelse)
????????for?i?in?range(siz):
????????????fun_name?=?‘visit_‘?+?type(node.orelse[i]).__name__
????????????if?hasattr(self?fun_name):
????????????????getattr(self?fun_name)(node.orelse[i])
????????????else:
????????????????self.number?+=?1
????????????????self.print(self.number)
????????????????self.n2title[str(self.number)]?=?astunparse.unparse(node.orelse[i]).lstrip().rstrip()
????????????if?i?!=?siz?-?1:
????????????????self.print(‘‘)
????????self.print(‘))‘)

????#?for?語句
????def?visit_For(self?node):
????????#?迭代器
????????self.print(‘x(‘)
????????self.number?+=?1
????????self.print(self.number)
????????a?=?astunparse.unparse(node.target).lstrip().rstrip()
????????b?=?astunparse.unparse(node.iter).lstrip().rstrip()
????????self.n2title[str(self.number)]?=?a?+?‘?in?‘?+?b
????????#?循環體
????????self.print(‘(‘)
????????siz?=?len(node.body)
????????for?i?in?range

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-14?16:35??CFG\
?????目錄???????????0??2018-01-14?16:32??CFG\CFG\
?????文件??????379843??2017-12-19?21:39??CFG\CFG\CFG.build_CFG.png
?????文件???????76773??2017-12-19?21:39??CFG\CFG\CFG.build_CFG_from_ast.png
?????文件???????96944??2017-12-19?21:39??CFG\CFG\CFG.build_For.png
?????文件???????85404??2017-12-19?21:39??CFG\CFG\CFG.build_If.png
?????文件???????44385??2017-12-19?21:39??CFG\CFG\CFG.check_unreachable.png
?????文件???????27544??2017-12-19?21:39??CFG\CFG\CFG.match.png
?????文件???????69934??2017-12-19?21:39??CFG\CFG\CFG.new_edge.png
?????文件??????140796??2017-12-19?21:39??CFG\CFG\CFG.new_node.png
?????文件???????16185??2017-12-19?21:39??CFG\CFG\CFG.__init__.png
?????文件????????8134??2017-12-19?21:39??CFG\CFG\CFGGenerator.generic_visit.png
?????文件???????11314??2017-12-19?21:39??CFG\CFG\CFGGenerator.visit_ClassDef.png
?????文件???????41668??2017-12-19?21:39??CFG\CFG\CFGGenerator.visit_FunctionDef.png
?????文件????????9971??2017-12-19?21:39??CFG\CFG\CFGGenerator.__init__.png
?????文件????????8134??2017-12-19?21:39??CFG\CFG\FunctionVisitor.generic_visit.png
?????文件????????5723??2017-12-19?21:39??CFG\CFG\FunctionVisitor.print.png
?????文件????????8134??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_alias.png
?????文件???????11207??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_Break.png
?????文件???????11322??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_Continue.png
?????文件??????113471??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_For.png
?????文件???????84594??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_FunctionDef.png
?????文件??????202185??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_If.png
?????文件????????8134??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_Import.png
?????文件????????8134??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_ImportFrom.png
?????文件???????42024??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_Return.png
?????文件??????105846??2017-12-19?21:39??CFG\CFG\FunctionVisitor.visit_While.png
?????文件????????9737??2017-12-19?21:39??CFG\CFG\FunctionVisitor.__init__.png
?????文件???????13915??2017-12-19?21:38??CFG\CFG.py
?????文件???????92976??2017-12-16?19:23??CFG\fun1.png
?????文件??????111168??2017-12-16?19:23??CFG\fun2.png
............此處省略3個文件信息

評論

共有 條評論