정적 분석 도구 Sonarqube 란?
Intro
코드 품질에 대해 이야기를 하다가 정적 분석 도구에 대해 잘 모르고 사용하고 있어서 오늘은 그 개념과 실습을 해보았다. 실습은 여기 를 참고하여 해보았다!
Sonarqube
지속적으로 코드 품질을 높이고, 유지보수를 할 때 도움을 주는 애플리케이션이다. 코드 컨벤션부터 잠재적인 위험 사항까지 체크를 해주어 코딩 습관과 품질 향상에 도움을 준다.
Intellij에는 소나 큐브 플러그인이 있는데, SonarLint만 설치하더라도 소나큐브 서버 없이 정적 분석이 가능하다. 소나큐브 서버를 연동해 놓으면 서버의 Code analyzer가 업데이트 되었을 때 최신 Ruleset이 로컬에도 동기화되어 서버와 연동해 놓는 것이 좋다.
특징
- 다양한 언어에 대한 코드 분석 지원
- Admin을 통해 확인해볼 수 있고, 지속적 관리 가능
- Jenkins 같은 CI엔진과 통합되어 분석이 가능
분석 기준
SonarLint 탭을 활성화시킨 후, 파일을 클릭하면 분석이 진행된다. 그리고, 결과가 표시된다. 그 기준은 아래와 같다.
코드 악취(Maintainability)
변경 가능성, 모듈성, 이해가능성, 테스트 용의성, 재사용성 등 심각한 이슈는 아니지만 사소한 이슈들.버그
잠재적인 버그 혹은 실행시간에 예상되는 동작을 하지 않는 코드취약점
해커들에게 잠재적 약점이 될 수 있는 보안상 이슈. SQL Injection, Cross site scripting같은 보안 취약성을 찾아낸다.중복
코드 품질 저해시키는 가장 큰 요인 중 하나단위 테스트
단위 테스트 커버리지를 통해 테스트의 성공/실패 정보를 제공한다.복잡도
순환 복잡도 측정, 코드 논리적 흐름 상 존재하는 인지 복잡도 측정사이즈
코드 라인 전체 라인 수 구문, 함수 클래스 파일, 디렉터리 주석 수, 코멘트 비율 등 소스코드 사이즈와 관련된 다양한 지표 제공.
다음은 코드 커버리지에 대해 학습하고, 둘을 함께 사용해보아야겠다.