# リポジトリのコードの品質の向上

コードベースの品質を向上させるために、既定のブランチで検出されたコード品質の問題を評価して修復します。 進行すると、結果としてリポジトリのコード品質評価が上昇します。

> \[!NOTE]
> GitHub Code Quality は現在 パブリック プレビュー にあり、変更される可能性があります。
> パブリック プレビュー の間、Code Quality は課金されませんが、Code Quality スキャンでは GitHub Actions 分が消費されます。

## イントロダクション

このチュートリアルでは、 GitHub Code Quality を使用して、リポジトリ全体のコード正常性の問題を確認、優先順位付け、修復する方法について説明します。これにより、技術的負債を体系的に削減し、信頼性と保守性を向上させ、関係者に影響を伝えることができます。

### \[前提条件]

* ```
          Code Quality はリポジトリに対して有効になっています。 「[AUTOTITLE](/code-security/code-quality/how-tos/enable-code-quality)」を参照してください。
  ```
* ```
          GitHub 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** ] タブに移動し、\[<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>コードの品質] の下の \[ **標準の結果**] をクリックします。
2. "標準の結果" ダッシュボードの概要では、現在の既定のブランチの状態をすぐに評価できます。

   * ```
          **保守容易性の評価** には、デッド コード、重複、複雑さ、不足しているドキュメント、ベスト プラクティスに従わない場合の結果の存在と重大度が反映されます。
     ```
   * ```
          **信頼性評価** は、コードの正確性、パフォーマンス、エラー処理、コンカレンシー、アクセシビリティに関する結果の存在と重大度を反映します。
     ```

   ![Code Quality の "標準の結果" ビューに表示されるコード品質評価のスクリーンショット。](/assets/images/help/code-quality/all-findings-overview-repo.png)

## 2. 最も影響の大きい調査結果を特定し、優先順位を付ける

\[標準の結果] ビューには、リポジトリの既定のブランチ Code Quality最後にスキャンされた結果の一覧が表示されます。 これらの結果は次のとおりです。

* ```
          **ルール**別にグループ化されているため、コードベースに最も影響を与える問題の種類を確認できます。
  ```
* ```
          **重大度**レベル ("Error"、"Warning"、"Note") が割り当てられます。
  ```

### 重大度の高い結果に焦点を当てる

ダッシュボード **フィルター** を使用して、最も重大度の高い結果 ("エラー") に注目し、最も多くの問題を生成するルールを確認します。

!["標準の結果" ビューのダッシュボード フィルターを示すスクリーンショット。](/assets/images/help/code-quality/standard-findings-filters.png)

リポジトリの保守性または信頼性の評価を向上させるには、そのメトリックの重大度レベルが最も高いすべての結果を解決 (修正または無視) する必要があります。

たとえば、リポジトリの "信頼性" メトリックを Needs **improvement** から **Fair** に改善するには、信頼性に影響するすべての **エラー レベルの結果** に対処して解決する必要があります。 エラー レベルの結果が 1 つ以上ある場合、評価を "改善が必要" より高くすることはできません。 「[メトリックと評価のリファレンス](/ja/enterprise-cloud@latest/code-security/code-quality/reference/metrics-and-ratings)」を参照してください。

## 3. 調査結果のグループを調査し、コンテキストを理解する

対処する複数の結果を含むルールを特定したら、さらに調査して、基になる問題を理解できます。

1. ルール名をクリックすると、そのルールのすべての結果の詳細ビューが表示されます。

   !["標準の結果" ビューのルールを示すスクリーンショット。 ルール名は濃いオレンジで強調表示されています。](/assets/images/help/code-quality/click-rule-name.png)

2. \[ **詳細を表示**] をクリックし、ルールの説明、推奨される修正プログラム、コード例と参照のサポートを確認します。

   ![コード品質ルールの結果を示すスクリーンショット。 "詳細を表示" というテキストが濃いオレンジ色で強調表示されています。](/assets/images/help/code-quality/click-show-more.png)

## 4. 修復オプションを選択する

強調表示されているすべての結果を評価して、有効性、影響、およびリスクを確認します。 品質の評価を向上させるには、修正または無視するかを選択することで、各指摘事項を解決する必要です。

### 自動修正を生成する

結果が有効で、コードベースに関連しているように見える場合は、推奨される修正プログラムを生成できます。

1. 個々の所見の右側にある \[修正の生成 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-copilot" aria-label="copilot" role="img"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>] をクリックします。

2. 提案された変更の相違を慎重に確認し、それに同意する場合は、\[ **プル要求を開く**] をクリックします。

3. \[Commit autofix to branch]\(自動修正をブランチにコミットする) ダイアログ ボックスで、\[Open a pull request]\(pull request を開く) を選択し、\[ **変更のコミット**] をクリックします。

   > \[!TIP]
   > 現時点では、結果のグループの自動修正を一括で生成することはできません。
   >
   > 1 つの pull request で複数の結果に対処する場合は、上記の手順 1 と 2 を繰り返します。次に、\[Commit autofix to branch]\(自動修正をブランチにコミットする) ダイアログ ボックスで、最初の自動修正に既に作成したブランチ名を使用して、\[Open pull request]\(pull request を開く) と **\[変更のコミット]** を選択します。
   >
   > 修正は、ブランチの既存のドラフト pull request に追加されます。

4. 準備ができたら、pull request の状態を "Draft" から "Ready for review" に変更し、提案された変更を慎重に確認します。 プル要求をマージする前に、CI チェックと自動テストが完了して合格するまで待ちます。

### 結果を無視する

コードベースのコンテキストで関連性がない場合、またはアクション可能でない場合は、結果を無視できます。 結果を無視する一般的な理由は次のとおりです。

* この結果は、管理されなくなったレガシ コードにあります。
* これは、チームのコーディング標準に対する既知の例外です。
* これは、実際の品質リスクをもたらさない偽陽性です。

無関係なアラートを無視すると、品質チェックが意味のある問題に焦点を当て続けます。

1. 検索結果を閉じるには、\[ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield-slash" aria-label="Dismiss" role="img"><path d="M8.533.133a1.75 1.75 0 0 0-1.066 0l-2.091.67a.75.75 0 0 0 .457 1.428l2.09-.67a.25.25 0 0 1 .153 0l5.25 1.68a.25.25 0 0 1 .174.239V7c0 .233-.008.464-.025.694a.75.75 0 1 0 1.495.112c.02-.27.03-.538.03-.806V3.48a1.75 1.75 0 0 0-1.217-1.667L8.533.133ZM1 2.857l-.69-.5a.75.75 0 1 1 .88-1.214l14.5 10.5a.75.75 0 1 1-.88 1.214l-1.282-.928c-.995 1.397-2.553 2.624-4.864 3.608-.425.181-.905.18-1.329 0-2.447-1.042-4.049-2.356-5.032-3.855C1.32 10.182 1 8.566 1 7Zm1.5 1.086V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297.05.02.106.02.153 0 2.127-.905 3.439-1.982 4.237-3.108Z"></path></svg>**] をクリックします。
2. 結果は、開いている結果の一覧から消えます。 閉じられた結果は、ページの上部にある \[無視済み] タブから確認して再度開くことができます。

## 5. 改善を測定し、影響を伝える

修復作業が完了したら、"標準の結果" ダッシュボードに戻り、更新された信頼性と保守容易性のメトリックを確認します。

関係者に影響を伝えるときは、次の点を強調します。

* "信頼性" または "保守容易性" に関する調査結果の数の **削減**。
* 信頼性または保守容易性の **評価の変更** 。
* 評価の変更を達成するために満たされている要件。 たとえば、"警告" レベルのすべての結果を修復すると、評価が "Fair" から "Good" に変わります。

品質評価の改善と結果の数の削減を使用して、進捗状況を示します。

## 6. pull request にコード品質標準を適用する

まだ行っていない場合は、プル要求の品質しきい値を設定して、コードベースの正常性を低下させるコードベースへの変更をブロックします。 「[プル要求のコード品質しきい値の設定](/ja/enterprise-cloud@latest/code-security/code-quality/how-tos/set-pr-thresholds)」を参照してください。

## 次のステップ

* 最近変更されたファイルの結果を修正することで、技術的負債をさらに削減します。 「[最近マージされたコードの品質をAIで改善する](/ja/enterprise-cloud@latest/code-security/code-quality/tutorials/improve-recent-merges)」を参照してください。
* ```
          GitHub Code Qualityディスカッションで[](https://github.com/orgs/community/discussions/177488)に関するフィードバックを提供します。
  ```