[개인 프로젝트(5)] 정적 분석 도구, SonarCloud 적용기

개발로그·2023년 10월 26일
0

개인 프로젝트

목록 보기
5/14
post-thumbnail

📌 What is SonarCloud?


💡
SonarCloud는 코드 품질 이슈를 탐지할 수 있도록 설계된 클라우드 기반 코드 분석 서비스로, 코드의 유지 보수성, 신뢰성, 보안을 보장한다.

  • SonarCloud는 고품질 표준을 충족하는 클린 코드를 제공할 수 있도록 분석 루프를 완성한다.

    SonarLint는 정적 코드 분석을 지원하는 IDE 확장 플러그인으로, 개발자가 코드를 작성하면서 코드 품질 및 보안 문제를 미리 확인하고 수정할 수 있도록 지원한다.

    SonarLint와 SonarCloud를 함께 사용하면 코드를 작성하면서 개발 중에 코드 품질 문제를 미리 확인하고 수정할 수 있으며,
    프로젝트 팀원들이 코드 품질 정보를 공유하고 협력하여 코드 품질 관리와 개선을 효과적으로 수행할 수 있다.

  • 정적 코드 분석에 최첨단 기술을 사용하여 사용자와 팀이 작성하는 코드의 문제점 및 잠재적인 문제점을 찾아낸다.
    ( 정적 코드 분석 : 실제로 소스 코드를 실행하는 것에 의존하지 않고, 코드 분석을 수해하는 것)

  • 기존 워크플로우에 통합되어 코드의 문제를 탐지하여 프로젝트에 대한 지속적인 코드 검사를 수행할 수 있도록 지원한다.







📌 SonarCloud 연동하기


✅ SonarCloud 로그인

SonarCloud 페이지로 이동하여 로그인을 선택한 다음 GitHub을 선택하여 GitHub 계정으로 로그인한다.





✅ 조직 설정

로그인에 성공하면 SonarCloud 시작 화면이 표시된다.



시작 화면에서 Analyze new project 를 클릭하면 다음과 같은 화면이 표시된다. Import an organization from GitHub 버튼을 클릭하여 GitHub 조직을 SonarCloud와 연결한다.



조직을 선택한 후에는 다음 사진과 같이 SonarCloud에 연결한 특정 저장소를 선택한다



다음으로, 플랜을 선택하고 Create Organization 버튼을 클릭하면 SonarCloud 조직이 생성된다.

위에서 선택한 저장소가 public인 경우 무료 플랜을 선택할 수 있으며,
하나 이상의 저장소를 분석하려면 유료 플랜을 선택해야 한다.





✅ 분석 설정

위에서 생성한 SonarCloud 조직으로, GitHub 조직에 포함된 프로젝트의 저장소를 가져온다.

SonarCloud는 GitHub 조직의 저장소 목록을 제공하므로, 가져오려는 프로젝트를 선택하고 Set Up 버튼을 클릭해 시작할 수 있다.





✅ 새로운 코드 정의(NCD) 설정

다음 단계는 프로젝트에 대한 새 코드 정의(NCD)를 설정하는 것이다
NCD는 필수 단계이며, 코드의 어느 부분이 새 코드로 간주되는지 정의한다.

이를 통해 코드의 최신 변경 사항에 주의를 집중할 수 있으며, 이후
프로젝트 관리 탭에서 NCD를 수정할 수 있다.





✅ 분석 방법

GitHub 리포지토리의 경우 자동 분석CI 기반 분석이라는 두 가지 분석 방법을 사용할 수 있다.

이렇게 NCD 설정까지 마치고, Create project 버튼을 클릭하면 SonarCloud는 먼저 가져온 저장소를 확인하여 자동 분석에 적합한지 확인하는데, 자동 분석은 일부 언어에만 사용할 수 있으며, Java는 자동 분석에 적합하지 않다고 한다.



따라서, Java를 사용하는 프로젝트일 경우 다음 사진과 같은 화면이 표시될 것이다.
이 경우, CI 기반 분석 방법을 사용해야 한다.





✅ CI 기반 분석

위 경고창의 Learn More을 클릭하면 다음 사진의 모달창이 표시되는데
Configure analysis in your CI 버튼을 클릭하어 CI 기반 분석을 위한 설정을 구성한다.



위 화면에서 GitHub Actions를 선택하고, 다음 화면에 설명된 설정 방법에 대한 튜토리얼에 따른다.







📌 결론


CI 기반 분석 설정을 마치고 나면, SonarCloud 프로젝트 화면에서 이전과는 달리 Not Computed라는 안내와 함께 추가적인 설정을 하라는 경고 대신 분석화면이 정상적으로 표시되는 것을 확인할 수 있다!


이번 포스팅에서는 코드 품질 개선을 위해 정적 분석 도구인 SonarCloud를 적용해보았다.

SonarCloud는 정적 분석 도구이기 때문에, 작성한 소스 코드중 얼마나 많은 부분이 자동화 된 테스트에서 실질적으로 실행되었는지를 측정할 수 있는 지표인 코드 커버리지에 대한 리포트를 남기기 어렵다.


따라서, Java 코드 커버리지 라이브러리인 JaCoCo를 사용해 프로젝트 빌드 시
실행했던 테스트에 대한 리포트를 생성하고, SonarCloud는 생성된 리포트를 통해 코드 커버리지를 표시한다.


다음 포스팅에서는 테스트 커버리지를 편리하게 확인할 수 있도록 프로젝트에 JaCoCo를 적용해볼 것이다!

0개의 댓글