코드의 품질을 높이기 위해 코드를 분석하여 문제가 있는 부분을 찾는 도구이다.
이렇게 Application을 실행시키지 않고 순수한 코드만을 분석해 코드 품질을 높이는 도구를 "정적 분석 도구"라고 하며 이 중 대표적인 도구가 Sonarqube이다.
정적 분석 도구가 필요한 이유는 Code가 Build 및 Test 하는 과정에 문제가 없더라도 코드 상에 취약점이나 문제점이 존재할 수 있다. 이런 코드 상에서만 발견할 수 있는 문제점을 진단하기 위해 정적 분석 및 동적 분석을 항상 동시에 수행해야 하는 것이다.
Sonarqube의 대표적 기능은 아래와 같다.
Sonarqube는 IDE, 빌드도구나 CI 도구와 통합하여 사용할 수 있으며 Java, C#, Python, Kotlin 등 많은 프로그래밍 언어 분석을 지원하고 있다.
개인적으로 정적 분석 도구는 개념적 설명보다는 실습을 통해 느끼는 게 더 좋다고 생각하기에 다른 Section과는 다르게 이론적 설명보다는 바로 실습을 진행하도록 하겠다.
Docker Desktop에 SonarQube를 위한 Server를 생성해보자.
docker pull sonarqube
docker run --rm -p 9000:9000 --name sonarqube sonarqube
--rm 옵션은 Container를 일회성으로 실행할 때 활용한다.
Container가 종료될 때 컨테이너와 관련된 리소스(파일 시스템, Volume 등)까지 완벽하게 제거해준다.
--rm은 굳이 활용하지 않아도 된다.
실제로 필자는 "docker run -d ~"를 통해 이전에 생성했던 Container와 유사한 방식으로 SonarQube 서버를 생성할 것이다.
우리는 위 명령어를 통해 sonarqube Container를 9000 Port를 통해 접속할 수 있음을 알 수 있다.
초기 ID는 admin, 초기 Password도 admin이다.
로그인을 수행한 이후 Password를 원하는 값으로 변경해주자.
접속 성공!