2014-12-03 5 views
0

나는 많은 파이썬 파일을 상속 받았고, 파이썬 파일 내에서 정의되고 호출 된 모든 함수에 대한 정보를 수집하여 파이썬 파일의 내용을 이해할 수있는 방법을 모색했다. 파일. 파일의여러 파이썬 파일에서 함수 호출 트리 생성

예 (MainModule.py) :이 파일을 조사하여

Import module1 
Import module2 
Import module3 
  
... 
Def func1(): 
... 
Def func2(): 
... 
  
result1 = Module1.funcX(args) 
result2 = Module2.funcY(args) 
... 

, 내가 IDE 함수 (이 파일에 정의 된 것을보고 할이 나는 윙 IDE와 함께 할 수있는 일입니다)뿐만 아니라 같은 폴더 나 프로젝트 내에있는 .py 파일 내에서 정의 된 기능이 호출되었습니다. Obviosly, 나는 파이썬 시스템 함수 (예 : print() 등)의 사용을보고하고 싶지 않지만 내 프로젝트 내의 파일 내에 정의 된 함수 (폴더 일 수 있음)는 실제로 중요하지 않습니다.

그래서이 예제에서는 다음과 같이하고 싶습니다. MainFunction.py 함수 funcX 및 funcY는 Module1.py 파일과 Module2.py 파일에서 각각으로 호출되었습니다. 이 정보를 사용하여 코드를 리팩터링하는 동안 사용할 Visio (또는 다른 소프트웨어)에서 참조 스키마를 작성합니다.

WingIDE 내에서 Find points of use와 Goto 정의를 사용하고 있지만 20 개 파일을 읽고 함수를 찾는 것은 너무 번거롭다는 것을 알고 있습니다.

저는 PyScripter와 WingIDE Pro를 사용했지만,이 IDE에는이 기능이 부족한 것으로 보입니다. 이런 종류의 작업을 지원하는 IDE는 무엇입니까? 그렇지 않다면 이것을 달성하는 다른 직접적인 방법이 있습니까?

답변

2

정적 분석을 통해 동적 언어의 콜 그래프를 생성하는 것은 사실상 불가능합니다 (간단한 예제에서는 근사가 가능할지라도). 따라서 일반적으로 실행시 pycallgraph (https://pypi.python.org/pypi/pycallgraph)와 같은 것을 사용하여 동적으로 수행됩니다.

따라서 Python 코드의 단위 테스트 범위가 가장 중요합니다. 단위 테스트가 부족한 경우 단위 테스트 적용 범위를 개선하는 것이 리팩토링에 앞서 매우 중요한 단계입니다. Build a Call graph in python including modules and functions?

+0

감사합니다, @Hugo :

다음은이에 접촉 이전에 StackOverflow 질문입니다. 나는 graphviz로 pycallgraph 작업을 할 수 없으므로 IDE와 코드 검색 유틸리티를 사용하여 반 수동으로해야 할 것입니다. –