我正在編寫一個程序,試圖比較兩種方法。我想爲所有匹配的方法生成控制流圖(CFG),並使用拓撲排序來比較兩個圖。在Python中爲某個方法生成控制流圖的最簡單方法是什麼?
回答
RPython,背後PyPy翻譯工具鏈,提供斂flow graph(在pypy/rpython/flowspace
目錄PyPy項目)爲的一種方式。
這在大多數情況下工作得很好,但不支持生成器。結果將以SSA形式出現,這可能是好的或壞的,取決於你想要的。
鏈接已斷開。請更新? – inspectorG4dget 2013-01-09 00:38:39
也許是這樣的:http://doc.pypy.org/en/latest/objspace.html#the-flow-model和http://doc.pypy.org/en/release-2.0-beta2/translation.html#該註釋通過 – slashdottir 2014-02-19 16:46:38
http://pycallgraph.slowchop.com/看起來像你所需要的。
Python trace模塊也有選項--trackcalls
,它可以是stdlib中的呼叫跟蹤機制的入口點。
該問題詢問[Control Flow Graph](http://en.wikipedia.org/wiki/Control_flow_graph),而不是[Call Graph](http://en.wikipedia.org/wiki/Call_graph)。 – 2013-09-28 08:03:15
已接受。 Call Graph是CFG的子集嗎?維基百科對彼此之間的關係保持沉默。我認爲你可以從過濾的CFG構建CG。 – 2013-09-28 09:03:14
@johntex,關於比較兩種方法的問題。你有什麼關於[使用AST散列](https://groups.google.com/forum/#!topic/python-ideas/GWqOddowZ5c)呢? – 2013-09-28 09:04:20
- 1. 在C++中生成xml最簡單的方法是什麼?
- 2. 在Java中生成折線圖的簡單方法是什麼?
- 3. 什麼是在Python中重現隨機生成級別的最簡單方法?
- 4. 什麼是生成DOC文件的最簡單方法?
- 5. 生成此UI的最簡單方法是什麼?
- 6. 在iPad上生成報告的最快和最簡單的方法是什麼
- 7. 彈出交互式Python控制檯最簡單的方法是什麼?
- 8. 在SQL中生成datetime的最方便的方法是什麼?
- 9. 什麼是最簡單的方法來停止4流的soundpool
- 10. 在Ruby中生成隨機IP地址的最簡單方法是什麼?
- 11. 在C++中生成組合列表的最簡單方法是什麼?
- 12. 從C++調用Java方法的最簡單方法是什麼?
- 13. 什麼是從Javascript調用C#方法的最簡單方法
- 14. 在iPhone上繪製點的最簡單方法是什麼?
- 15. 爲python包製作可選C擴展的最簡單方法是什麼?
- 16. 在Windows窗體中繪製立方體的最簡單方法是什麼?
- 17. 什麼是從文本生成關鍵字的簡單方法?
- 18. 用python執行WHOIS協議最簡單的方法是什麼?
- 19. 使用Python進行SSH的最簡單方法是什麼?
- 20. 用Python安裝OpenVAS omblib最簡單的方法是什麼?
- 21. 限制訪問我的Jsonifier的最簡單方法是什麼?
- 22. 在Python中打印10個字符最簡單的方法是什麼?
- 23. 什麼是在Python中生成API KEY和SECRET的最簡單和最安全的方法
- 24. 在python中生成一個組合的最有效的方法是什麼?
- 25. 限制訪問某些網站頁面的最簡單方法是什麼?
- 26. 在python中派生類方法的正確方法是什麼?
- 27. 將多個集合合併到Java流中的最簡單方法是什麼?
- 28. 複製列的最簡單方法是什麼?
- 29. 什麼是製作自我提取PE的最簡單方法?
- 30. 用OpenGL ES繪製紋理最簡單的方法是什麼?
https://bytecode.readthedocs.io/en/latest/cfg.html – 2016-07-25 17:54:44