# リポジトリのコード品質スコアを上げる

最もリスクの高い結果に優先順位を付けて解決し、リポジトリのコード品質スコアを上げ、新しい負債が蓄積されないようにします。

## はじめに

このチュートリアルでは、既定のブランチで Code Quality 結果のバックログを確認し、リスクに優先順位を付け、影響が最も大きい結果を解決し、結果を関係者に伝えます。 学習内容:

* ダッシュボードを読み、スコアの意味を理解する方法。
* 修復に優先順位を付け、自動修正を適用するか、 Copilot クラウドエージェントに委任するか、または結果を無視するかを決定する方法。
* 修復作業の影響を伝える方法。
* バックログが再び増加するのを防ぐために実行できる追加の対策。

これはガイド付きチュートリアルであるため、速度よりも理解が優先されます。 自動修正を生成する、または検出結果を却下するための基本的な手順については、関連ハウツー [リポジトリ バックログのコード品質の結果を修正する](/ja/code-security/how-tos/maintain-quality-code/fix-backlog-findings) を参照してください。

### 開始する前に

* Code Quality は、所有または管理しているリポジトリで有効になります。 「[GitHub Code Quality の有効化](/ja/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** | コードが目的の関数を正しく、予測可能かつ一貫して実行するかどうかを評価します。 信頼性の高いコードはバグから解放され、エラーを安全に処理し、通常およびエッジケースの条件下で期待どおりに動作します。           | パフォーマンス、コンカレンシー、エラー処理、正確性に関する問題            |
| **保守容易性**       | 時間の経過に伴うコードの理解、変更、および拡張がいかに簡単であるかを評価します。 保守可能なコードは、ベスト プラクティスに従い、不要な複雑さを回避し、将来の変更とコラボレーションを容易にするために編成されています。 | 未使用/デッド コード、読みやすさ、複雑さ、競合する名前付け、懸念事項の分離が不十分 |

各スコアは、そのメトリックに依然として存在する検出結果の *最も高い* 重大度によって決定されます。 スコアを上げるには、現在の最も高い重大度レベルですべての結果をクリアする必要があります。

この例では、 **信頼性** に影響を与える **エラー** レベルの結果がまだ存在するため、信頼性は "Poor" です。 警告とメモは対処する価値がありますが、エラーがクリアされるまでスコアを移動することはできません。

## 手順 2: ルールで一覧を読み取り、最も影響の大きい結果に注目する

標準の結果 ビューでは、結果は**ルール**別にグループ化されます。 これは、多くの結果を含む 1 つのルールに 1 つの繰り返しのコーディング習慣が反映される可能性があるため、理解するのに役立ちます。 1 回の出現を理解すると、それらすべてに対して提案された自動修正を理解しやすくなります。これにより、修復が迅速かつ簡単に一括で確認できるようになります。

さらに、いずれかのスコアの重大度レベルを完了するルールを探します。ルールをクリアすると、信頼性に影響する最後の残りの "エラー" が削除された場合、スコアはすぐに上に移動します。

この例では、1 つのルール "上書きされたプロパティ" は、128 件の結果のうち 40 個を占め、40 件すべてがエラー レベルです。 これを解消すると、信頼性に影響するエラーレベルの検出結果がすべて削除され、スコアが次の評価帯に上がります。

## 手順 3: 結果を解決する

ルールを選択したら、各検索を処理する方法を決定します。

| Assessment                                                                          | 推奨されるアクション                              | Notes                            |
| ----------------------------------------------------------------------------------- | --------------------------------------- | -------------------------------- |
| 結果は正当です。                                                                            | \[ **修正の生成** ] をクリックして pull request を開く |                                  |
| **修正を生成** をクリックすると、AI credits が消費されます。 同じブランチに複数の自動修正を追加して、1 つのプル要求で修復作業をグループ化できます。 |                                         |                                  |
| 結果は適用されません。 たとえば、レガシーコード内にあるもの、意図的なパターン、または誤検知であるものです。                              | \[ **閉じる]** をクリックします。                   | 結果は解決済みと見なされ、開いている結果の一覧から削除されます。 |

この例では、40 個の "上書きされたプロパティ" の結果に対して自動修正を生成し、pull request を開きます。 1 つのパターンを共有するため、修正プログラムはほぼ同じです。 CI チェックが通過したら、プルリクエストをマージします。

## 手順 4: 影響を伝える

修復をマージしたら、"標準の結果" ビューに戻り、キャプチャします。

* **変更されたスコア。** たとえば、 *信頼性: 低→公平です*。
* **ロックを解除した要件。** たとえば、 *信頼性に影響するすべてのエラー レベルの結果が解決されました*。
* **オープンな結果の減少。** たとえば、 *128 から 88 まで開きます*。

この例では、"上書きされたプロパティ" ルールをクリアすると、信頼性が **Poor** から **Fair** に移動します。チームがポイントできる最初のスコア向上です。

## これがコードヘルスの他の部分とどう関係するか

新しいプル要求で同じ種類の問題が発生した場合、今日解決したすべての結果が明日に再び表示される可能性があります。 バックログが再生成されるのを停止するには:

* **既定のブランチにマージしきい値を設定** して、新しいコード品質の結果を導入するプル要求をブロックします。 「[プル要求のコード品質しきい値の設定](/ja/code-security/how-tos/maintain-quality-code/set-pr-thresholds)」を参照してください。
* **プル リクエストに指摘事項が表示されたら修正します**。 「[コード品質の問題が既定のブランチに到達するのを防ぐ](/ja/code-security/tutorials/improve-code-quality/catch-issues-before-merge)」を参照してください。

## Troubleshooting

* **修正プログラムをマージした後にスコアが移動しませんでした。** その指標において、現在最も深刻度の高いレベルに分類されている発見事項のうち、少なくとも 1 件がオープン状態のままです。
* **スキャンは再実行されていません。**
  Code Quality スキャンは、既定のブランチにプッシュされるたびに自動的に実行されます。 ワークフローが完了するまで数分待ちます。

## まとめ

このチュートリアルでは、リポジトリの品質スコアを評価し、重大度とルール別にバックログ作業を優先し、自動修正を使用して結果を解決し、スコア移動として結果を伝えました。

## 次のステップ

* 最近変更されたファイルの結果を修正することで、技術的負債をさらに削減します。 「[最近マージされたファイルのコード品質の結果を修正する](/ja/code-security/how-tos/maintain-quality-code/fix-findings-in-recent-merges)」を参照してください。