pyreverse

About_work·2024년 7월 2일
0

python clean code

목록 보기
11/11
post-thumbnail

1. 기본 설명

  • pyreverse는 소스 코드를 분석하여 패키지와 클래스 다이어그램을 생성하는 도구입니다.
  • 지원하는 출력 형식:
    • .dot/.gv
    • .puml/.plantuml (PlantUML)
    • .mmd/.html (MermaidJS)
  • Graphviz(또는 dot 명령어)가 설치되어 있는 경우, pyreverse는 일시적인 .gv 파일을 생성한 후 Graphviz를 사용하여 최종 이미지를 생성할 수 있습니다.
    • 이 경우 모든 Graphviz 지원 출력 형식을 사용할 수 있습니다.

Pyreverse 실행 방법

pyreverse [옵션] <패키지>
  • <패키지>는 단일 Python 모듈일 수도 있습니다.
  • 사용 가능한 옵션의 전체 목록을 보려면 다음 명령어를 실행하세요:
pyreverse -h

예시 출력

  • Example diagrams generated with the .puml output format are shown below.

클래스 다이어그램

  • pyreverse로 생성된 클래스 다이어그램 예시

특정 클래스에 대한 클래스 다이어그램 생성

  • 프로젝트의 모든 클래스를 포함하는 단일 다이어그램을 생성하는 경우, 크고 복잡한 다이어그램이 될 수 있음
  • 입력 경로를 단일 패키지나 모듈로 제한하면 범위를 좁히는 데 도움이 되지만,
    • -c 옵션을 사용하면 특정 클래스와 그 협력자에 초점을 맞춘 클래스 다이어그램을 생성할 수 있습니다.
  • 예를 들어, 다음 명령어를 실행하면:
pyreverse -ASmy -c pylint.checkers.classes.ClassChecker pylint
  • pylint에 대한 전체 클래스 및 패키지 다이어그램을 생성하는 것 외에도, pylint.checkers.classes.ClassChecker.dot 파일을 추가로 생성합니다.

2. 구체적 실천 과정

  • 특정 Python 프로젝트의 experimental/global_mapper 패키지 안의 모든 모듈에 대한 클래스 다이어그램을 pyreverse와 Graphviz를 사용하여 생성하는 과정은 다음과 같습니다:

1. 필수 도구 설치

  • 먼저, Pyreverse와 Graphviz가 설치되어 있어야 합니다. 아래 명령어로 이 도구들을 설치할 수 있습니다.
pip install pylint graphviz

Graphviz가 설치되어 있지 않다면, 운영 체제에 맞는 Graphviz를 설치해야 합니다. 예를 들어, Ubuntu에서는 다음과 같이 설치할 수 있습니다:

sudo apt-get install graphviz

2. Pyreverse 명령어 실행

  • 이제 pyreverse 명령어를 사용하여, experimental/global_mapper 패키지 안의 모든 모듈에 대한 클래스 다이어그램을 생성할 수 있음
  • 해당 패키지의 최상위 디렉토리에서 다음 명령어를 실행하세요:
pyreverse -o png -p global_mapper experimental/global_mapper
  • -o png 옵션은 출력을 PNG 이미지로 지정합니다.
  • -p global_mapper 옵션은 생성된 다이어그램의 이름
  • experimental/global_mapper분석할 패키지 경로

3. 생성된 다이어그램 확인

  • 명령어를 실행하면 현재 디렉토리에 classes_global_mapper.pngpackages_global_mapper.png 파일이 생성
  • 이 파일들을 열어 클래스 다이어그램과 패키지 다이어그램을 확인할 수 있음

예제

예를 들어, 다음과 같이 프로젝트 디렉토리 구조가 있다고 가정합니다:

my_project/
└── experimental/
    └── global_mapper/
        ├── module1.py
        ├── module2.py
        └── sub_package/
            ├── module3.py
            └── module4.py

이 경우, my_project 디렉토리에서 다음 명령어를 실행하면:

pyreverse -o png -p global_mapper experimental/global_mapper

classes_global_mapper.pngpackages_global_mapper.png 파일이 생성됩니다. 이 파일들은 experimental/global_mapper 패키지 내의 모든 모듈에 대한 클래스와 패키지 구조를 시각화한 다이어그램을 포함합니다.

추가 옵션

필요에 따라 Pyreverse 명령어에 추가 옵션을 사용할 수 있습니다:

  • -A : 모든 클래스 속성과 메서드를 포함합니다.
  • -S : 상속 관계를 포함합니다.
  • -my : 개인 메서드와 속성을 포함합니다.

예를 들어, 모든 클래스 속성과 메서드를 포함한 다이어그램을 생성하려면 다음과 같이 실행할 수 있습니다:

pyreverse -o png -p global_mapper -ASmy experimental/global_mapper

이렇게 하면 더 자세한 다이어그램을 얻을 수 있습니다.

이 과정을 따라 experimental/global_mapper 패키지의 클래스 다이어그램을 생성하여 시각화할 수 있습니다.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글