정적 분석과 소스 품질

2021. 5. 2. 14:23공부/오픈소스를 활용한 DevOps 환경 이해

반응형

정적 분석

: 소프트웨어를 실행하지 않고 도구를 이용해서 소스 코드나 바이너리를 분석해서 소프트웨어의 잠재적인 결함을 찾아내는 활동

보통 sw 결함을 처리하는 비용은 결함을 늦게 발견할수록 급격히 증가하는 경향을 가진다

많은 시간과 비용이 드는 코드 리뷰를 진행하기 전에 정적 분석 도구를 활용해 적은 추가 비용으로 미리 결함을 찾아내는 것이 좋다

 

정적 분석이라는 것은 실행 중에 결정될 수 있는 정보를 모르는 상태에서 실행 의미를 예측하는 것이기에 태생적으로 완벽할 수 없다.

정적 분석도구는 소스코드를 분석하여 다음과 같은 작업을 수행

  • 잘 알려진 버그에 대해서 리포팅
  • 코딩 표준에 맞지 않는 코딩 내용을 검출
  • 실행되지 않는 죽은코드 등을 검출
  • 코드의 복잡도를 계산

-> 정의된 규칙 기반으로 개발자가 작성한 소스 코드를 검사하여, 오류 및 위험 요인을 식별하여 알려주는 기능을 제공.

점검 규칙 등 미리 정의된 패턴들은 반드시 프로젝트 상황에 맞게 최적화해서 사용해야 함.

정적 분석 도구

CheckStyle, FindBugs, PMD 등

SonarQube

: 코드의 지속적인 인스펙션을 통해 소스 품질 목표를 달성하게 도와주는 오픈소스 플랫폼

클라우드 지향형 소나 클라우드, IDE 확장 플러그인 형태인 소나 린트도 있어 다양한 품질 문제를 감지, 수정 가능

소나큐브의 특징

지속적인 검사 Continuous Inspection

  • Overall Health : 소스코드의 버그, 취약점, Code Smell, 기술 부채 등의 정보를 확인 가능
  • Focus on the Leak : Water Leak Paradigm을 통해 소스 추가, 변경 시 새로 발견되는 문제들을 제어
  • Enforce Quality Gate : 조직의 품질 게이트를 설정 가능, 코드 출시 여부 판단 가능
  • Visuakuse the history of a project : 그래프 및 시각화를 사용해 프로젝트 품질을 시간에 따른 추적 및 세분화 분석 가능

까다로운 이슈 탐지 Detect Tricky Issues

  • Dig into issues : 이슈 리스트에서 소스 코드 선택 시, 해당 이슈의 상세 정보를 확인 가능
  • Code Smells : 유지보수가 어려운 악취가 나는 코드 (ex. 중복 코드, 테스트 안 된 코드, 너무 복잡한 코드 등)
  • Security Vulnerability : 코드의 취약한 부분을 찾아 추적 가능 (ex. SQL 주입, 하드 코딩된 암호, 잘못된 관리 오류 등)
  • Activate The Rules You Need : 소나큐브 코드 분석기는 대부분의 프로젝트에서 작동하는 기본 품질 프로파일을 가지고 있고, 쉽게 조정할 수 있음

20개 이상의 프로그래밍 언어 지원, DevOps 도구와 통합 가능

  • 20+ Programming Languages : 각 주요 프로그래밍 언어 관련 코드 분석기 및 규칙 제공 (혼용 분석 가능)
  • Build Systems & CI Engines : 다양한 언어에 대한 빌드 통합 지원 및 CI엔진과의 통합도 제공

소스 품질의 중앙 집중화 Centralize Quality

  • Risk-based views : 집계 대시보드를 사용하여 프로젝트 품질에 대한 InSight를 얻고 리스크 평가 가능 (출시 가능성, 신뢰성, 보안, 유지보수성 등)
  • Highlight hot spots : 버블 차트를 통해 주의가 필요한 잠재적 핫스팟을 강조 (테스트 커버리지, 소스 복제 등)

 

반응형