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



커스텀 룰 생성(Java)

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

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


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


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

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


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

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

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

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

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

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

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

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 : 정규 표현식을 사용하여 여러 줄에 걸친 코딩 스타일 위반 사항을 검사하는 기능을 제공하는 템플릿)

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

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

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

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




참조