이슈 라이프사이클
SQ Official Doc Link: https://docs.sonarqube.org/display/SONAR/Issue+Lifecycle
Table of Contents
이슈는 자동으로 발견합니다.
상태
이슈가 생성된 후에는 다음과 같은 다섯 단계의 라이프사이클 중 하나의 상태를 가집니다:
- Open - SonarQube가 새로운 이슈라고 결정한 상태
- Confirmed - 해당 이슈가 유효한 이슈라고 사용자가 직접 설정한 상태
- Resolved - 다음 분석시 해당 이슈가 완료될 것이라고 사용자가 직접 설정한 상태
- Reopened - Resolved 상태의 이슈가 실제로 수정되지 않았을 경우, SonarQube가 자동으로 설정한 상태
- Closed - SonarQube가 자동으로 생성한 이슈 중, 분석시 해당 이슈가 완료되었다고 Sonarqube가 자동으로 설정한 상태
해결 상태
Closed 상태의 이슈는 다음 두 가지 중 하나의 해결 상태를 가집니다:
- Fixed - 분석 결과 해당 이슈가 수정되어 SonarQube가 자동으로 설정한 상태
- Removed - 분석 결과 해당 이슈를 발생시킨 코딩 규칙 혹은 소스 코드가 존재하지 않은 경우 SonarQube가 자동으로 설정한 상태. 코딩 규칙이 코딩 프로파일에서 제외되거나 관련된 프로파일이 삭제된 경우 해당 코딩 규칙은 존재하지 않는 것으로 판단합니다. 파일이름 변경, 파일 위치 이동, 파일 삭제시 해당 파일은 존재하지 않는 것으로 판단합니다.
Resolved 해결 상태의 이슈는 다음 두 가지 중 하나의 해결 상태를 가집니다:
- False Positive - 오류 오검출. 사용자가 직접 설정
- Won't Fix - 오류이나 수정하지 않음. 사용자가 직접 설정
이슈 워크플로우
이슈는 다음의 경우 자동적으로 Closed 상태로 변경됩니다:
- 이슈(어떤 상태에서든)가 정상적으로 수정된 경우 => Resolution: Fixed
- 코딩 규칙 비활성화 혹은 사용 불가(즉, 플러그인 삭제)로 이슈 자체가 사라진 경우 => Resolution: Removed
이슈는 다음의 경우 자동적으로 Reopened 상태로 변경됩니다:
- Resolved(해결 상태가 False positive로 설정되지 않은) 해결 상태의 이슈가 다음 분석 시에도 존재하는 경우
어떤 이슈를 "New"로 판단하는가
분석 수행 과정에서 이슈의 생성 일자를 결정하는 과정에서, 다음의 알고리즘을 사용해 해당 이슈의 신규(new) 혹은 기존(exsted) 여부를 판단합니다. 각 이슈는 네 가지 기준(line, line number, line content 혹은 "hash" 및 message)에 대해 세 가지 기준이 다음의 조건을 만족하는 경우 동이한 이슈로 결정됩니다:
- 동일 코딩 규칙에 대해, 코드 라인(line number)과 해시(hash)가 동일함(동일한 메시지(message)일 필요는 없음) > 일치
- 동일 코딩 규칙에 대해, 메시지(message)와 해시(has)가 동일함(동일한 코드 라인(line number)일 필요는 없음) > 일치
- 동일 코딩 규칙에 대해, 메시지(message)와 코드 라인(line number)가 동일함(동일한 해시(hash)일 필요는 없음) > 일치
상기 이외의 모든 경우, 해당 이슈는 신규 이슈로 결정됩니다.
Closed 상태의 이슈 삭제하기
기본적으로 Closed 상태의 이슈 데이터는 30일간 유지합니다. 관련된 세부적인 내용은 Housekeeping 문서를 참조합니다.
© 2017-2018 Moses Kim.
별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.
::: SonarQube 관련 문의 : 이메일 :::