페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

이 문서는 SonarQube Issues 에 대한 정보를 공유하기 위해 작성되었다. 


목차



이슈 종류(Issue Types)

이슈에는 다음 세가지 유형이 있다.

...

  • 수동으로 Fixed로 Resolve된 Issue(그러나 해결책이 False Positive 가 아님)는 후속 분석에서 여전히 존재하는 것으로 표시된다.


어떤 이슈가 "새로운" 이슈인지 이해(Understanding which Issues are "New")

이슈의 생성 날짜를 확인하기 위해 각 분석 중에 알고리즘을 실행하여 이슈가 새로운 이슈인지 또는 이전에 존재했는지 여부를 확인한다.
이 알고리즘은 이슈가 보고된 라인에 대한 콘텐츠 해시(공백 제외)에 의존한다. 여러 라인 이슈의 경우 첫 번째 라인의 해시가 사용된다.
각 파일에 대해(파일 이름 바꾸기 검색 후) 알고리즘은 이전 분석에서 이슈의 기본 목록을 가져와 이러한 이슈를 새 분석에서 보고한 원시 이슈 목록과 일치시키려고 시도한다.
알고리즘은 가장 강력한 증거를 사용하여 먼저 일치를 시도한 다음 약한 휴리스틱으로 되돌아간다.


  • 이슈가 동일한 규칙에 있고 동일한 행 번호와 동일한 행 해시를 사용하는 경우(그러나 반드시 동일한 메시지가 있는 것은 아님) > MATCH
  • 파일 내에서 블록 이동을 감지한 다음 이슈가 동일한(이동된) 줄과 동일한 규칙에 있는 경우(그러나 반드시 동일한 메시지가 있는 것은 아님) > MATCH
  • 동일한 규칙, 동일한 메시지 및 동일한 행 해시 사용(그러나 반드시 동일한 행일 필요는 없음) > MATCH
  • 동일한 규칙에 따라 동일한 메시지와 동일한 행 번호(그러나 반드시 동일한 행 해시일 필요는 없음) > MATCH
  • 동일한 규칙 및 동일한 행 해시 사용(그러나 동일한 메시지 및 동일한 행이 아님) > MATCH
  • 일치하는 CLOSED 이슈가 있습니까 > MATCH 및 Reopen

일치하지 않는 "기본(base)" 이슈는 수정 된(Fixed) 것으로 Close된다.

일치하지 않는 "원시(raw)" 이슈는 새로운(New) 것이다.


이슈 백데이트 이해(Understanding Issue Backdating)

위에서 설명한 것처럼 이슈가 "새로운" 것으로 결정되면 다음 질문은 이슈를 제공할 날짜다. 예를 들어 오랫동안 코드에 존재했지만 프로필에 새 규칙이 추가되었기 때문에 가장 최근의 분석에서만 발견된다면 어떻게 될까?
이 이슈에 해당 라인의 마지막 변경 날짜를 지정해야 할까, 아니면 처음 제기된 분석 날짜를 지정해야 할까? 즉, 소급되어야 할까?
라인에 대한 마지막 변경 날짜를 사용할 수 있는 경우(SCM 통합 필요) 특정 상황에서 이슈는 소급된다.

  • 프로젝트 또는 분기의 첫 번째 분석 시
  • 프로필에서 규칙이 새 규칙인 경우(활성화된 새 규칙 또는 비활성화되어 활성화된 규칙)
  • SonarQube가 방금 업그레이드되었을 때 (규칙 구현이 더 똑똑해질 수 있기 때문에)
  • 규칙이 외부에 있는 경우

결과적으로, 백데이트가 새로 제기 된 이슈를 새 코드에서 제외시킬 가능성이 있다.


자동 문제 할당(Automatic Issue Assignment)

...