본문 바로가기
개발/파이썬

Radon, Python code metrics 평가 도구

by pandatta 2022. 9. 13.

https://radon.readthedocs.io/en/latest/

파이썬 코드를 짜고 프로그램을 만들다 보면, 과연 내가 프로그램을 잘 만들었나, 고민이 되는 순간이 많습니다. PEP8에 따라서 열심히 만들었다지만, 그래도 이쁜 코드랑 튼튼한 코드는 다르니까 정량적으로 내 프로그램의 잘 만든 정도를 평가하고 싶어집니다. 보통 시간복잡도 등을 이용해서 열심히 코드 하나하나 분석을 해서 코드 복잡도를 평가하는데, 이럴 때 사용하는 평가 방법을 code metrics 라고 합니다.

암튼 이 code metrics를 python code 대상으로 평가해주는 package가 바로 제일 위 링크의 Radon. Radon에서는 아래 4가지 방법으로 코드를 평가하는데요,

  1. Raw Metics: LOC, 주석 등 고전적인 코드 평가수치
  2. Cyclomatic Complexity: 반복/조건문의 깊이를 기반으로 한 프로그램 복잡도
  3. Halstead Metrics: 연산자 개수를 기반으로 한 프로그램 복잡도
  4. Maintainability Index: 위 세 조건을 통합

자세한 내용은 Radon 페이지를 참조하면 잘 나와있지만, 아무튼 A, B, C 이런 순서로 코드를 평가해서 A에 가까울수록 내 코드가 탄탄하고 알아보기 쉽게, 복잡하지 않게 짜여져있다는 것이 핵심입니다.

아래는 간단한 사용법. 사용법을 잘 설명해둔 블로그가 없는데, 아마 별 사용법이 복잡한게 없어서 그런 것 같습니다.

# 설치
$ pip install radon

# Raw metrics 측정, summary 출력,  init 무시, data folder 무시.
$ radon raw -s -e __init__.py -i data [path]

# Cyclomatic Complexity 측정, 평균값도 계산 (-s), init 무시 (-e), data folder 무시 (-i).
$ radon cc -a -e __init__.py -i data [path]

# Halstead Metrics 측정 
$ radon hal  -e __init__.py -i data [path]

# Maintainability 측정
$ radon mi  -e __init__.py -i data [path]

'개발 > 파이썬' 카테고리의 다른 글

일급객체란?  (0) 2022.09.13
NumPy & Pandas 자주 쓰는 문법 요약  (0) 2022.09.13
Python logging & logger 모듈  (0) 2022.09.13
Pyreverse, Python 다이어그램 diagram 패키지  (0) 2022.09.13

댓글