{"meta":{"title":"CodeQL によるコード スキャンについて","intro":"CodeQL を使うと、コード内の脆弱性とエラーを特定することができます。 結果は、GitHub 内で code scanning アラートとして表示されます。","product":"セキュリティとコードの品質","breadcrumbs":[{"href":"/ja/code-security","title":"セキュリティとコードの品質"},{"href":"/ja/code-security/concepts","title":"Concepts"},{"href":"/ja/code-security/concepts/code-scanning","title":"コード スキャン"},{"href":"/ja/code-security/concepts/code-scanning/codeql","title":"CodeQL"},{"href":"/ja/code-security/concepts/code-scanning/codeql/about-code-scanning-with-codeql","title":"CodeQL コードのスキャン"}],"documentType":"article"},"body":"# CodeQL によるコード スキャンについて\n\nCodeQL を使うと、コード内の脆弱性とエラーを特定することができます。 結果は、GitHub 内で code scanning アラートとして表示されます。\n\nCodeQL は、セキュリティ チェックを自動化するために GitHub が開発した、コード分析エンジンです。 CodeQL を使用してコードを分析し、結果を code scanning アラートとして表示することができます。\n\ncode scanningに対して CodeQL 分析を使用する方法には、主に 2 通りあります。\n\n* 既定の設定を使用して、リポジトリ上の code scanning の CodeQL 分析をすばやく構成します。 既定の設定では、分析する言語、実行するクエリ スイート、スキャンをトリガーするイベントが自動的に選択されます。 必要に応じて、実行するクエリ スイートと分析する言語を手動で選択できます。 CodeQL を有効にすると、GitHub Actions によってワークフロー実行が実行され、コードがスキャンされます。 詳しくは、「[コード スキャンの既定セットアップの構成](/ja/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)」をご覧ください。\n\n* 詳細設定を使用して、CodeQL ワークフローをご利用のリポジトリに追加します。 これにより、[github/codeql-action](https://github.com/github/codeql-action/) を使用して CodeQL CLI を実行するカスタマイズ可能なワークフロー ファイルが生成されます。 詳しくは、「[コード スキャンの詳細設定を構成する](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql)」をご覧ください。\n\n* CodeQL CLI を、外部 CI システムで直接実行し、結果を GitHub にアップロードします。 詳しくは、「[既存の CI システムでコード スキャンを使用する](/ja/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system)」をご覧ください。\n\ncode scanning アラートの詳細については、[「AUTOTITLE」](/ja/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts)を参照してください。\n\n## CodeQL について\n\nCodeQL は、コードをデータのように扱うプログラミング言語および関連ツールです。 これは、コードの分析を容易にし、従来の静的アナライザーよりも信頼度の高いコード内の潜在的な脆弱性を見つけられるように、明示的に作成されました。\n\n1. ご利用のコードベースを表現する CodeQL データベースを生成します。\n2. 次に、そのデータベースに対して CodeQL クエリを実行して、コードベース内の問題を特定します。\n3. CodeQL を code scanning で使用すると、クエリ結果は GitHub に code scanning アラートとして表示されます。\n\nCodeQL ではコンパイルおよびインタープリタ言語の両方がサポートされていて、サポートされている言語で記述されたコードの脆弱性とエラーを見つけることができます。\n\nCodeQL では、次の言語がサポートされています。\n\n<!-- If you update the list of supported languages for CodeQL, update docs-internal/content/get-started/learning-about-github/github-language-support.md to reflect the changes. -->\n\n* C/C++\n* C#\n* Go\n* Java/Kotlin\n* JavaScript/TypeScript\n* Python\n* Ruby\n* Rust\n* Swift \\* GitHub Actions ワークフロー\n\n> \\[!NOTE]\n>\n> * Java、Kotlin、またはその両方で記述されたコードを分析するには `java-kotlin` を使用します。\n> * JavaScript、TypeScript、またはその両方で記述されたコードを分析するには `javascript-typescript` を使用します。\n\n詳細については、CodeQL Web サイトのドキュメント「[サポートされている言語とフレームワーク](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/)」を参照してください。\n\n> \\[!IMPORTANT]\n> CodeQL では、上記に記載されていない言語はサポート**されません**。 これには、**PHP**、**Scala** などが含まれますが、これらに限定されません。 サポートされていない言語で CodeQL を使用しようとすると、アラートが生成されず、分析が不完全になる場合があります。\n\n## カスタム フレームワークまたはニッチ フレームワークをモデル化する\n\nGitHub のエキスパート、セキュリティ研究者、コミュニティの共同作成者は、一般的なフレームワークとライブラリのデータ フローをモデル化するためのライブラリを作成します。 モデル化されていないカスタム依存関係を使用する場合は、Visual Studio Code の CodeQL 拡張機能を使用して、これらの依存関係のモデルを作成し、それらを使用すると分析を拡張できます。 詳しくは、「[CodeQL モデル エディターの使用](/ja/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor)」をご覧ください。\n\n## CodeQL クエリ\n\nGitHub 専門家、セキュリティ研究者、およびコミュニティの貢献者は、code scanning に使用される既定の CodeQL クエリを作成して維持します。 クエリは、分析を改善し、誤検知の結果を減らすために定期的に更新されます。\n\n### 独自のクエリを記述する\n\nクエリはオープンソースであるため、[github/codeql](https://github.com/github/codeql) リポジトリ内のクエリを表示したり投稿したりできます。 詳細については、CodeQL ドキュメントにある [CodeQL クエリ](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/)に関するページを参照してください。\n\n### 追加のクエリを実行する\n\n詳細設定または外部 CI システムを使用してコードをスキャンする場合は、分析の一環として追加のクエリを実行できます。\n\nこれらのクエリは、公開された CodeQL クエリ パックまたはリポジトリ内の CodeQL パックに属している必要があります。\n\n* CodeQL クエリ パック (ベータ) が GitHub Container registry に公開されると、クエリとコンパイル キャッシュに必要なすべての推移的な依存関係がパッケージに含められます。 これにより、パフォーマンスが向上します。そして、パックまたは CLI の新しいバージョンにアップグレードするまでは、パックでクエリを実行するたびに確実に同じ結果が得られます。\n\n* CodeQL クエリ パックは、複数の GitHub コンテナ レジストリからダウンロードできます。 詳しくは、「[コード スキャンのワークフロー構成オプション](/ja/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#downloading-codeql-packs-from-github-enterprise-server)」をご覧ください。\n\n詳しくは、「[CodeQL パックを使った分析のカスタマイズ](/ja/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs)」をご覧ください。"}