인프런 커뮤니티 질문&답변

박재범님의 프로필 이미지
박재범

작성한 질문수

DevOps의 정석 - DevOps의 시작부터 끝까지 모두 짚어 드립니다!

지속적인 빌드 활동

java 기반의 정적 코드 분석 파트를 보면서 궁금한 점 발생

해결된 질문

작성

·

203

2

 안녕하세요. 강의를 수강하면서 생각이 들었던게 있습니다. python기반의 정적 코드 분석 관련해서 궁금증이 생겼습니다. 제가 알기론 python 기반으로 정적 분석 관련 라이브러리가 존재한다고는 알고있긴한데, visual studio 환경에서 보여주신 내용과 비슷한게 있을까요? 없다면 할 수 있는 방법이 있는지 또한 궁금합니다.

답변 1

1

JeongSuk Lee님의 프로필 이미지
JeongSuk Lee
지식공유자

안녕하세요,

 

Python 또한 정적 분석 툴이 존재합니다. 대표적으로 고려해볼 수 있는 툴은 pylint와 sonarlint를 고려해볼 수 있습니다. 두 툴을 선택할 때 수강자님께서 업무를 하시는 환경에 맞춰서 선택을 하시면는게 좋은데요.

먼저 pylint의 경우에는, SCM(GitHub 등) 내에서 정적 분석 Rule set을 관리하고 싶으신 경우에 추천을 드립니다. pylintrc 파일을 통해서 해당 Repository 내의 Source의 Rule set을 조직 구성원들과 공유하여 사용하고 싶으실 때 유용합니다. 다만, pylint의 경우에는 CI 연동 시 정적 분석 결과를 보관/관리를 해주는 방법을 제공하지 않기 때문에 이에 대한 방안을 수립하여야 합니다. 조직 내 IT 감사 또는 거버넌스 가이드라인 상에서 이러한 분석 결과에 책임 추적성(Accountability)을 확보해야 한다는 규정이 있는 경우에 이에 해당됩니다.

 

sonarlint의 경우에는 정적 분석 툴을 조직 내에서 통일하여 사용하고 싶을 때에 추천됩니다. Java의 경우에도 이것을 사용하여 예제로 보여드렸는데, 물론 VS Code에서도 사용이 가능하고 Python 또한 지원합니다. sonarlint의 경우에는 SonarQube와 연결하여 정적 분석 결과를 관리할 수 있는 방법이 있기 때문에 pylint에서 말씀드렸던 책임 추적성을 확보해야하는 경우에 유용합니다. 다만, sonarlint 또한 단점이 있는데, Rule set 공유를 위해서응 SonarQube를 필요로 하며, 이 경우에는 별도로 서버 구축 비용이 발생합니다. 이와 함께, SonarQube 자체가 무료/유료 버젼을 제공을 하지만, Branch 관리 전략을 구현하는 부분은 유료 버젼에서만 지원을 하기 때문에 이에 대한 고려도 하여야 합니다.

 

이에 따라, 조직이 현재 DevOps transformation을 하고 있는 중이라면 pylint를 VS Code 개발 환경에 통합을 하고, CI에서는 pylint 수행 후 결과를 CI System Artifact 형태로 저정하거나 Cloud Storage (S3, GCS 등)에서 보존 기간을 설정하여 관리하는 것을 추천 드립니다. 만약 조직이 DevOps practice를 확장해 나가는 중이라고 하면 SonarQube를 이용한 보안/거버넌스 정책 관리를 하고 이를 SonarLint와 VS Code를 이용하여 개발 환경에 통합을 함으로써 중앙 집중 관리를 하시는 것을 추천 드립니다.

 

VS Code 내 pylint와 sonarlint extension을 설치할 수 있는 URL은 아래와 같으니 참고 부탁 드립니다.

Pylint: https://marketplace.visualstudio.com/items?itemName=ms-python.pylint

SonarLint: https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode#:~:text=SonarLint%20for%20Visual%20Studio%20Code,as%20you%20create%20your%20code.

 

감사합니다.

박재범님의 프로필 이미지
박재범

작성한 질문수

질문하기