python

[Python] 소스코드 정적 분석, pylint, flake8

seokhyun2 2020. 1. 13. 10:14

소스코드의 정적 분석은 실행하지 않고 소스코드에 대해서 분석을 하는 것을 뜻합니다.

정적 분석의 반대는 동적 분석이며, 동적 분석은 실행 결과 디버깅부터 테스트 소스 커버리지 확인 등등이 다 포함이 됩니다.

 

정적 분석은 툴을 이용하거나 소스코드 리뷰를 하는 방식이 있는데요.

Python 소스 코드를 정적 분석을 해주는 툴은 pylint와 flake8이 많이 사용됩니다.

 

이 두가지의 툴은 둘 다 pip를 활용하여 쉽게 설치할 수 있습니다.

pip install pylint
pip install flake8

 

이렇게 설치하고 사용하는 방법 또한 매우 쉽습니다.

python -m pylint hello_world.py
python -m flake8 hello_world.py

 

pylint를 실행하면 아래와 같이 결과가 뜨고, 10.0점을 채우면 pylint의 기준을 만족하는 것입니다.

docstring이 없다고 나오는 것을 알 수 있습니다. docstring을 추가해주고 한번 더 pylint 실행해해보면 이전에는 몇점이였는데 몇점으로 바뀌었다는 내용까지 친절하게 알려줍니다.

 

flake8은 실행하였을 때, 모든 기준을 만족한다면 아무 출력이 없습니다. 

이 점 참고하셔서 python 소스 코드의 정적 분석을 해주시면 됩니다.

 

그리고 IDE를 활용할 때는, IDE에서 띄워주는 메시지를 따라서 수정해주셔도 됩니다.