> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# コード品質

> 保守性、可読性、パフォーマンスのためのAI搭載コードレビューツール

**Corgea Code Quality Scanner**は、コードベースの保守性、可読性、パフォーマンス、正確性に関する問題を特定するAI搭載コードレビューツールです。セキュリティ脅威に焦点を当てる[セキュリティ脆弱性スキャナー](/ja/blast)とは異なり、熟練したソフトウェアエンジニアのようにコードをレビューし、品質基準の維持と技術的負債の防止を支援します。

## 機能

コード品質スキャナーはソースコードを分析し、コードベースの長期的な健全性に影響する具体的な問題を特定します。経験豊富なシニアエンジニアがすべてのファイルをレビューするように、手動レビューで見落とされがちな問題を検出し、実際に対応可能な改善に焦点を当てます。

### 主な機能

* **自動コードレビュー**:コードを詳細に分析し、保守性に影響する一般的な品質問題を確認
* **言語対応の分析**:プログラミング言語ごとのコンテキストと慣習を理解
* **フレームワーク検出**:一般的なフレームワークを認識し、固有のベストプラクティスを適用
* **重大度分類**:影響（High、Medium、Low）に基づいて問題を優先順位付け
* **CWEマッピング**:標準化された分類のため、問題をCommon Weakness Enumeration（CWE）にマッピング

***

## 見つけられるもの

コード品質スキャナーは、幅広いコード品質の問題を特定します。一貫した分類を行うため、すべての検出結果を<Tooltip tip="Common Weakness Enumeration - a standardized list of software and hardware weakness types">CWE標準</Tooltip>にマッピングします。

<AccordionGroup>
  <Accordion title="文法と明瞭さの問題" icon="spell-check">
    * **コードコメント、変数名、文字列内のタイプミスやスペルミス** (CWE-1078)
    * **実際のコード動作と矛盾する、または古い可能性のある不正確または誤解を招くコメント** (CWE-1116)

    ```javascript example.js theme={null}
    // Bad: Misleading comment
    // Calculate the sum of two numbers
    function multiply(a, b) {
      return a * b;  // Actually multiplying, not adding
    }
    ```
  </Accordion>

  <Accordion title="コードクリーンネス" icon="broom">
    * **目的のない空のコードブロック** (CWE-1071)
    * **未使用変数、インポート、コードベースを混乱させるデッドコード** (CWE-563、CWE-1041)
    * **エラーを握りつぶす空の例外ブロック** (CWE-1069、CWE-390)
    * **実行されることのない到達不能コード** (CWE-561)

    ```python example.py theme={null}
    # Bad: Empty exception block silently swallows errors
    try:
        risky_operation()
    except Exception:
        pass  # Error is hidden!
    ```
  </Accordion>

  <Accordion title="コードの重複と再利用性" icon="copy">
    * **共有関数にリファクタリングすべき重複コード** (CWE-1041)
    * **オブジェクト内の重複キーやリテラル、および定数にすべきマジックナンバー** (CWE-1078)
    * **<Tooltip tip="Don't Repeat Yourself - a principle aimed at reducing repetition in code">DRY</Tooltip>原則に反するコード** - 保守の負担を増やす重複ロジック
  </Accordion>

  <Accordion title="パフォーマンスの問題" icon="gauge-high">
    * **パフォーマンスを低下させるループ内の文字列連結** (CWE-1046)
    * **非効率な処理** および不必要なリソース消費(CWE-1050)
    * **頻繁に実行されるコードパスのパフォーマンスボトルネック**

    ```java Example.java theme={null}
    // Bad: String concatenation in loop
    String result = "";
    for (int i = 0; i < 1000; i++) {
        result += data[i];  // Creates new string object each iteration
    }
    ```
  </Accordion>

  <Accordion title="設計とアーキテクチャ" icon="diagram-project">
    * **パラメーターが多すぎる関数**（6個以上のパラメーター）など、設計上の問題を示すコード(CWE-1064)
    * **正しく使うのが難しい過度に複雑な関数シグネチャ**
    * **モジュール間の循環依存関係** (CWE-1047)
    * **<Tooltip tip="Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion">SOLID原則の違反</Tooltip>**
  </Accordion>

  <Accordion title="コードの複雑さと可読性" icon="code">
    * **分かりやすくするために分解すべき複雑な1行の文** (CWE-1120)
    * **理解しづらい過剰な分岐を伴う深くネストされたロジック**
    * **意図が不明確になるほど汎用的なヘルパー関数**
    * **KISS原則<Tooltip tip="Keep It Simple, Stupid - a design principle that favors simplicity">違反</Tooltip>**
  </Accordion>

  <Accordion title="命名と慣習" icon="tag">
    * **コードの理解を難しくする一貫性のない命名規則** (CWE-1099)
    * **「obj」「x」「data」などの汎用的で記述的でない変数名**
    * **同じコードベース内でのcamelCaseとsnake\_caseの混在**
  </Accordion>

  <Accordion title="論理と正確性" icon="bug">
    * **誤った挙動を引き起こす論理エラー** (CWE-670)
    * **誤った結果を生み出す不正確なデータ処理**
    * **実装ミスにより意図どおりに動作しないコード**
  </Accordion>

  <Accordion title="未完了の実装" icon="list-check">
    * **TODOコメント** およびプレースホルダーコード(CWE-1071)
    * **問題を引き起こす可能性のある未完成の機能**
    * **対応が必要な未完了の実装**
  </Accordion>
</AccordionGroup>

***

## 仕組み

### 1. ファイル解析

スキャナーはコードベースの各ファイルを個別に処理し、ファイル構造、言語、検出されたフレームワークのコンテキストを踏まえてソースコード全体を分析します。

### 2. AI搭載レビュー

コードレビュー用に訓練された高度な言語モデルを使用し、確立されたソフトウェアエンジニアリングの原則とベストプラクティスに照らしてコードを検証します。AIは次の要素を理解します。

* 言語固有の慣用句と慣習
* フレームワークパターンとベストプラクティス
* コード複雑さおよび保守性の指標
* 業界標準のソフトウェア設計原則

### 3. 問題の特定

潜在的な問題が見つかった場合、スキャナーは次の処理を行います。

* 関与するコードの正確な行を特定
* CWE基準を用いて問題タイプを分類
* 適切な重大度レベルを割り当てる
* 問題とその影響について明確な説明を生成する

### 4. 高信頼度の検出

* スキャナーは、信頼度が90%以上の問題だけを報告します。この高いしきい値により、推測ではなく、正確で対応可能な検出結果だけを提示します。

* <Tip>90%信頼度の閾値はノイズや誤検知を大幅に減らし、報告された問題が対応すべき内容であると判断できます。</Tip>

***

## 誤検知抑制

コード品質スキャナーには、意味があり対応可能な検出結果だけを提示するための高度な[誤検知抑制](/ja/false_positive)機能があります。

### 内蔵フィルター

<Check>**セキュリティ問題排除**:スキャナーはセキュリティ脆弱性(SQLインジェクション、XSS、認証問題など)を明確に除外します。これらはCorgeaの[専用のセキュリティスキャナー](/ja/blast)が処理しているからです。これにより、コードの品質とセキュリティ検出結果の重複や混乱を防ぎます。</Check>

<Check>**スタイル上の好みを除外**:波かっこの配置、インデント、空白など、軽微なスタイル上の違いは報告しません。スキャナーはフォーマットの好みではなく、実質的な品質問題に焦点を当てます。</Check>

### コンテキストの理解

スキャナーは誤検知を避けるためにコードコンテキストを把握します:

* 「空」ブロックが意図的であること(例:プレースホルダー実装)を認識します
* 問題に見えるかもしれないフレームワーク固有のパターンを理解する
* 特定のプログラミング言語で許容される言語イディオムを考慮する

***

## 自動修復

コード品質の問題が特定された場合、Corgeaは迅速かつ一貫して問題を解決するための [自動修復機能](/ja/fixes) を提供します:

### 何が修復されるのか

自動修復システムは、以下を含む多くの一般的なコード品質問題を修正できます:

<Tabs>
  <Tab title="クイックウィンズ">
    * 未使用変数やインポートの除去
    * マジックナンバーを命名定数に変換する
    * 変数名やコメントの誤字修正
  </Tab>

  <Tab title="構造的改善">
    * 重複コードを共有関数に統合する
    * 過度に複雑な式の簡略化
    * 複雑な1行の処理を分割
  </Tab>

  <Tab title="ベストプラクティス">
    * 変数名や関数名の改善
    * 適切なエラー処理の追加
    * フレームワーク固有のパターンの実装
  </Tab>
</Tabs>

### 修復の仕組み

1. **問題のコンテキスト**:問題のあるコードだけでなく、コードベース全体におけるその役割も含めて、各問題のコンテキストを分析します
2. **安全な修正**:自動修正は安全であり、既存の機能を維持するよう設計されています
3. **コードスタイルの維持**:既存のコードスタイルと慣習に合わせて修正します
4. **適用前のレビュー**:どの修正を適用するかをユーザーが完全に制御できます

***

## 脆弱性スキャンとは別物

<Warning>
  コード品質スキャナーはCorgeaの [セキュリティ脆弱性スキャン](/ja/blast) 機能とは完全に別物です。
</Warning>

### 主な違い

| コード品質スキャナー      | [脆弱性スキャナー](/ja/blast)      |
| --------------- | -------------------------- |
| 保守性、可読性、正確性に焦点  | セキュリティ脅威と悪用可能な弱点に焦点        |
| 技術的負債と設計上の問題を特定 | SQLインジェクション、XSS、認証の欠陥などを特定 |
| 長期的なコードの健全性を改善  | セキュリティ侵害からアプリケーションを保護      |
| コード品質に関するCWEを使用 | セキュリティに関するCWEを使用           |

### なぜ両方が重要なのか

* **セキュリティ**:アプリケーションを攻撃者から保護
* **コード品質**:コードベースの保守性、パフォーマンス、信頼性を維持

どちらも健全なソフトウェアプロジェクトに不可欠ですが、異なる課題に対応しています。コードベースは安全でも保守が難しい場合もあれば、よく構成されているが脆弱であることもあります。Corgeaは両方を提供し、コードの健全性を完全に把握できます。

***

## 重大度レベルの説明

<Tabs>
  <Tab title="重大度が高い" icon="circle-exclamation">
    **クラッシュ、深刻なパフォーマンス問題、重大なバグを引き起こす問題**:

    * エラーを隠す空のキャッチブロック
    * 無限ループ
    * 常に失敗する論理
    * 重大なパフォーマンスボトルネック

    <Warning>**アクション**:直ちに修正</Warning>
  </Tab>

  <Tab title="中程度の重大度" icon="triangle-exclamation">
    保守性やパフォーマンス**に影響を与える**問題:

    * コードの重複
    * コードベースを煩雑にする未使用コード
    * ループにおける文字列の連結
    * 開発を遅らせる分かりにくいロジック

    <Info>**アクション**:次のリファクタリングサイクルで対処</Info>
  </Tab>

  <Tab title="重大度:Low" icon="circle-info">
    **コード品質を低下させる軽微な問題**:

    * 命名の不一致
    * 不必要な複雑さ
    * 軽微な可読性向上

    <Tip>**アクション**:都合の良い時や関連する作業中に修正</Tip>
  </Tab>
</Tabs>

***

## はじめに

コード品質スキャナーは開発ワークフローにシームレスに統合されます:

<Steps>
  <Step title="リポジトリを接続">
    [GitHub](/ja/github)、[GitLab](/ja/gitlab)、[Azure DevOps](/ja/azure_devops)、または[Bitbucket](/ja/bitbucket)を使用してコードリポジトリをCorgeaに接続します。
  </Step>

  <Step title="自動スキャン">
    スキャナーは自動的にファイルを分析します
  </Step>

  <Step title="検出結果を確認">
    [プロジェクトダッシュボード](/ja/project)で、明確な説明と重大度が付いた問題を確認します。
  </Step>

  <Step title="修正を適用する">
    [自動修復](/ja/fixes)を使用するか、問題を手動で修正します。
  </Step>

  <Step title="進捗を追跡">
    コード品質が時間の経過とともに改善しているかを確認します。
  </Step>
</Steps>

***

## 関連ドキュメント

<CardGroup cols={2}>
  <Card title="AIネイティブ SAST" icon="shield-halved" href="/ja/blast">
    Corgeaのセキュリティ脆弱性スキャン機能
  </Card>

  <Card title="自動修正" icon="wand-magic-sparkles" href="/ja/fixes">
    すべてのスキャンタイプにおける自動修復の仕組み
  </Card>

  <Card title="誤検知管理" icon="filter" href="/ja/false_positive">
    誤検知を効果的に管理・抑制する
  </Card>

  <Card title="問題管理" icon="list-check" href="/ja/project">
    プロジェクト全体の問題を追跡・管理できます
  </Card>
</CardGroup>

***

## サポート

ご支援が必要な場合は、[support@corgea.com](mailto:support@corgea.com)までお問い合わせください。
