# 리포지토리의 코드 품질 점수 올리기

가장 큰 위험을 초래하는 결과의 우선 순위를 지정하고 해결하며, 리포지토리의 코드 품질 점수를 높이고, 새 부채가 누적되지 않도록 방지합니다.

## Introduction

이 자습서에서는 기본 분기에 대한 결과의 백로그 Code Quality 를 살펴보고, 위험에 따라 우선 순위를 지정하고, 가장 큰 영향을 미치는 결과를 해결하고, 결과를 이해 관계자에게 전달합니다. 다음 내용을 배웁니다.

* 대시보드를 읽고 점수의 의미를 이해하는 방법입니다.
* 해결 조치의 우선순위를 정하고 자동 수정을 적용할지, Copilot 클라우드 에이전트에 위임할지 또는 탐지 결과를 무시할지 결정하는 방법.
* 수정 작업의 영향을 전달하는 방법입니다.
* 백로그가 다시 증가하지 않도록 하기 위해 수행할 수 있는 추가 조치입니다.

이것은 단계별 안내이므로 속도보다 이해를 우선합니다. 자동 수정 생성 또는 탐지 결과 무시에 대한 기본 단계는 관련 가이드([리포지토리 백로그에서 코드 품질 결과 수정](/ko/code-security/how-tos/maintain-quality-code/fix-backlog-findings))를 참조하세요.

### 시작하기 전에

* Code Quality 은 소유하거나 유지 관리하는 리포지토리에서 사용하도록 설정됩니다.
  [GitHub Code Quality 사용](/ko/code-security/how-tos/maintain-quality-code/enable-code-quality)을(를) 참조하세요.
* 최근에 Code Quality를 활성화한 경우 기본 분기에 대한 초기 CodeQL 검사가 완료될 때까지 몇 분 정도 기다리세요.

이 자습서 전체에서는 실행 예제를 사용합니다. 대시보드에 현재 코드 품질에 대한 "**안정성: 불량**" 및 "**유지 관리 가능성: 공정**"의 점수가 표시되는 리포지토리가 있습니다.

## 1단계: 현재 점수 평가

1. 리포지토리의 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security and quality** 탭으로 이동합니다.
2. **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code-review" aria-label="code review" role="img"><path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path></svg> 코드 품질** 을(를) 확장하려면 클릭하고, 그런 다음 **표준 결과** 을(를) 클릭합니다.

여기서 **는 안정성** 및 **유지 관리에** 대한 점수를 볼 수 있습니다.

![표준 결과에 대한 "Code Quality" 보기에서 코드 품질 점수의 스크린샷입니다.](/assets/images/help/code-quality/all-findings-overview-repo.png)

이 점수는 기본 브랜치에서 확인된 결과를 바탕으로 계산됩니다:

| Metric          | Definition                                                                                                              | 예제 결과                                           |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| **Reliability** | 코드가 의도한 함수를 올바르게, 예측 가능하게, 일관되게 수행하는지 평가합니다. 신뢰할 수 있는 코드는 버그로부터 자유롭고, 오류를 안전하게 처리하며, 정상 및 에지 케이스 조건에서 예상대로 작동합니다.       | 성능, 동시성, 오류 처리, 정확성 관련 문제                       |
| **유지 관리**       | 시간이 지남에 따라 코드를 이해하고 수정하고 확장하는 것이 얼마나 쉬운지 평가합니다. 유지 관리 가능한 코드는 모범 사례를 따르고, 불필요한 복잡성을 방지하며, 향후 변경 및 공동 작업의 용이성을 위해 구성됩니다. | 사용되지 않는/죽은 코드, 가독성, 복잡성, 충돌하는 명명, 우려 사항의 잘못된 분리 |

각 점수는 해당 지표에 대해 여전히 존재하는 발견 사항의 *가장 높은* 심각도에 따라 결정됩니다. 점수를 올리려면 현재 가장 높은 심각도 수준에서 모든 결과를 지워야 합니다.

이 예제에서는 **안정성** 에 영향을 주는 **오류** 수준 결과가 여전히 있기 때문에 안정성이 "불량"입니다. 경고 및 메모는 해결할 가치가 있지만 오류가 지워질 때까지 점수를 이동할 수 없습니다.

## 2단계: 규칙별로 목록을 읽고 가장 큰 영향을 주는 결과에 집중

보기에서 표준 결과 결과 **규칙별로 그룹**화됩니다. 이는 많은 결과를 가진 단일 규칙이 반복되는 코딩 습관을 반영할 수 있기 때문에 이해하는 데 유용합니다. 한 사례를 이해하고 나면 나머지 모든 항목에 대해 제안된 자동 수정도 더 쉽게 이해할 수 있으므로 수정 작업이 더 빨라지고 일괄 검토도 더 쉬워집니다.

또한 점수 중 하나에 대한 심각도 계층을 완료하는 규칙을 찾습니다. 규칙을 지우면 안정성에 영향을 주는 마지막 남은 "오류"가 제거되면 점수가 즉시 상승합니다.

이 예제에서는 "Overwritten property"라는 한 규칙이 128개의 탐지 항목 중 40개를 차지하며, 이 40개는 모두 Error 수준입니다. 이를 지우면 안정성에 영향을 주는 모든 오류 수준 검색이 제거되어 점수가 다음 대괄호로 이동합니다.

## 3단계: 결과 해결

규칙을 선택한 후에는 각 찾기를 처리하는 방법을 결정합니다.

| Assessment                                                                              | 권장 작업                                 | 비고 |
| --------------------------------------------------------------------------------------- | ------------------------------------- | -- |
| 발견은 합법적입니다.                                                                             |                                       |    |
| **수정 생성**을 클릭하고 끌어오기 요청을 엽니다.                                                           |                                       |    |
| **수정 생성**을 클릭하면 AI credits이 소모됩니다. 여러 자동 수정을 같은 브랜치에 추가하여 수정 작업을 하나의 풀 리퀘스트로 묶을 수 있습니다. |                                       |    |
| 발견은 적용되지 않습니다. 예를 들어, 레거시 코드에 있거나, 의도적인 패턴이거나, 오탐일 수 있습니다.                              |                                       |    |
| **해제**를 클릭합니다.                                                                          | 발견은 확인된 것으로 간주되며 열려 있는 결과 목록에서 제거됩니다. |    |

이 예제에서는 "덮어쓴 속성" 탐지 항목 40개에 대한 자동 수정을 생성하고 풀 리퀘스트를 엽니다. 단일 패턴을 공유하기 때문에 수정 사항은 거의 동일합니다. CI 검사가 통과되면 끌어오기 요청을 병합합니다.

## 4단계: 영향 전달

수정 사항을 병합한 후 "표준 결과" 화면으로 돌아가 다음을 캡처하세요:

* **변경된 점수입니다.** 예를 들어, *신뢰성: 낮음 → 보통*.
* **잠금을 해제한 요구 사항입니다.** 예를 들어 *안정성에 영향을 주는 모든 오류 수준 결과가 해결되었습니다*.
* **미해결 지적 사항의 감소.** 예를 들어 *128에서 88까지 열림*.

이 예제에서 "덮어쓴 속성" 규칙을 지우면 안정성이 **불량** 에서 **공정**으로 이동합니다. 팀이 가리킬 수 있는 첫 번째 점수 개선 사항입니다.

## 이것이 코드 건전성의 다른 측면과 어떻게 관련되는지

오늘 해결한 모든 문제도 새 풀 리퀘스트에 동일한 유형의 문제가 유입되면 내일 다시 나타날 수 있습니다. 백로그 다시 생성을 중지하려면 다음을 수행합니다.

* 새 코드 품질 결과를 도입하는 끌어오기 요청을 차단하도록 **기본 분기에 병합 임계값을 설정합니다**.
  [끌어오기 요청에 대한 코드 품질 임계값 설정](/ko/code-security/how-tos/maintain-quality-code/set-pr-thresholds)을(를) 참조하세요.
* **풀 리퀘스트에 지적 사항이 표시되면 수정합니다**.
  [코드 품질 문제가 기본 브랜치에 유입되는 것을 방지하기](/ko/code-security/tutorials/improve-code-quality/catch-issues-before-merge)을(를) 참조하세요.

## Troubleshooting

* **수정 사항을 병합한 후에도 점수가 움직이지 않았습니다.** 해당 메트릭의 현재 가장 높은 심각도 수준에서 하나 이상의 발견이 여전히 열려 있습니다.
* **스캔이 다시 실행되지 않았습니다.**
  Code Quality 스캔은 기본 브랜치에 푸시할 때마다 자동으로 실행됩니다. 워크플로가 완료되기까지 몇 분 정도 기다립니다.

## 결론

이 자습서에서는 저장소의 품질 점수를 평가하고, 심각도와 규칙에 따라 백로그 작업의 우선순위를 정하고, 자동 수정을 사용해 발견된 문제를 해결하고, 그 결과를 점수 변동으로 보여주었습니다.

## 다음 단계

* 최근에 변경된 파일의 결과를 수정하여 기술 부채를 더 줄입니다.
  [최근에 병합된 파일에서 코드 품질 결과 수정](/ko/code-security/how-tos/maintain-quality-code/fix-findings-in-recent-merges)을(를) 참조하세요.