본문 바로가기
초보 개발자/QA

[QA] #5. 소나큐브 SonarQube 커스텀 룰셋 생성

by 랩장 2022. 11. 14.

지난 소나 큐브 SonarQube 커스텀 룰셋 적용에 이어 실제로 룰셋을 생성하여 소스를 검수해 보도록 하겠습니다.

1. Quality Profiles복사
2. Rule Activate - Deactivate
3. 정규식 템플릿 생성
4. 정규식 입력 - Activate
5. 프로젝트 Re-Scan 

# Quality Profiles 복사

 Sonar way > Copy 를 통해 프로파일을 복사합니다. 저는 "Custom Ruleset"으로 복사했습니다. 이미 생성하였으므로 제 프로필 상에는 보이는군요.

 

# Rule Activate - Deactivate

 선택이 필요한 부분인데, Sonar way에서 COPY 된 기본 Rule들을 모두 사용할 것이냐 하는 내용입니다. 어차피 Java 기본 Rule 들이기 때문에 그냥 두셔도 상관없고, 불필요한 Rule 들은 Deactivate 하셔도 됩니다. 

 

# 정규식 Template 생성

 Template > Show Templates Only > Regexp Multiline 에서 정규식 템플릿을 생성합니다. Create 를 선택합니다.

 Name을 입력하면 Key 값는 자동으로 Name과 동일하게 입력됩니다. 결함이 발견되었을때의 Description 을 입력하고, Format에 적용하고자 하는 정규식을 입력합니다. 제가 적용한 룰은

SELECT 문에서 * (Asterisk) 사용 지양

입니다.  정규식 표현은 

(select|SELECT)\s+\*\s+(from|FROM)

참고로 정규식 표현에 대한 테스트는 https://regex101.com/ 에서 수행했습니다.

 

정규식 입력 - Activate

 새로운 Ruleset이 생성됩니다. 

 저는 위에서 복사된 모든 Rule 을 DeActivate 해버려서, Quality Profiles 을 확인해보면 지금 생성한 Rules 하나만 확인됩니다. Custom Ruleset을 Default로 바꿔줍니다. 

 Sonar에 탐지될 수 있도록 위 Custom Ruleset에 위배되는 결함 코드를 입력합니다.

 

# 프로젝트 ReScan

 다시 mvn 빌드를 실행하면

 새로 적용된 Rule에 따라 SELECT 문 내의 * (Asterisk) 결함이 탐지됩니다.

반응형

댓글