Page tree

이 문서는  소나큐브(SonarQube) 에서 커스텀 룰(Custom Rule)을 생성하는 가이드를 공유하기 위해 작성되었다.



커스텀 룰 생성

커스텀 룰을 생성하기 위해 플러그인에서 제공하는 규칙 템플릿을 사용한다.

Rules > 왼쪽 메뉴 Template > Show Templates Only에서 원하는 템플릿을 클릭한다.


해당 템플릿 페이지 하단의 "Create" 버튼을 클릭하여 새로운 커스텀 룰에 대한 정보를 입력한다.


다음의 정보를 입력 후 "Create"를 클릭하여 새로운 커스텀 룰을 생성한다.

  • Name(필수) : 규칙 이름
  • Key (필수): 키 (규칙 이름 입력 시 자동 제안)
  • Category : 클린 코드 카테고리
  • Attribute : 클린 코드 속성
  • Software Quality (필수): 소프트웨어 품질
  • Severity (필수): 심각도
  • Status : 규칙 상태
  • Description(필수) : "Why is this an issue?"에 대한 설명
  • 템플릿에 의해 지정된 정보

생성된 커스텀 룰을 클릭하여 세부 정보를 확인할 수 있다.


품질 프로필에서 커스텀 룰 활성화

커스텀 룰을 사용할 품질 프로필(Quality Profile)을 추가한다.

커스텀 룰 세부 정보 페이지 > Quality Profiles > "Activate" 버튼 클릭

"Quality Profile"에서 사용할 품질 프로필 선택.

  • Quality Profile : 생성한 룰을 추가할 품질 프로필 
  • Severity 심각도(deprcated)

[선택] 품질 프로필(Quality Profiles) 생성

새로운 품질 프로필(Quality Profile)에 커스텀 룰을 추가하고 싶은 경우, Quality Profiles > 오른쪽 "Create"버튼을 클릭하여 생성할 수 있다.

다음과 같이 세 가지 방법으로 프로필을 생성할 수 있다.

  • Extend an existing quality profile : 상위 품질 프로필의 활성화된 룰을 상속 받아 하위 품질 프로필을 생성한다.(상위 품질 프로필 변경 시 하위 프로필에 영향을 준다.)
  • Copy an existing quality profile : 기존에 생성된 프로필을 복사하여 새로운 품질 프로필 복사본으로 생성한다. (두 프로필은 변경 시 서로에 영향을 주지 않는다.)
  • Create a blank quality profile : 활성화된 규칙이 없는 새로운 품질 프로필을 생성한다. 

SonarQube는 내장된 기본 품질 프로필인 "Sonar way"를 상속 받아서 새로운 프로필을 생성하는 것을 권장한다. 

이 경우, 자동으로 다음과 같은 이점을 얻을 수 있다. 

  • 새로 구현된 규칙
  • 규칙의 기본 구성 변경 사항


[선택] sonar-checkstyle 플러그인 설치

Checkstyle은 코딩 표준을 준수하는 Java 코드를 작성하는 데 도움이 되는 개발 도구로서 SonarQube에서 코드 포맷이나 레이아웃 등에 대한 다양한 템플릿을 제공한다.

  • 자동 설치(커뮤니티 버전)

          1. Administration > Marketplace에서 "checkstyle" 검색 후 install 버튼 클릭

         


         2. 서버 재시작
         


  • 수동 설치(상용 버전)

           1. Releases · checkstyle/checkstyle (github.com)에서 SonarQube 버전과 호환되는 버전의 jar파일을 다운로드 받는다.
           2. <SONARQUBE_HOME>/extensions/plugins경로에 다운로드 받은 파일을 넣고 SonarQube 서버를 재시작한다.

예시 - 정규식 표현으로 검사하는 커스텀 룰 생성

사전 준비 사항

1. 커스텀 룰 생성을 참고하여 Regexp Multiline Template 템플릿에서 커스텀 룰을 추가한다.

(*Regexp Multiline Template : 정규 표현식을 사용하여 여러 줄에 걸친 코딩 스타일 위반 사항을 검사하는 기능을 제공하는 템플릿)

 정보 입력 시 템플릿에 의해 지정된 정보 부분을 다음과 같이 입력한다.

  • FileExtensions : 처리할 파일의 확장자를 지정
  • IgnoreCase : 검색 시 대소문자를 무시할지 여부를 설정
  • Format : 정규 표현식의 형식을 지정 (예: \b[A-Z]{1,2}\d{7,8}\b)
  • MatchAcrossLines : 여러 줄에 걸쳐 표현식을 일치시킬지 여부를 설
  • Maximum : 각 파일에서 필요한 최대 일치 횟수를 지정
  • Messege : 위반 사항을 알리기 위해 사용되는 메시지를 지정, 이 값이 비어 있으면 기본 메시지가 사용됨(예: Hard-coded passport number informations are security-sensitive)
  • Minimum : 각 파일에서 필요한 최소 일치 횟수를 지정

2. 사용할 품질 프로필에 생성한 커스텀 룰 활성화

3. 1,2단계 설정 완료 후, 소스 코드를 분석한다. 

4. 하드 코딩된 여권 번호가 있을 경우, 생성한 룰에 따라 다음과 같은 이슈가 나타난다.




참조


  • No labels